Kompira Sonar から Zabbix への連携ツールを作成しました

Kompira Sonar では、収集した構成情報に API 経由でアクセスすることができます。
API 連携の一例として、Sonar でスキャンしたノード情報を Zabbix に自動登録する Python スクリプトを作成しました。

https://github.com/fixpoint/kc2zabbix-sample

本ツールには、主に下記の機能があります。

  • Sonar にてスキャンしたノード一覧を Zabbix ホストとして自動登録
  • Sonar 側で取得した構成情報等をホストインベントリに埋め込み
  • 指定したテンプレートをデフォルトテンプレートとして自動割り当て
  • SNMP サービスが有効なノードに対して指定したテンプレートを自動割り当て
  • 自動登録した Zabbix ホストの構成情報更新

環境

本ツールは、以下のツールおよびバージョンを使用しております。
ご使用のバージョンにより、設定方法が微妙に異なる場合やスクリプトが正常に動作しない場合がありますので、ご注意ください。

  • Zabbix 3.4
  • Python 3.6.5

設定

インストール後、以下の設定を行う必要があります。
詳しくはリポジトリの README をご覧ください。

  • zabbix
    データをインポートする先のzabbixサーバの設定を行います。 ホスト登録が可能な権限を持つユーザーを指定してください。
  • kompira_cloud
    データ取得元となるKompira cloudのAPIトークンの設定を行います。 Kompira cloudの全体設定からAPIトークンを作成して登録してください。
  • host_prefix
    Zabbixにホストを登録する際のprefixを設定することができます。
  • default_groups
    Zabbixにホストを登録する際、ホストに割り当てるグループを設定します。
  • default_templates
    Zabbixにホストを登録する際、ホストに自動で割り当てるテンプレートを設定します。 デフォルト設定ファイルではPing監視のモジュールを指定しています。
  • snmp_templates
    Kompira cloudでSNMPサービスが動作していることが把握できているホストに自動で割り当てるテンプレートを設定します。

Zabbixへの連携処理を実行する

zabbix_registrar.py を実行すると、Kompira Sonar のデータを Zabbix に連携させる処理が実行できます。
引数には Kompira cloud のノード一覧 URL、もしくはスナップショットのアドレス一覧URLを指定します。
以下はノード一覧の URL を指定して実行したときの例です。

$ python zabbix_registrar.py https://hogefuga.cloud.kompira.jp/apps/sonar/networks/12345678-471f-4161-90a4-4b7dba5713a7/managed-nodes
2018-10-02 14:36:18,513 - [13975] - INFO - Get node list from KompiraCloud
2018-10-02 14:36:21,136 - [13975] - INFO - Zabbix login: http://192.168.120.64/zabbix
2018-10-02 14:36:23,055 - [13975] - INFO - Create Host: KompiraCloudNode-172.28.0.120
2018-10-02 14:36:23,704 - [13975] - INFO - Create Host: KompiraCloudNode-172.28.8.23
2018-10-02 14:36:24,660 - [13975] - INFO - Create Host: KompiraCloudNode-192.168.120.158
2018-10-02 14:36:25,276 - [13975] - INFO - Create Host: KompiraCloudNode-172.28.8.239
2018-10-02 14:36:25,881 - [13975] - INFO - Create Host: KompiraCloudNode-172.28.8.235
2018-10-02 14:36:26,701 - [13975] - INFO - Create Host: KompiraCloudNode-172.28.8.237
2018-10-02 14:36:27,274 - [13975] - INFO - Create Host: KompiraCloudNode-172.28.8.234
...

実行後に Zabbix を確認すると、以下のように KompiraCloudNode- という prefix を持つホストが登録されていることが確認できます。

  • Zabbix ホスト一覧
  • Zabbix ホストインベントリ一覧

Zabbix のホストインベントリには、OS、MAC アドレス、シリアル番号、ソフトウェア情報、ハードウェア情報などを入力できるフィールドがあります。
本ツールでは Kompira Sonar で取得してきたこれらの値を自動で挿入します。

  • Zabbix ホストインベントリ詳細(Cisco C2950T)
  • Zabbix ホストインベントリ詳細(Windows Server 2016)

登録した Zabbix ホストに自動でテンプレートの割り当ても行います。
本ツールでは、以下の通り設定します。

  • Kompira Sonar で SNMP サービスの動作が確認済みのホスト:SNMP監視テンプレート + Ping監視テンプレート
  • それ以外のホスト:Ping監視テンプレート

これにより、Kompira Sonarからのデータインポートと同時に監視を始めるようにすることができます。
本ツールをさらにカスタマイズすることで、より多くの様々な条件ごとにテンプレートを割り当てるようにすることも可能です。

構成情報の更新

上記の登録実行処理を再度行うことで、同一ノードであればホストの更新を、新規ノードであればホストの作成を行います。
また、IPアドレスの変更や増加があった場合にも自動的に反映を行います。
cron 等で定期実行することにより、簡易的な自動同期が可能となります。

  • ノード一覧からの更新例(2ノードが追加、その他は更新)
$ python zabbix_registrar.py https://yourspace.cloud.kompira.jp/apps/sonar/networks/1d6425eb-471f-4161-90a4-4b7dba5713a7/managed-nodes
2018-10-02 14:39:48,656 - [14022] - INFO - Get node list from KompiraCloud
2018-10-02 14:39:50,178 - [14022] - INFO - Zabbix login: http://192.168.120.64/zabbix
2018-10-02 14:39:50,653 - [14022] - INFO - Update Host: KompiraCloudNode-172.28.0.120
2018-10-02 14:39:51,619 - [14022] - INFO - Update Host: KompiraCloudNode-172.28.8.23
2018-10-02 14:39:52,028 - [14022] - INFO - Create Host: KompiraCloudNode-Ubuntu開発機
2018-10-02 14:39:52,402 - [14022] - INFO - Update Host: KompiraCloudNode-192.168.120.158
2018-10-02 14:39:52,767 - [14022] - INFO - Update Host: KompiraCloudNode-172.28.8.239
2018-10-02 14:39:53,185 - [14022] - INFO - Update Host: KompiraCloudNode-172.28.8.235
2018-10-02 14:39:57,245 - [14022] - INFO - Update Host: KompiraCloudNode-192.168.120.100
2018-10-02 14:39:57,580 - [14022] - INFO - Update Host: KompiraCloudNode-192.168.120.71
2018-10-02 14:39:57,969 - [14022] - INFO - Create Host: KompiraCloudNode-pfSense.localdomain
TOP