LoginSignup
8
9

More than 5 years have passed since last update.

ZABBIX: 障害情報をmattermostに書き込む

Posted at

目的

zabbixにて障害が発生した場合、Mattermostに障害情報(ITEM.VALUE)を書き込む。

やったこと

Zabbixで障害が発生すると、Zabbixのアクション機能で、リモートコマンド(webhook)を実行し、以下のようにMattermostに障害情報を書き込む。
image.png

事前にいるもの

  • zabbix(当環境は3.0)
  • Mattermost

作業の流れ

  1. Mattermostの「内向きのウェブフック」設定
  2. zabbixのitem/trigger設定
  3. zabbixのアクション設定
  4. zabbixサーバ側でのスクリプト設定

作業の流れ(詳細)

Mattermostの「内向きのウェブフック」設定

Mattermost内で「統合機能」を選択

image.png

「内向きのウェブフック」を選択

image.png

「内向きのウェブフックを追加する」を選択

image.png

必要情報を記載(重要なのはどこのチャンネルに書き出すか(ここではchannel=alert))

image.png

設定完了すると、下記のようにTOKENを含んだアクセスURLが出てくるので控えておきます。

image.png

  • TOKEN丸見えですが、どうせすぐスクラップするので載せてます(載せたほうがサンプルPGMも分かり易そうだし)

zabbixのitem/trigger設定

割愛します。何かアラートが上がるような設定をします。

zabbixのアクション設定

アクション部分は、名前だけ設定します(ここでは"send mattermost")

image.png

アクションの実行条件もデフォルトのままでOKです

image.png

アクションの実行内容

  • 実行内容のタイプ=リモートコマンド
  • ターゲットリスト=現在のホスト
  • タイプ=カスタムスクリプト
  • 次で実行=Zabbixサーバー
  • コマンド=/usr/local/bin/send_mattermost.sh '{ITEM.VALUE}'

image.png

zabbixサーバ側でのスクリプト設定

雑なプログラムですが、一応動くのでご容赦を…

/usr/local/bin/send_mattermost.sh
#!/usr/bin/php
<?php
$json = json_encode( array( "text" => preg_replace( "/^[^ ]* /", "Alert ", implode( " ", $argv))));

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://192.168.10.189:8065/hooks/53yph6toibgyjmqn8ie7aawb3r");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_exec ($ch);
curl_close ($ch);

まとめ

slackを使っていたけど、クローズドな環境でchatを使いたくて、Mattermostをインストールした。
初めて使ってみたけど、Mattermostはいい感じかも。
今後、どうやってやるか知らないけど、Mattermostでクローズって呟いたら対象の障害イベントのコメント記載しクローズするようなの作ってみたい。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9