Weitere ähnliche Inhalte Ähnlich wie OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現 (20) Mehr von Daisuke Ikeda (12) Kürzlich hochgeladen (10) OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現2. 自己紹介
池田 大輔
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-1
Amazon : http://www.amazon.co.jp/dp/4774162884
10. OSS統合監視ソフトウェアZabbix
OSS統合監視ツール (GPL ver.2)
ラトビアのZabbixSIA社が開発
2014/12/12時点の最新安定版2.4.2 (2014/11/5リリース)
監視対象機器
- Linux
- Windows
- NW機器
等
監視方法
- Zabbix Agent監視
- SNMP監視
- IPMI監視
- エージェントレス監視
等
監視内容
- リソース監視
- 死活監視
- ICMPPing
- プロセス
- Web監視
- ログ監視
- HW監視
- SQL監視
等
11. Zabbixは監視手法が豊富
snmp server
snmp server
任意の情報をpush型でZabbixに登録
SNMP Trap
SNMP
ssh server
ssh server
Zabbix Agent
仮想化HV
Cloud
ODBC
DB
JMX
Java
アプリ
仮想環境API
クラウドAPI
Zabbix Sender
Zabbix Server
SSH接続による
内部コマンド実行監視
ZabbixAgent
による内部監視
(リソースやログ等)
ODBCによるDB監視
Zabbix Java GatewayによるJava監視
外部チェックスクリプト監視機能によるAPI監視
13. 参考情報: ローレベルディスカバリ
Zabbix Server
ディスカバリルール
/ /data
定期的に探索
アイテムプロトタイプ
アイテム
vfs.fs.size[{#FSNAME},free]
{
"data":[
{
"{#FSNAME}":"/",
"{#FSTYPE}":"ext3"},
{
"{#FSNAME}":"/data",
"{#FSTYPE}":"ext3"},
・・・省略
}
アイテム
vfs.fs.size[/,free]
vfs.fs.size[/data,free]
活用例:
JobSchedulerに登録されているJob一覧情報に基づいてアイテム自動登録とか
14. 参考情報: 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
}
リクエストパラメータ
15. OSSジョブ管理ソフトウェアJobScheduler
OSSジョブ管理ツール (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
16. JobSchedulerの基本構成
JOC
JOE
※Jobエディタ
Job Job
Chain
JobScheduler Agent
JobScheduler Agent
SSH Server
※Job管理WebGUI
Job Job
Chain
DB
※Job実行履歴、
Jobスケジューリング情報
等
Schedule Process
Class
Schedule Process
Class
JobScheduler Engine
17. JobSchedulerのJobの考え方
Standalone Job
Job Chain
Order Job
Order Job
Schedule
• Standalone Job
– 単体で稼動するジョブを定義
• Job Chain
– 複数ジョブを順序関係を考慮して
組み合わせるジョブ(order job)を定義
• Schedule
– ジョブの稼動予定を定義
• ジョブ定義は様々な記述が可能
– ShellScript, Windows bat,Java,
JavaScript,VBScript, javax.script,
Perl
JobSchedulerの特徴
● ジョブ関連の全ての定義がXMLファイルで管理
● 様々な操作を簡単に行えるようにする機能が提供されている
○ ファイル操作、ファイル転送、DB制御、SQL操作、レポーティング機能 などなど
18. JobSchedulerのJob定義の例
Standalone Jobの書き方
<?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.log
echo `date`": Executed demo_main Job" >> $FILE
sleep 2
]]></script>
<run_time let_run="yes" repeat="60"/>
</job>
任意の実行処理が記述可能
実行タイミングを指定可能
19. JobSchedulerのJobChain定義の例
JobChainの書き方
Before_Job Main_Job After_Job
Start
<?xml version="1.0" encoding="ISO-8859-1"?>
Success
Error
<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>
20. JobSchedulerのSchedule定義の例
Scheduleの書き方
<?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>
毎日10:30
毎週土曜 4:00
21. 参考情報: JobScheduler API
内部API
ジョブの中でJobSchedulerに対する操作が可能
※例:ジョブAの実行に失敗したらジョブBのジョブスケジュールを変更
WebAPI
外部ツールからJobSchedulerに対する操作が可能
※例:Zabbixの監視結果で障害が発生したらとあるジョブCを実行
24. HyClops JobMonitoring
概要
● ジョブ実行状況をZabbixにて監視するツール
● ZabbixやJobScheduler自体の改変はせずそのまま利用可能
● Zabbixの監視機能、JobSchedulerのジョブ実行機能を活用
● JobScheduler利用時に不足する監視機能をZabbixで補う
● 2014年12月10日 OSSとして公開
公式サイトURL: http://tech-sketch.github.io/hyclops_jm
GitHubリポジトリ: https://github.com/tech-sketch/hyclops_jm
26. HyClops JobMonitoring
3つのメリット
その2. ジョブ実行時の状態の推移をZabbixで管理
1ヶ月前
Finish!
1時間
現在
ZabbixのDBにて推移状況を管理できるのでジョブ実行の分析が可能に
各ジョブの実行時のサーバリソースの状況と紐付けての管理も可能に
Finish!
3時間
28. HyClopsJMの機能詳細
ジョブ失敗状況の検知
Zabbix HyClops JM JobScheduler Engine
実行
Error終了
メールを
フック
Zabbix連携処理mail送信
より柔軟な通知
※JobScheduler Agent毎に管理
Zabbix Sender
Zabbixアクション設定
Zabbixトリガー設定
Job稼働ステータス
Jo監b視稼ア働イステテムータス
監視アイテム
30. Job定義
HyClopsJMの機能詳細
ジョブ稼働時間の監視
Zabbix
ホスト
server-01
server-02
アイテム
JobA稼働時間
Job1稼働時間
Job3稼働時間
JobScheduler Engine
server-01
JobScheduler Agent
server-02
JobScheduler Agent
HyClops JM
定義情報をもとに
設定自動連携
実行ログを解析し
稼働時間自動登録
自動登録
Job2稼働時間
Job4稼働時間
JobA
JobChain1
Job1
Job2
JobChain2
Job3
Job4
ローレベルディスカバリ
Zabbix Sender
32. HyClopsJMの機能詳細
トリガー閾値の自動変更
Zabbix
閾値変更Job
メインJob
復帰Job
Jobテンプレート
閾値変更Job
テンプレート
復帰Job
テンプレート
既存トリガー
無効化
Job実行中のみ
有効なトリガー
新規作成
例: CPU使用率>70%なら障害
例: CPU使用率>90%なら障害
Zabbix API
33. HyClopsJMの機能詳細
トリガー閾値の自動変更
Zabbix
閾値変更Job
メインJob
復帰Job
Jobテンプレート
閾値変更Job
テンプレート
復帰Job
テンプレート
既存トリガー
有効化
Job実行中のみ
有効なトリガー
削除
例: CPU使用率>70%なら障害
例: CPU使用率>90%なら障害
Zabbix API
34. 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で変更されたものを全て元に戻す
36. HyClopsJMのデモ
1. ジョブ追加に伴い自動的にZabbixに監視アイテム登録
2. トリガー変更ジョブ組み込みによる動的な閾値変更
デモ環境構成
AWS EC2インスタンスにZabbix ServerとJobScheduler Engineを導入
EC2
Zabbix Server
トリガー変更
Job
Chain
トリガー変更ジョブ組み込みJobChain Run!
Job
Chain
Job Job
JobScheduler Engine
37. 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
38. 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
39. HyClops JMのセットアップ方法
3. 設定ファイルを編集
hyclops_jm.conf
# HyClops JobMonitoring user
jm_user = hyclops_jm # HyClops JobMonitoring用OSユーザ
jm_passwd = hyclops_jm # 上記ユーザのパスワード
# JobScheduler configuration
js_id = scheduler # JobSchedulerのscheduler id
js_user = scheduler # JobSchedulerのインストールユーザ
js_passwd = scheduler # 上記ユーザのパスワード
js_host = 127.0.0.1 # JobSchedulerの実行ホストのIP
js_port = 4444 # JobSchedulerの待ち受けポート
# Zabbix configuration
zbx_host = 127.0.0.1 # Zabbixの実行ホストのIP
zbx_login_user = Admin # Zabbix Web UIにログイン可能な管理者ユーザ
zbx_login_passwd = zabbix # 上記管理者ユーザのパスワード
zbx_external_scripts_dir = /usr/lib/zabbix/externalscripts # Zabbixの外部チェック用スクリプトの格納ディレ
クトリ
# Database super user
db_user = postgres # PostgreSQLのスーパーユーザ
db_passwd = # 上記ユーザのパスワード
db_host = 127.0.0.1 # PostgreSQL実行ホストのIP
db_port = 5432 # PostgreSQLの待ち受けポート
pgsql_version = 9.3 # PostgreSQLのバージョン
40. HyClops JMのセットアップ方法
4. HyClops JobMonitoringインストール
$ sudo fab -c hyclops_jm.conf install
セットアップはこれで完了
あとは自動的にジョブの情報がZabbixに連携
41. Zabbix JobScheduler
Database for
HyClops JM
Fig.1 Architecture
Fabric
script
script
script
script
・・・API
API
Get job elapse
job
Job item and host
sync job
Collaborate with API
Trigger with job error
script mail alias
Zabbix Host
Template App
JobScheduler
Template App
HyClops JM
Scheduled job execute
fabric script
Trigger modify
job template
Auto registration
Config Database
42. まとめ
● ZabbixやJobSchedulerは非常に高機能なOSS
● HyClops JobMonitoringは
○ 各ツールの機能を活用しつつ不足する部分を補うことで
相乗効果を創出
○ 以下の機能を実現
■ ジョブ実行時間の監視
■ ジョブ失敗の検知
■ ジョブ実行時の負荷状況に応じた動的な監視設定
● 今後の予定
○ 追加機能開発を行い更なる有効な連携を実現
試してみたいという方はご連絡を!!
展示ブースにてデモもお見せできます!