Technical information

外部との連携 Zabbixからの通知をKompiraで受信する

運用自動化を検討するにあたり、構成する機器の監視を行うために専用のツールを使用しているケースが多いと思います。Kompiraを利用して簡易的な監視を行う事も出来ますが、Zabbixなどをすでに利用している場合には、これらの監視ツールとKompiraの連携を行う方が効率的でしょう。

今回は代表的なシステム監視ツールであるZabbixで検知した障害情報などをKompiraで受信する方法についてご紹介します。ここではZabbixからユーティリティー”kompira_sendevt”コマンドを呼び出して、Kompiraに情報を送信します。

※”kompira_sendevt”コマンドのインストール要件として、Python 2.6系が動作する必要があります。今回の記事ではCentOS 6.7, Python 2.6, Zabbix 3.0 で作成しています。それぞれのインストール手順に関しては割愛いたします。

 
Kompira側の準備

“kompira_sendevt”コマンドで送信されてくる情報を、チャネルを利用して受信します。
次のようなジョブフローを作成して、実行状態にしておいてください。

 
Zabbix側の準備

方針としては「アクション」に”kompira_sendevt”を実行させる記述を行い、別途に登録したホスト、トリガーにより起動するものとします。今回はエージェントの導入が不要な”Template App HTTP Service”を利用して、リモートからWebサーバーを監視する想定としたシンプルチェックとします。

設定 -> アクション -> アクションの作成
名称は「Kompira通知」としました。

アクションの設定1

アクションの実行条件
デフォルトの「トリガーB」を削除して、「トリガー名」-「含まれる」-「HTTP」を追加します。
アクションの設定2

アクションの実行内容
アクションの設定3
ここで「タイプ」を「カスタムスクリプト」、「実行内容のタイプ」を「リモートコマンド」に変更しています。
「次で実行」は「Zabbixサーバー」を選択します。

「コマンド」には次のようなkompira_sendevtコマンドを記述しています。

「ホスト」の追加
「ホスト名」「エージェントのIPアドレス」に対象のWebサーバーの名称&IPアドレスを記載します。
ホストの追加

ホスト > テンプレートの追加
続いてテンプレートに”Template App HTTP Service”を追加します。
テンプレートの設定

これらの登録が完了するとZabbixはWebサーバーの監視を始めます。
障害発生として検知させるため、監視対象のWebサーバーのデーモンを、例えば次の様なコマンドで停止します。

Zabbixがhttpdからの応答が無くなった事を検知すると、アクションで設定した”kompira_sendevt”を呼び出してKompiraのチャネルにデータを送信します。Kompira側で先に動かしていたチャネル受信データを表示するジョブフローのコンソールには次の様な表示が出ます。
チャネルでの受信
上記はZabbixが検知した障害情報の内容となっています。以降は受信した内容に応じて通知や復旧処理をジョブフローに追加する事が出来ます。

システムの監視には、死活監視のみならず各種のメトリックスの閾値監視なども行えるZabbixを利用し、検知した情報を利用して担当者への通知や一次対応などを、Kompiraを用いて自動化することが出来るようになります。