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

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

github.com

主に下記の機能があります。

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

設定

インストール後、以下の設定を行う必要があります。 詳しくはリポジトリの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 cloudのデータを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ホスト一覧 f:id:kompiracloud:20181002151324p:plain

  • Zabbixホストインベントリ一覧 f:id:kompiracloud:20181002151335p:plain

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

  • Zabbixホストインベントリ詳細(Cisco C2950T) f:id:kompiracloud:20181002151346p:plain

  • Zabbixホストインベントリ詳細(Windows Server 2016) f:id:kompiracloud:20181002151355p:plain

構成情報の更新

上記の登録実行処理を再度行う事で、同一ノードであればホストの更新を、新規ノードであればホストの作成を行います。
また、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