概要 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
以上 ご清聴ありがとうございました。