概要
Reactio の無料化によりその機能が解放され、様々な監視・アラートツールとの連携が可能になりました。
これを機に Zabbix + Reactio 連携したのでまとめました。
Reactio が無料になります
環境
- Zabbix 3.0
- CentOS Linux release 7.2.1511 (Core)
Zabbix 3.0 がインストールされ起動されていることを前提とします。
Zabbix 管理画面で Host 設定
※既に設定されている場合はスキップしてください。
Configuration > Hosts > create
Reactio プロジェクト作成
プロジェクト毎にインシデントを管理します。
https://<Organization ID>
.reactio.jp/settings/project
Zabbix 管理画面で設定している Host 名を Project 名とします。
Reactio API 発行
プロジェクト作成ページと同ページ内にある API 項目の 「+」ボタンクリックし API KEY 発行します。
zabbix-reactio インストール
1 2
| $ cd /usr/lib/zabbix/alertscripts $ git clone http://github.com/zabbix-reactio
|
Zabbix DB 情報 と Reactio で作成した Project と 発行した API KEY を設定ファイルに設定
1 2
| $ cd /usr/lib/zabbix/alertscripts/zabbix-reactio $ vi config.inc
|
- db_info に DB 情報設定
<Organization ID>
設定
- Project = API KEY 設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [db_info] host = <DB Host> user = <DB user> pass = <DB pass> db = <DB name>
[reactio_url] default = https://<Organization ID>.reactio.jp/api/v1/incidents
[api_key] Project1 = <Project1's API KEY> Project2 = <Project2's API KEY> Project3 = <Project3's API KEY> ... ...
|
DB カラム追加
- Zabbix alerts テーブルに Reactio Incident ID カラムを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| $ cd /usr/lib/zabbix/alertscripts/zabbix-reactio $ mysql -h <DB Host> -u <DB user> -p<DB pass> <DB name> -e "`cat add_reactioincidentid.sql`" $ mysql -h <DB Host> -u <DB user> -p<DB pass> <DB name> -e "SHOW COLUMNS FROM alerts"
+---------------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------------+---------------------+------+-----+---------+-------+ | alertid | bigint(20) unsigned | NO | PRI | NULL | | | actionid | bigint(20) unsigned | NO | MUL | NULL | | | eventid | bigint(20) unsigned | NO | MUL | NULL | | | userid | bigint(20) unsigned | YES | MUL | NULL | | | clock | int(11) | NO | MUL | 0 | | | mediatypeid | bigint(20) unsigned | YES | MUL | NULL | | | sendto | varchar(100) | NO | | | | | subject | varchar(255) | NO | | | | | message | text | NO | | NULL | | | status | int(11) | NO | MUL | 0 | | | retries | int(11) | NO | | 0 | | | error | varchar(128) | NO | | | | | esc_step | int(11) | NO | | 0 | | | alerttype | int(11) | NO | | 0 | | | reactio_incident_id | int(11) | NO | | 0 | | ← 追加されているのが確認できます +---------------------+---------------------+------+-----+---------+-------+
|
Reacito では全てのインシデントは ID で管理されています。
Zabbix で障害アラート通知時に Reactio インシデント作成 API をコールし インシデント ID を保存します。
このインシデント ID は Zabbix で障害回復アラート通知時に Reatio インシデントステータス更新 API をコールする際に利用します。
Zabbix Media types: Reactio 作成
Administration > Media types Create media type
ボタンクリック
以下値を入力し Add
ボタンクリック
Item |
Value |
Name |
Reactio |
Type |
Script |
Script name |
zabbix-reactio/reactio.php |
Script Parameters 1 |
{ALERT.SUBJECT} |
Script Parameters 2 |
{ALERT.MESSAGE} |
Zabbix Users: Reactio 作成
Administration > Users Create media type
ボタンクリック
- Media タブをクリックし Media 情報入力
- Permission タブをクリックし Zabbix Super Admin 選択
- Add ボタン クリックし一覧に表示されることを確認
Zabbix Actions: Reactio Notification 作成
Configuration > Actions Create ボタンクリック
Item |
Value |
Name |
Reactio Notification |
Default subject |
PROBLEM alert - {TRIGGER.NAME} is {TRIGGER.STATUS} |
Default message |
HOST: {HOST.NAME} TRIGGER_NAME: {TRIGGER.NAME} TRIGGER_STATUS: {TRIGGER.STATUS} TRIGGER_SEVERITY: {TRIGGER.SEVERITY} DATETIME: {DATE} / {TIME} ITEM_ID: {ITEM.ID1} ITEM_NAME: {ITEM.NAME1} ITEM_KEY: {ITEM.KEY1} ITEM_VALUE: {ITEM.VALUE1} EVENT_ID: {EVENT.ID} TRIGGER_URL: {TRIGGER.URL} |
Recovery message |
チェック |
Recovery subject |
RECOVERY alert - {TRIGGER.NAME} is {TRIGGER.STATUS} |
Recovery message |
HOST: {HOST.NAME} TRIGGER_NAME: {TRIGGER.NAME} TRIGGER_STATUS: {TRIGGER.STATUS} TRIGGER_SEVERITY: {TRIGGER.SEVERITY} DATETIME: {DATE} / {TIME} ITEM_ID: {ITEM.ID1} ITEM_NAME: {ITEM.NAME1} ITEM_KEY: {ITEM.KEY1} ITEM_VALUE: {ITEM.VALUE1} EVENT_ID: {EVENT.ID} TRIGGER_URL: {TRIGGER.URL} |
Enabled |
チェック |
以下項目から判断して Reactio API を叩いてます。
- subject の PROBLEM/RECOVERY
- HOST: {HOST.NAME}
- EVENT_ID: {EVENT.ID}
メッセージを整形する場合でも、 上記項目は残しておくようにしてください。
- Operations タブ選択し Operations 情報入力
以上 Zabbix で Reactio 連携設定完了しました。
実行結果
- インシデント作成できた!
- 作成したインシデントのステータスが更新された!
今後
当方、運用し始めです。
障害レベルによってメッセージを変更したりと今後更新検討致します。
是非以下も合わせて Zabbix-Slack 連携もご利用ください。
zabbix3-slack
以上
ご清聴ありがとうございました。