Zabbix社内勉強会
    2.0新機能紹介編

        池田大輔
Zabbixとは
OSS統合監視ツール
ラトビアのZabbixSIA社が開発
現在の最新安定版2.0.1(2.0.2rc1が7/20リリース)



監視対象機器             監視方法               監視内容
- Linux            - Zabbix Agent監視   - リソース監視
- Windows          - SNMP監視           - 死活監視
- NW機器             - IPMI監視             - ICMPPing
等                  - エージェントレス監視         - プロセス
                   等                  - Web監視
                                      - ログ監視
                                      - HW監視
                                      - SQL監視
                                      等
Zabbixの監視の仕組み
            Apache
        (Zabbix Frontend)
                                         Zabbix Agent

                                  設定情報
                                         SNMP Agent
            DB Server
                                監視結果情報


         Shared Memory


                    dbsyncer
                        trapper
                                         SNMP Agent
                        poller
Zabbix Server           alerter
                    discoverer
                            ・
                            ・
                            ・
Zabbixの監視設定の基本

                         テンプレート

                           アイテム   グラフ      トリガー       アクション
ホストグループ          割当

       ホスト                 アイテム   グラフ      トリガー        アクション
                                   ・
       ホスト                         ・
                                   ・

        ・
        ・
        ・                  アイテム    グラフ     トリガー


例
    ホストグループ:Linux                 アイテム:CPU使用率
    ホスト:Server1                   トリガー:CPU使用率が5分間平均80%以上
    テンプレート:LinuxServerテンプレート      アクション:管理者にアラートメール送信
2.0での新機能
・ローレベルディスカバリ機能
・ZabbixJavaGateway機能
・ホストインベントリ自動登録機能
・ZabbixAPIの正式リリース
などなど
ローレベルディスカバリ
 NIC,Disk,SNMPOIDの情報を自動探索
  サーバ毎に構成が異なる場合、
  Zabbix1.8の機能だけだと、テンプレート作成が困難
                                                      ・無駄な監視設定排除
  Zabbix2.0では自動的にディスカバリをし、
  ディスカバリ結果に応じた監視アイテムを自動生成                             ・運用の手間の削減




               eth0           /                  SNMPOID例
                                                 ・ディスク情報のOIDをディスカバリ

               eth1                               HOST-RESOURCES-MIB::hrStorageDescr
                             /boot
                                                 ・インデックスとバリューが取得可能

               eth2          /var                 {#SNMPINDEX} インデックス情報が格納
                                                  {#SNMPVALUE} バリュー情報が格納
  /proc/net/devの情報を自動取得   /proc/mountsの情報を自動取得   ・マクロを使って監視設定
  注)Linuxの場合              注)Linuxの場合

注)NIC,DiskのディスカバリにはZabbix2.0のAgent導入が必要
ZabbixJavaGateway
ZabbixJavaGateway
必要な作業
1.   OpenJDKインストール(JavaGateway稼働マシン)
2.   Zabbix Java Gatewayのインストール・設定(JavaGateway稼働マシン)
3.   Zabbix Serverの設定変更(ZabbixServer再起動が必要)(ZabbixServer稼働マシン)
     JavaGateway=JavaGatewayIPアドレス
     JavaGatewayPort=JavaGateway稼働ポート
     StartJavaPollers=ポーラープロセス数指定

4.   各Javaアプリケーションの起動オプション設定(監視対象機器)

     -Dcom.sun.management.jmxremote=true
     -Dcom.sun.management.jmxremote.authenticate=false
     -Dcom.sun.management.jmxremote.ssl=false
     -Dcom.sun.management.jmxremote.port=10080

5.   JMX監視用プロセス稼働ポートのFW開放設定(監視対象機器)
6.   ZabbixにJMX監視用アイテム登録(ZabbixSeverWeb管理画面)


     jmx["オブジェクトネーム","アトリビュートネーム"]
ホストインベントリ
ホストインベントリとは?
           OS情報や設置場所情報など監視対象機器情報


Zabbix2.0からホストインベントリの自動登録機能追加

   Zabbixの監視アイテムで取得した情報をホストインベントリの値として登録可能に

ホストインベントリ使うと何が嬉しい?


       ホストインベントリの情報はアラートメールなどに マクロで追記可能
Zabbix API
・Zabbix2.0から正式機能としてリリース
・APIでできること
 - 監視データの取得
 - 監視設定等
利用方法
 1.user.loginメソッドでアクセストークン取得
 2.必要に応じた操作メソッドを実行
 3.json形式のレスポンスを受信&処理
Zabbix API
具体例1
 ログイン用リクエスト
$ curl -d '{"auth":null,"method":"user.login","id":100,"params":{"password":"zabbix","
user":"admin"},"jsonrpc":"2.0"}' -H "Content-Type:application/json-rpc" http:
//hostname/zabbix/api_jsonrpc.php


 レスポンス
 {"jsonrpc":"2.0","result":"acd6dea3b..........f272c9ffae254","id":100}

                           アクセストークン

   アクセストークンはDBのSessionテーブルに保管され、
   以降のAPIアクセスはアクセストークンを用いて認証をパスする
Zabbix API
具体例2
 ホスト情報取得リクエスト

$ curl -d '{"auth":"acd6dea3b..........f272c9ffae254","method":"host.get","id":
100,"params":{"filter":{"host":["Zabbix Server"]},"selectInterfaces":"extend","
output":"extend"},"jsonrpc":"2.0"}' -H "Content-Type:application/json-rpc" http:
//hostname/zabbix/api_jsonrpc.php




      selectInterfacesパラメータは1.8系のAPIには存在しないので注意

      APIの詳細はZabbix公式マニュアルを参照
      http://www.zabbix.com/documentation/2.0/manual/appendix/api/api
Zabbix APIの活用例
AWSのインスタンス管理

1.   AWSのEC2インスタンス情報をAWS APIから取得
2.   Zabbix APIのhost.createメソッドでホスト登録
     host.create実行時にTemplateやGroupへの割当も可能

外部ツールとの連携

1.   Zabbix APIでトリガー情報を取得
2.   ChromeのExtensionでトリガー情報閲覧&障害のデスクトップ通知




        https://chrome.google.
        com/webstore/detail/odjpdjeegacmncmodjbeboldofhljjjf
その他
他にも新しくなっていることたくさん
・インタフェースの扱い方
- 1ホストに複数のインタフェース登録可能
- インタフェースにタイプ保持(Agent,SNMP,IPMI,JMX)
・SNMPTrapperサポート※1
- zabbix_senderを使った方法(1.8まで)→snmptrapperが追加実装(2.0以降)
・Actionのスクリプト実行対象にZabbixServerを指定可能に
- zabbix agentとzabbix serverどちらの上でもスクリプトを実行可能に
・Nanosecond対応
- 1秒以内に複数トラップがあがってきた場合にも対応可能に
・IE6をサポート対象外に

    ※1第5回Zabbix勉強会 @halchiyoさん資料http://www.slideshare.net/HaruyoshiChiyoda/zabbixjp-study4-zabbix20rc1-snmp-traps
Q&A

Zabbix社内勉強会資料-Zabbix2.0新機能紹介編-

  • 1.
    Zabbix社内勉強会 2.0新機能紹介編  池田大輔
  • 2.
    Zabbixとは OSS統合監視ツール ラトビアのZabbixSIA社が開発 現在の最新安定版2.0.1(2.0.2rc1が7/20リリース) 監視対象機器 監視方法 監視内容 - Linux - Zabbix Agent監視 - リソース監視 - Windows - SNMP監視 - 死活監視 - NW機器 - IPMI監視 - ICMPPing 等 - エージェントレス監視 - プロセス 等 - Web監視 - ログ監視 - HW監視 - SQL監視 等
  • 3.
    Zabbixの監視の仕組み Apache (Zabbix Frontend) Zabbix Agent 設定情報 SNMP Agent DB Server 監視結果情報 Shared Memory dbsyncer trapper SNMP Agent poller Zabbix Server alerter discoverer ・ ・ ・
  • 4.
    Zabbixの監視設定の基本 テンプレート アイテム グラフ トリガー アクション ホストグループ 割当 ホスト アイテム グラフ トリガー アクション ・ ホスト ・ ・ ・ ・ ・ アイテム グラフ トリガー 例 ホストグループ:Linux アイテム:CPU使用率 ホスト:Server1 トリガー:CPU使用率が5分間平均80%以上 テンプレート:LinuxServerテンプレート アクション:管理者にアラートメール送信
  • 5.
  • 6.
    ローレベルディスカバリ NIC,Disk,SNMPOIDの情報を自動探索 サーバ毎に構成が異なる場合、 Zabbix1.8の機能だけだと、テンプレート作成が困難 ・無駄な監視設定排除 Zabbix2.0では自動的にディスカバリをし、 ディスカバリ結果に応じた監視アイテムを自動生成 ・運用の手間の削減 eth0 / SNMPOID例 ・ディスク情報のOIDをディスカバリ eth1 HOST-RESOURCES-MIB::hrStorageDescr /boot ・インデックスとバリューが取得可能 eth2 /var {#SNMPINDEX} インデックス情報が格納 {#SNMPVALUE} バリュー情報が格納 /proc/net/devの情報を自動取得 /proc/mountsの情報を自動取得 ・マクロを使って監視設定 注)Linuxの場合 注)Linuxの場合 注)NIC,DiskのディスカバリにはZabbix2.0のAgent導入が必要
  • 7.
  • 8.
    ZabbixJavaGateway 必要な作業 1. OpenJDKインストール(JavaGateway稼働マシン) 2. Zabbix Java Gatewayのインストール・設定(JavaGateway稼働マシン) 3. Zabbix Serverの設定変更(ZabbixServer再起動が必要)(ZabbixServer稼働マシン) JavaGateway=JavaGatewayIPアドレス JavaGatewayPort=JavaGateway稼働ポート StartJavaPollers=ポーラープロセス数指定 4. 各Javaアプリケーションの起動オプション設定(監視対象機器) -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=10080 5. JMX監視用プロセス稼働ポートのFW開放設定(監視対象機器) 6. ZabbixにJMX監視用アイテム登録(ZabbixSeverWeb管理画面) jmx["オブジェクトネーム","アトリビュートネーム"]
  • 9.
    ホストインベントリ ホストインベントリとは? OS情報や設置場所情報など監視対象機器情報 Zabbix2.0からホストインベントリの自動登録機能追加 Zabbixの監視アイテムで取得した情報をホストインベントリの値として登録可能に ホストインベントリ使うと何が嬉しい? ホストインベントリの情報はアラートメールなどに マクロで追記可能
  • 10.
    Zabbix API ・Zabbix2.0から正式機能としてリリース ・APIでできること  - 監視データの取得 - 監視設定等 利用方法 1.user.loginメソッドでアクセストークン取得 2.必要に応じた操作メソッドを実行 3.json形式のレスポンスを受信&処理
  • 11.
    Zabbix API 具体例1  ログイン用リクエスト $ curl-d '{"auth":null,"method":"user.login","id":100,"params":{"password":"zabbix"," user":"admin"},"jsonrpc":"2.0"}' -H "Content-Type:application/json-rpc" http: //hostname/zabbix/api_jsonrpc.php レスポンス {"jsonrpc":"2.0","result":"acd6dea3b..........f272c9ffae254","id":100} アクセストークン アクセストークンはDBのSessionテーブルに保管され、 以降のAPIアクセスはアクセストークンを用いて認証をパスする
  • 12.
    Zabbix API 具体例2 ホスト情報取得リクエスト $curl -d '{"auth":"acd6dea3b..........f272c9ffae254","method":"host.get","id": 100,"params":{"filter":{"host":["Zabbix Server"]},"selectInterfaces":"extend"," output":"extend"},"jsonrpc":"2.0"}' -H "Content-Type:application/json-rpc" http: //hostname/zabbix/api_jsonrpc.php selectInterfacesパラメータは1.8系のAPIには存在しないので注意 APIの詳細はZabbix公式マニュアルを参照 http://www.zabbix.com/documentation/2.0/manual/appendix/api/api
  • 13.
    Zabbix APIの活用例 AWSのインスタンス管理 1. AWSのEC2インスタンス情報をAWS APIから取得 2. Zabbix APIのhost.createメソッドでホスト登録 host.create実行時にTemplateやGroupへの割当も可能 外部ツールとの連携 1. Zabbix APIでトリガー情報を取得 2. ChromeのExtensionでトリガー情報閲覧&障害のデスクトップ通知 https://chrome.google. com/webstore/detail/odjpdjeegacmncmodjbeboldofhljjjf
  • 14.
    その他 他にも新しくなっていることたくさん ・インタフェースの扱い方 - 1ホストに複数のインタフェース登録可能 - インタフェースにタイプ保持(Agent,SNMP,IPMI,JMX) ・SNMPTrapperサポート※1 -zabbix_senderを使った方法(1.8まで)→snmptrapperが追加実装(2.0以降) ・Actionのスクリプト実行対象にZabbixServerを指定可能に - zabbix agentとzabbix serverどちらの上でもスクリプトを実行可能に ・Nanosecond対応 - 1秒以内に複数トラップがあがってきた場合にも対応可能に ・IE6をサポート対象外に ※1第5回Zabbix勉強会 @halchiyoさん資料http://www.slideshare.net/HaruyoshiChiyoda/zabbixjp-study4-zabbix20rc1-snmp-traps
  • 15.