zabbix 1.8の概要・開発状況とzabbixで使える便利ツール、zabbix apiの紹介
DESCRIPTION
2010年9月18日 hbstudy#15TRANSCRIPT
2010/09/18 @ hbstudy#15 ZABBIX-JP 代表 寺島広大 (TwitterID: kodai74)
http://www.zabbix.jp
1
Zabbix 1.8の概要・開発状況とZabbixで使える便利ツール、Zabbix APIの紹介
アジェンダ
• Zabbixの概要と機能
• Zabbix で使える便利なツール
• Zabbix API使ってみました
• Zabbix 2.0のロードマップ
2
Zabbixの概要と機能
3
Zabbix = 統合監視ソフトウェア
•ステータス情報収集機能✓ 監視対象サーバ、ネットワーク機器からステータス情報を取得✓ 取得した情報をデータベースに保存、蓄積
•障害検知、通知機能✓ 障害を検知する閾値設定✓ 障害発生時にメール通知やスクリプト実行
•グラフィカル表示機能✓ マップ、グラフのリアルタイム表示✓ 障害状況の確認や複数グラフの表示
4
Zabbixの主な特徴
•主な特徴✓ オープンソースソフトウェア✓ Webインターフェースから設定・情報表示が可能✓ リアルタイムなグラフ表示✓ 監視データをデータベースに長期間蓄積✓ 監視テンプレートによる設定のテンプレート化✓ マルチプラットフォーム対応✓ 豊富な監視機能
• Zabbixを使うメリット✓ 障害検知 + グラフ表示 + αの監視機能✓ 設定・操作がWebから簡単にできる
5
監視サーバ 監視対象
Zabbixの動作環境
Zabbixサーバ
データベースMySQL
PostgreSQLSQLiteOracle
監視データ保存
障害通知
Webインターフェース(Apache + PHP)
表示・設定
管理者
Zabbixエージェント
SNMPエージェント
6
Zabbixの対応OS
OS Zabbixサーバ ZabbixエージェントLinux ○ ○
Windows - ○
Solaris ○ ○
AIX ○ ○
HP-UX ○ ○
Mac OS X ○ ○
FreeBSD ○ ○
OpenBSD ○ ○
Novell Netware - ○
SCO Open Server ○ ○
Tru64/OSF ○ ○
7
Zabbixエージェントの監視項目
• Zabbixエージェントの標準的な監視機能✓ リソース監視 (CPU、メモリ、ディスク、ネットワーク)✓ プロセス監視 (プロセス数、プロセスのメモリ使用量)✓ ポート監視 (コネクション、レスポンス)✓ ファイル監視 (チェックサム、容量、存在確認、文字列監視)✓ ログ監視✓ Windowsサービス、イベントログ
• Zabbixエージェントの拡張✓ コマンドやスクリプトを登録して拡張可能
8
その他の監視機能
• Zabbixサーバのその他の監視機能✓ Ping監視/ポート監視 (エージェントレス)✓ SNMP v1/v2/v3エージェント✓ IPMIエージェント✓ ODBCを利用したSQL監視✓ Web(URL)監視✓ スクリプトの実行による監視
9
障害検知・通知とグラフィカル表示機能
•障害検知・通知機能✓ 障害発生状況一覧画面✓ 障害履歴の保存と参照✓ メール送信、Jabberチャット、スクリプト実行が可能✓ Zabbixエージェントでコマンド/スクリプト実行が可能
•グラフィカル表示機能✓ グラフ、マップ、複数グラフ表示✓ リアルタイムに表示✓ 動的に表示期間を変更可能
10
Zabbix 1.8のリリース
• Zabbix 1.8のリリース履歴
•現在の状況✓ 1.8.3で大きな新機能の追加は落ち着いたように見える✓ 1.8.4に向けてバグフィックス修正が行われている
11
日付 バージョン 主な機能追加 バグフィックス数
2009/12/08 1.8 - -
2010/01/28 1.8.1 2個 fix 165個2010/03/30 1.8.2 17個 fix 166個
2010/08/16 1.8.3 3個 fix 315個
現在 (2010/09/10) 1.8.4 (開発中) - open 362個
Zabbixで使える便利なツール
12
Zabbix SIAサイトの情報
• Zabbix SIAサイトのWikiページ✓ 色々な監視スクリプトやツールが紹介されている✓ 監視のHow-toなど
13
http://www.zabbix.com/wiki/
監視対象
Zabbixエージェントの監視機能の拡張
Zabbixサーバ
データベース
データ保存Zabbixエージェント
14
コマンド実行
エージェントにコマンドを実行させた結果を監視
•ユーザパラメータの機能✓ Zabbixエージェントにコマンド実行させて結果を監視✓ 簡単に監視機能を拡張可能
Zabbixの機能拡張 - MySQLの監視•Heavy MySQL monitoring solution
✓ MySQLの内部ステータスを取得するphpスクリプト✓ MySQL_Server, Replication_Master, Replication_SlaveのXMLテンプレートが配布されている
✓ 100を超えるアイテムとトリガーが標準で利用できる
15
http://www.zabbix.com/wiki/howto/monitor/db/mysql/extensive_mysql_monitoring_including_replication
Zabbixの機能拡張 - PostgreSQLの監視
• PostgreSQL UserParameters ✓ PostgreSQL用のUserParameter設定例が紹介されている✓ コミット数、ロールバック数、コネクション数など✓ 10個ほどのスクリプト例が紹介
16
http://www.zabbix.com/wiki/howto/monitor/db/postgresql
Zabbixの機能拡張 - Oracleの監視• Zabora
✓ Oracle監視用バイナリ✓ コミット数、コネクション数、キャッシュヒット率など✓ SIDごとに監視が可能✓ 他にもOrabbitという実装もある
17
http://www.zabbix.com/wiki/howto/monitor/db/orcale/oracle
Zabbixの機能拡張 - JavaVMの監視
• Zapcat ✓ ZabbixエージェントのJava実装✓ JMXを利用したJavaVMの内部ステータスが監視可能✓ JavaVMのメモリの状態、GC、Tomcatのコネクション数など✓ Zabbixに標準でJava, Tomcat, Hibernateテンプレートが付属✓ 他にもZabbix tools for Javaという実装もある
18
http://www.kjkoster.org/zapcat/Zapcat_JMX_Zabbix_Bridge.html
監視対象
zabbix senderを使った監視
Zabbixサーバ
データベース
データ保存Zabbixエージェント
19
zabbix_senderコマンドを実行
zabbix_senderでデータ送信Zabbixサーバでデータ保存
• zabbix_senderを使った監視✓ zabbix_senderコマンドでデータをプッシュ型で送信✓ Zabbixサーバは受け取ったデータをDBに保存&監視
Zabbix senderの活用例 - Postfixの監視
• Postfix statistics with Zabbix ✓ pflogsummとlogtailを利用✓ cronでPostfixのログを処理してzabbix_senderでデータ送付✓ メール送受信数、送受信バイト数✓ forward, reject, bounced数の監視など
20
http://www.zabbix.com/wiki/howto/monitor/mail/postfix/monitoringpostfix
監視対象
SNMPトラップの監視
Zabbixサーバ
データベース
データ保存
21
SNMPトラップの送信
• ZabbixサーバでSNMPトラップの受信✓ snmptrapdを経由してzabbix_senderを利用する✓ snmptrapd⇒スクリプト実行⇒zabbix_sender⇒Zabbixサーバ✓ スクリプトの作成が鍵になる(&処理が大変)
SNMPエージェントsnmptrapd
スクリプト(内部でzabbix_senderを実行)
スクリプトの実行
snmpトラップ処理用のスクリプト
•いくつかの実装が存在する✓ snmptraphandler, SNMP Trap - a new solution ✓ いずれも受け取ったトラップを元に保存先のホストを振り分け✓ 除外する送信元ホストやOIDを指定できるものもある
22
http://www.zabbix.com/wiki/howto/monitor/snmp/snmp_traps_-_a_new_solution
SNMP監視テンプレートの作成
23
• ZabbixのSNMP監視設定✓ OID指定で1つ1つ設定する必要がある✓ ポート数が多い機器だと設定が大変✓ XML形式のテンプレートで一括インポート/エクスポートが可能
SNMPテンプレート作成スクリプト
24
• SNMP template generator ✓ snmpwalkした結果を元にXMLテンプレートを自動生成✓ MIB2に加えて、いくつかの機器ではプライベートMIBに対応✓ perlスクリプトで簡単に使える$ snmpwalk -v2c -c public -On network-hostname 1.3.6.1.2.1 > snmpwalk.txt$ ./gentemplate snmpwalk.txt
http://www.zabbix.com/wiki/scripts/gentemplate.pl
Zabbix API使ってみました
25
API機能
• JSON-RPCを利用した監視設定・データ取得API機能✓ インターフェースは別途開発する必要がある✓ Rubyを利用したAPI用コマンドラインツール ”Zabcon” が開発中✓ その他にもphpやpythonを利用したライブラリの実装がある
+> get hostHost result set+--------+---------------+| hostid | host |+--------+---------------+| 10017 | Zabbix Server |+--------+---------------+1 rows total
+> get userUser result set+--------+-------+| userid | alias |+--------+-------+| 1 | Admin || 2 | guest |+--------+-------+2 rows total
26
Zabcon : http://trac.red-tux.net/wiki/zbx_api/interactive
Zabbix API使ってみました
• Zabbix APIの調査/デバッグ用ツールとして✓ JavaScript + jQueryを利用して作成✓ ブラウザ経由でZabbix APIにアクセス✓ 取得したデータを表形式で表示✓ 調査/デバッグ用ツールなので、あまり細かいことは気にせず
27
+
Zabbix API - JSONデータの作成
• JavaScriptのJSON.stringifyを利用すれば簡単✓ Zabbix APIはJSON-RPC 2.0を利用✓ rpcidはリクエストごとにインクリメント✓ authidは認証済みかどうかをチェックする文字列✓ methodには送信するメソッドを、paramsにはパラメータを指定
function createJsonObject(rpcid, authid, method, params) { var parameter = {}; parameter.jsonrpc = '2.0'; parameter.id = rpcid; parameter.auth = authid; parameter.method = method; parameter.params = params; return JSON.stringify(parameter);};
28
Zabbix API - JSONデータの送信
• jQueryの.ajax()を利用✓ createJsonObjectで作成したJSONデータを.ajax()でPOST送信✓ 成功するとJSONオブジェクトが返ってくる✓ あとはeachやfor文でデータ取出、HTML作成
function sendJSONRequest(jsonobject) { $.ajax({ url: 'http://zabbix-server/zabbix/api_jsonrpc.php', contentType: 'application/json-rpc', dataType: 'json', type: 'POST', processData: false, data: jsonobject, success: function(response) {<成功時の処理>}, error: function(response) {<失敗時の処理>} });};
29
Zabbix 2.0のロードマップ-OSC2010 Tokyo/Fall Alexei氏の講演より-
30
2010/9/10-11 OSC2010 Tokyo/Fall
•Alexei Vladishev氏の来日公演✓ Zabbixの創始者、Zabbix SIAの代表✓ Zabbix 2.0のロードマップについて講演していただきました✓ 資料はこちら:
http://www.zabbix.jp ⇒ DOCUMENTS ⇒ セミナー資料
31
Zabbix 2.0 ?
• Zabbix 1.8の次期バージョン✓ Zabbix 1.10になるかも?✓ 2010年末にリリースしたいけど...信用しないでね
• Zabbix 2.0で実現したいこと✓ すべてのプラットフォーム向けにオフィシャルパッケージ
(RPM, Deb, バイナリ)を提供✓ アプライアンスイメージ(VMware, ISO)の提供✓ パフォーマンスとクオリティの改善✓ 機能追加✓ 機能追加要望からアイデアの精査と実装
32
Zabbix 2.0の追加機能と改善 (予定)
•追加/改善予定の機能✓ ローレベルディスカバリ✓ スクリーン設定をテンプレートに含める✓ ホストに複数IPを設定可能に✓ JMX監視を標準機能に取り込む✓ Zabbixエージェントの設定をZabbixインターフェースから管理✓ ハードウェアプロファイルの自動収集機能
33
Zabbix 2.0の追加機能のアイデア
• Zabbix SIAのfeature requestページからの主な案✓ NoSQLストレージの採用によるパフォーマンス改善✓ 翻訳フレームワークの利用✓ クラウドAPIを利用したAmazon EC2, Rackspaceの監視機能✓ 仮想環境(VMware, Xen, KVM)の監視機能✓ タスクスケジューラ✓ SSH/Telnetを利用したリモートコマンド✓ 通信の暗号化と認証✓ より簡単に利用できる監視拡張機能✓ Webインターフェースの改善
34