OSC2014.Enterprise...

43
Zabbix-JobScheduler連携ツール HyClops JobMonitoringによる 運用システムOSS化の実現 TIS 株式会社 戦略技術センター 池田 大輔 2014/12/12 OSC2014.Enterprise@Tokyo

Transcript of OSC2014.Enterprise...

Page 1: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

Zabbix-JobScheduler連携ツール

HyClops JobMonitoringによる

運用システムOSS化の実現

TIS 株式会社戦略技術センター

池田 大輔

2014/12/12 OSC2014.Enterprise@Tokyo

Page 2: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

自己紹介

池田 大輔

TIS株式会社 戦略技術センター

@ike_dai https://www.facebook.com/ikedai Zabbix,AWS,fluentd,Chef,JobScheduler...

名前

所属

Twitter

Facebook

興味

ThinkIT連載「自動化時代のインフラ環境稼働テスト「 Serverspec」入門」

(http://thinkit.co.jp/book/2014/08/01/5149)技術評論社HP : http://gihyo.jp/book/2014/978-4-7741-6288-1Amazon : http://www.amazon.co.jp/dp/4774162884

Page 3: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

TISエンタープライズOSSサポートサービス

保守サポート

コンサルティング マイグレーション

OSSの利用をトータルにバックアップ

Page 4: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

対象OSS

インフラ基盤

運用基盤

アプリケーション稼働基盤

※今後サポート対象予定

TISエンタープライズOSSサポートサービス

Page 5: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

対象OSS

インフラ基盤

運用基盤

アプリケーション稼働基盤

※TISはZabbix社の認定パートナーです。

※今後サポート対象予定

TISエンタープライズOSSサポートサービス

Page 6: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

運用を取り巻く状況の変化

システムの仮想化・クラウド化が加速

管理対象機器の大規模化 管理対象機器の動的な変化

手動運用でカバーできるシステムが減少

“運用自動化”が益々求められる状況で

より安定したシステムを低価格で迅速に提供

Page 7: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

OSSを運用環境に取り入れる

多くのOSSは用途に特化した形で提供

監視 ジョブ管理

ログ管理インシデント

管理

ZabbixNagios・・・

JobScheduler・・・

rsyslogFluentd・・・サーバ

構成管理ChefAnsible・・・

RedmineOTRS・・・

Page 8: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

OSSを運用環境に取り入れる

APIをベースに各ツール連携することがポイント

監視 ジョブ管理

ログ管理インシデント

管理

ZabbixNagios・・・

JobScheduler・・・

rsyslogFluentd・・・サーバ

構成管理ChefAnsible・・・

RedmineOTRS・・・

API

Page 9: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

着目したのは高機能&拡張性の高さ

統合監視OSS ジョブ管理OSS

Page 10: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

OSS統合監視ソフトウェアZabbixOSS統合監視ツール (GPL ver.2)ラトビアのZabbixSIA社が開発2014/12/12時点の最新安定版2.4.2 (2014/11/5リリース)

監視対象機器- Linux- Windows- NW機器等

監視方法

- Zabbix Agent監視- SNMP監視- IPMI監視- エージェントレス監視等

監視内容- リソース監視- 死活監視 - ICMPPing - プロセス- Web監視- ログ監視- HW監視- SQL監視等

Page 11: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

Zabbixは監視手法が豊富

snmp server

snmp server

SNMP Trap

SNMP

ssh server

ssh server

Zabbix Agent

仮想化HV

Cloud

ODBC

DB

JMXJavaアプリ

仮想環境API

クラウドAPI

SSH接続による内部コマンド実行監視

ZabbixAgentによる内部監視(リソースやログ等)

ODBCによるDB監視

Zabbix Java GatewayによるJava監視

外部チェックスクリプト監視機能による API監視

Zabbix Server

Zabbix Sender

任意の情報をpush型でZabbixに登録

Page 12: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

Zabbixは自動化機能が充実監視設定パターン化 監視設定自動化 運用自動化

テンプレート機能 ZabbixAgent自動登録機能

ローレベルディスカバリ機能

アクション機能

監視設定をサーバの用途毎、種別毎等まとめる機能

Agent起動時に自身の情報をZabbix Serverに自動連携

監視対象サーバ内の情報を収集し、その内容に合わせて自動設定

条件を設定してあらかじめ登録した運用作業処理実行コマンドを自動実行

Zabbix API機能

プログラムからZabbixの設定や監視結果情報取得を実現

Page 13: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

参考情報: ローレベルディスカバリ

ディスカバリルール

/ /data

定期的に探索

Zabbix Server

アイテムプロトタイプアイテム

{ "data":[   {   "{#FSNAME}":"\/",  "{#FSTYPE}":"ext3"},  {  "{#FSNAME}":"\/data",  "{#FSTYPE}":"ext3"},  ・・・省略

}

vfs.fs.size[{#FSNAME},free]

アイテム

vfs.fs.size[/,free]vfs.fs.size[/data,free]

活用例:JobSchedulerに登録されているJob一覧情報に基づいてアイテム自動登録とか

Page 14: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

参考情報: ZabbixAPI■ できること - Zabbixに対する操作(設定変更、ホスト追加、グループ作成等)実施 - Zabbixで管理している監視結果の取得(history,event,IT service情報)■ APIの形式: JSON-RPC - URL: http://<zabbix-server>/zabbix/api_jsonrpc.php - メソッド: host.create、host.update、item.get、history.getなど - パラメータ: メソッド毎に必要なパラメータを渡す

host.getの例レスポンス

{ "auth": "xxxxxxx", "method": "host.get", "params": { "output": "extend", "filter": {"host":"Zabbix server"} }, "jsonrpc": "2.0", "id": 1}

{ "jsonrpc":"2.0", "result":[{ "maintenances":[], "hostid":"10084", "host":"Zabbix server", ・・・略 }], "id":1}

リクエストパラメータ

Page 15: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

OSSジョブ管理ソフトウェアJobSchedulerOSSジョブ管理ツール (GPL ver.2)ドイツ ベルリンのSOS社が開発2014/12/12時点の最新安定版1.7.4321 (2014/11/17リリース)

対応プラットフォーム- Linux- Windows- Solaris- AIX- HP-UX

ジョブ実行方法

- JS単体でのジョブ実行- JS Agentによる リモートサーバへのジョブ実行- SSH接続による リモートサーバへのジョブ実行

対応可能処理- フロー(JobChain)実行- スケジュール実行- 多重実行・排他制御- 先行・後続制御- 優先度設定- ジョブ実行監視- メール通知等

※ JS = JobScheduler※ JS Agent = JobScheduler Agent

Page 16: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

JobSchedulerの基本構成

JOC

JOE※Jobエディタ

Job JobChain

JobScheduler Agent

JobScheduler Agent

SSH Server

※Job管理WebGUI

Job JobChain

DB

※Job実行履歴、 Jobスケジューリング情報 等

Schedule ProcessClass

Schedule ProcessClass

JobScheduler Engine

Page 17: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

JobSchedulerのJobの考え方

Standalone Job

Job Chain

Schedule

• Standalone Job– 単体で稼動するジョブを定義

• Job Chain– 複数ジョブを順序関係を考慮して

組み合わせるジョブ(order job)を定義

• Schedule– ジョブの稼動予定を定義

• ジョブ定義は様々な記述が可能

– ShellScript, Windows bat,Java,JavaScript,VBScript, javax.script,Perl

● ジョブ関連の全ての定義がXMLファイルで管理● 様々な操作を簡単に行えるようにする機能が提供されている

○ ファイル操作、ファイル転送、DB制御、SQL操作、レポーティング機能 などなど

Order Job

Order Job

JobSchedulerの特徴

Page 18: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

<?xml version="1.0" encoding="ISO-8859-1"?>

<job order="no" stop_on_error="no"> <script language="shell"><![CDATA[ #!/bin/bash

FILE=/tmp/demo_job.logecho `date`": Executed demo_main Job" >> $FILEsleep 2 ]]></script> <run_time let_run="yes" repeat="60"/></job>

JobSchedulerのJob定義の例

Standalone Jobの書き方

任意の実行処理が記述可能

実行タイミングを指定可能

Page 19: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

<?xml version="1.0" encoding="ISO-8859-1"?>

<job_chain orders_recoverable="yes" title="test_jobchain" visible="yes"> <job_chain_node state=”Before_Job” job=”/path/to/before_job” error_state="Error" next_state=”Main_Job”/> <job_chain_node state=”Main_Job” job=”/path/to/main_job” error_state="Error" next_state="After_Job"/> <job_chain_node state=”After_Job” job=”/path/to/after_job” error_state="Error" next_state="Success"/> <job_chain_node state="Success"/> <job_chain_node state="Error"/></job_chain>

JobSchedulerのJobChain定義の例

JobChainの書き方

Before_Job Main_Job After_Job

Success

Error

Start

Page 20: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

<?xml version="1.0" encoding="ISO-8859-1"?>

<schedule title="demo schedule" valid_to="2014-12-31 23:59:59"> <period single_start="10:30"/>

<weekdays > <day day="6"> <period single_start="04:00"/> </day> </weekdays></schedule>

JobSchedulerのSchedule定義の例

Scheduleの書き方

毎日10:30

毎週土曜 4:00

Page 21: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

参考情報: JobScheduler API

内部API

ジョブの中でJobSchedulerに対する操作が可能※例:ジョブAの実行に失敗したらジョブBのジョブスケジュールを変更

WebAPI

外部ツールからJobSchedulerに対する操作が可能※例:Zabbixの監視結果で障害が発生したらとあるジョブCを実行

Page 22: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

● ジョブの失敗時の通知は単純なメール送信のみ● ジョブの実行結果はテキストとして保存されているのみ

(表示はテキストベースの一覧表示)● ジョブ管理に特化したツールであるため監視機能はない

JobScheduler単体だとできないこと

Page 23: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClops JobMonitoring OSS公開

高機能な監視を実現するZabbix

高機能なジョブ管理を実現するJobScheduler

Page 24: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

概要

● ジョブ実行状況をZabbixにて監視するツール● ZabbixやJobScheduler自体の改変はせずそのまま利用可能● Zabbixの監視機能、JobSchedulerのジョブ実行機能を活用● JobScheduler利用時に不足する監視機能をZabbixで補う● 2014年12月10日 OSSとして公開

HyClops JobMonitoring

公式サイトURL: http://tech-sketch.github.io/hyclops_jmGitHubリポジトリ: https://github.com/tech-sketch/hyclops_jm

Page 25: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

3つのメリット

HyClops JobMonitoring

その1. ジョブの失敗や遅延情報をZabbixでキャッチアップ

通知をZabbixのアクション設定に基づいて実行できるため、より柔軟な対応が可能に

TimeLimit!

Zabbix

Page 26: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

3つのメリット

HyClops JobMonitoring

その2. ジョブ実行時の状態の推移をZabbixで管理

ZabbixのDBにて推移状況を管理できるのでジョブ実行の分析が可能に各ジョブの実行時のサーバリソースの状況と紐付けての管理も可能に

1ヶ月前

Finish!

1時間

現在

Finish!

3時間

Page 27: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

3つのメリット

HyClops JobMonitoring

その3. ジョブ実行時の高負荷に備えた監視設定変更

Jobの実行によりあらかじめ想定される負荷への対応が可能

平常時のCPU負荷 Job実行時のCPU負荷

閾値 閾値

Page 28: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClopsJMの機能詳細

ジョブ失敗状況の検知

JobScheduler EngineHyClops JMZabbix

実行

Error終了

mail送信Zabbix連携処理

メールをフック

※JobScheduler Agent毎に管理

Zabbix Sender

Zabbixアクション設定

Zabbixトリガー設定

より柔軟な通知

Job稼働ステータス監視アイテムJob稼働ステータス監視アイテム

Page 29: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClopsJMの機能詳細

ジョブ失敗通知設定例

時間軸

JobChain1失敗

JobChain1失敗

JobChain1失敗

JobChain1失敗

Skip! Skip!

Page 30: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

Job定義

HyClopsJMの機能詳細

ジョブ稼働時間の監視

Zabbix

server-01

server-02

ホスト

アイテム

JobA稼働時間

Job1稼働時間

Job3稼働時間

JobScheduler Engine

server-01JobScheduler Agent

server-02JobScheduler Agent

HyClops JM

定義情報をもとに設定自動連携

実行ログを解析し稼働時間自動登録

自動登録

Job2稼働時間

Job4稼働時間

JobAJobChain1

Job1Job2

JobChain2Job3Job4

ローレベルディスカバリ

Zabbix Sender

Page 31: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClopsJMの機能詳細

稼働時間推移グラフ例

Page 32: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClopsJMの機能詳細

トリガー閾値の自動変更

Zabbix

閾値変更Job

復帰Job

メインJob

閾値変更Jobテンプレート

復帰Jobテンプレート

Jobテンプレート

既存トリガー

無効化

Job実行中のみ有効なトリガー

新規作成

例: CPU使用率>70%なら障害

例: CPU使用率>90%なら障害

Zabbix API

Page 33: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClopsJMの機能詳細

トリガー閾値の自動変更

Zabbix

閾値変更Job

復帰Job

メインJob

閾値変更Jobテンプレート

復帰Jobテンプレート

Jobテンプレート

既存トリガー有効化

Job実行中のみ有効なトリガー

削除

例: CPU使用率>70%なら障害

例: CPU使用率>90%なら障害

Zabbix API

Page 34: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClopsJMの機能詳細

閾値変更例

CPUのロードアベレージのトリガー閾値を変更したい場合

閾値変更Job(HyClops_JM_Trigger_switch

)

復帰Job(HyClops_JM_Trigger_ret)

パラメータに以下を指定

trigger_name Processor load is too high on {HOST.NAME}

trigger_cond {localhost:system.cpu.load[percpu,avg1].avg(5m)}>10

パラメータの指定なし

閾値変更Jobで変更されたものを全て元に戻す

Page 35: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClopsJMのデモ

1. ジョブ追加に伴い自動的にZabbixに監視アイテム登録

2. トリガー変更ジョブ組み込みによる動的な閾値変更

デモ環境構成AWS EC2インスタンスにZabbix ServerとJobScheduler Engineを導入

EC2

JobScheduler Engine

Zabbix Server

JobChain

JobChain

Job Job追加

アイテム自動登録

Page 36: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClopsJMのデモ

1. ジョブ追加に伴い自動的にZabbixに監視アイテム登録

2. トリガー変更ジョブ組み込みによる動的な閾値変更

デモ環境構成AWS EC2インスタンスにZabbix ServerとJobScheduler Engineを導入

EC2

JobScheduler Engine

Zabbix Server

JobChain

JobChain

Job Job

トリガー変更ジョブ組み込みJobChain Run!トリガー変更

Page 37: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClops JMのセットアップ方法

1. 稼働に必要なものをインストール・Zabbix、JobScheduler、PostgreSQL、Fabric、Python・自動インストールするためのChefRepoも公開https://github.com/tech-sketch/hyclops_jm-chef-repo

$ git clone https://github.com/tech-sketch/hyclops_jm-chef-repo.git$ cd hyclops_jm-chef-repo

$ vi config/config.json

{ "postgresql": { "version": "9.3" }, "zabbix": { "version": "2.2" }, "jobscheduler": { "version": { "major": "1.7" } }}

$ ./install_middleware.sh

Page 38: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClops JMのセットアップ方法

2. HyClops JobMonitoringを入手https://github.com/tech-sketch/hyclops_jm

$ curl -O https://github.com/tech-sketch/hyclops_jm/archive/[version no.].tar.gz$ tar zxvf hyclops_jm-[version no.].tar.gz

Page 39: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClops JMのセットアップ方法

3. 設定ファイルを編集hyclops_jm.conf

# HyClops JobMonitoring userjm_user = hyclops_jm # HyClops JobMonitoring用OSユーザjm_passwd = hyclops_jm # 上記ユーザのパスワード# JobScheduler configurationjs_id = scheduler # JobSchedulerのscheduler idjs_user = scheduler # JobSchedulerのインストールユーザjs_passwd = scheduler # 上記ユーザのパスワードjs_host = 127.0.0.1 # JobSchedulerの実行ホストのIPjs_port = 4444 # JobSchedulerの待ち受けポート# Zabbix configurationzbx_host = 127.0.0.1 # Zabbixの実行ホストのIPzbx_login_user = Admin # Zabbix Web UIにログイン可能な管理者ユーザzbx_login_passwd = zabbix # 上記管理者ユーザのパスワードzbx_external_scripts_dir = /usr/lib/zabbix/externalscripts # Zabbixの外部チェック用スクリプトの格納ディレクトリ# Database super userdb_user = postgres # PostgreSQLのスーパーユーザdb_passwd = # 上記ユーザのパスワードdb_host = 127.0.0.1 # PostgreSQL実行ホストのIPdb_port = 5432 # PostgreSQLの待ち受けポートpgsql_version = 9.3 # PostgreSQLのバージョン

Page 40: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

HyClops JMのセットアップ方法

4. HyClops JobMonitoringインストール

$ sudo fab -c hyclops_jm.conf install

セットアップはこれで完了あとは自動的にジョブの情報がZabbixに連携

Page 41: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

Fig.1 Architecture

Zabbix JobScheduler

Fabric

script

script

script

script・・・

APIAPI

Job item and host sync job

Get job elapse job

Collaborate with API

script mail alias

Trigger with job error

Zabbix Host

Template App JobScheduler

Template App HyClops JM

Collaborate with API

Scheduled job execute fabric script

Trigger modify job template

Auto registration

Config Database

Database forHyClops JM

Page 42: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

まとめ

● ZabbixやJobSchedulerは非常に高機能なOSS● HyClops JobMonitoringは

○ 各ツールの機能を活用しつつ不足する部分を補うことで相乗効果を創出

○ 以下の機能を実現■ ジョブ実行時間の監視■ ジョブ失敗の検知■ ジョブ実行時の負荷状況に応じた動的な監視設定

● 今後の予定○ 追加機能開発を行い更なる有効な連携を実現

試してみたいという方はご連絡を!!展示ブースにてデモもお見せできます!

Page 43: OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現

お問い合わせはこちらまで

[email protected]

TIS株式会社OSSサポートサービス担当窓口

ご清聴ありがとうございました。