前書き
前回、zabbixからtwilioで電話かけさせるためにwaker作った。
しかしzabbix-twilioでそもそもよくね、って思ったので検証して見たら、動かすまでにいろいろ苦労したのでそのあたりを共有する。
動作環境
今回はGCP上に立てたDebianインスタンス上のDocker上でZabbix3.0のコンテナを動かしている。
docker-compose.yml
version: '2'
services:
zabbix-db:
image: monitoringartist/zabbix-db-mariadb
volumes:
- /data/mysql:/var/lib/mysql
- /data/backup:/backups
- /etc/localtime:/etc/localtime:ro
environment:
- MARIADB_USER=zabbix
- MARIADB_PASS=my_password
zabbix-server:
image: monitoringartist/zabbix-xxl:3.0.10
depends_on:
- zabbix-db
ports:
- "80:80"
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime:ro
- ./zabbix-twilio-1.1:/usr/local/share/zabbix/alertscripts/zabbix-twilio
- ./zabbix-twilio-1.1/zabbix-twilio.php:/usr/local/src/zabbix/frontends/php/zabbix-twilio/zabbix-twilio.php
- ./twilio-php-4.12.1:/usr/local/share/zabbix/alertscripts/zabbix-twilio/lib/twilio-php-latest
links:
- zabbix-db:zabbix.db
environment:
- ZS_DBHost=zabbix.db
- ZS_DBUser=zabbix
- ZS_DBPassword=my_password
諸注意
- twilioのアカウント作成とかSIDの取得の仕方などは説明しない
- zabbix-twilioのドキュメントに書いてある部分の説明は省略する
ドキュメントに載ってないやるべきこと一覧
1. バグ修正
Zabbix3.0に上がる際にAPIの仕様が変更されたのか知らないが、APIで認証取る際のauthパラメータが空文字だとエラーになるので、nullに変更。
ついでにログのところにもバグあったので修正。
diff -r zabbix-twilio/zabbix-twilio.php zabbix-twilio-fixed/zabbix-twilio.php
81c81
< $log->info ( "Digits 不一致 Digits:$_REQUEST ['Digits]" );
---
> $log->info ( "Digits 不一致 Digits:".$_REQUEST ['Digits'] );
150c150
< private $auth = '';
---
> private $auth = null;
2. twilio-phpのバージョンは4.12.1
twilio-phpの最新バージョンだとクラスがなくてエラーになるため、古いバージョンのtwilio-phpを取得する必要がある。
なお、ディレクトリ名はtwilio-php-latestにしないとrequireされないので注意。
git clone https://github.com/twilio/twilio-php -b 4.12.1 twilio-php-latest
# 先に掲示したdocker-composeの場合だとtwilio-php-4.12.1って名前でディレクトリ作ってマウント時にlatestつけてる
3. mediaの設定でScript parametersの設定が必要
Zabbix3.0からパラメータ指定しないといけなくなった。
ここの画像通り設定すればOK
4. Actionのmessageの"eventid:"などの後ろにスペース入れない
以下のような感じでスペース入れないようにする。スペースが入っているとエラーになる
eventid:{EVENT.ID}
message:ホスト{HOST.NAME}でPort監視障害が発生中です
その他つまった場合
とりあえずつまったらconfig.phpの$DEBUG_FLG = true;
にする。デバッグログが出るようになる。
twilio→zabbixの箇所でエラー出てる場合は、twilioのコンソールからエラー内容が見れるので、そちらも参考にする。