Reactio の無料化によりその機能が解放され、様々な監視・アラートツールとの連携が可能になりました。
これを機に Zabbix + Reactio 連携したのでまとめました。
・Zabbix DB alerts に Reactio インシデント ID カラムを登録し管理します。
・Zabbix alertscript に Reactio API実行スクリプト配置。各種 config 設定します。
・Zabbix Admin で Reactio API 実行スクリプト設定します。
- Zabbix 3.0
- CentOS Linux release 7.2.1511 (Core)
Zabbix 3.0 がインストールされ起動されていることを前提とします。
※既に設定されている場合はスキップしてください。</style>
Configuration > Hosts > create
- Host name: Project1
プロジェクト毎にインシデントを管理します。
https://<Organization ID>
.reactio.jp/settings/project
Zabbix 管理画面で設定している Host 名を Project 名とする。
プロジェクト作成ページと同ページ内にある API 項目の 「+」ボタンクリックし API KEY 発行します。
$ cd /usr/lib/zabbix/alertscripts
$ git clone http://github.com/zabbix-reactio
$ cd /usr/lib/zabbix/alertscripts/zabbix-reactio
$ vi config.inc
- db_info に DB 情報設定
<Organization ID>
設定- Project = API KEY 設定
[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>
...
...
- Zabbix alerts テーブルに Reactio Incident ID カラムを追加します。
$ 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 をコールする際に利用します。
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} |
Administration > Users Create media type
ボタンクリック
- Reactio ユーザ作成
- Media タブをクリックし Media 情報入力
- Permission タブをクリックし Zabbix Super Admin 選択
- Addボタン クリックし一覧に表示されることを確認
Configuration > Actions Create ボタンクリック
- Action タブ選択し Action 情報入力
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 連携もご利用ください。
以上
ご清聴ありがとうございました。