Zabbix3.0とTwilioの電話通知連携について
お世話になります。
Zabbix3.0で障害検知時にTwilioの電話通知を行う設定を試しておりますが、
当方の知識不足により設定が上手く行かず、原因も切り分けられずにいるため、
ご助力を頂けますと幸いです。
■環境
Zabbix3.0.10
■構成
Twilio <---------> RT(Staic NAT) <------------> Zabbix
▼メディアタイプ設定
・名前 Twilio
・タイプ スクリプト
・スクリプト名 zabbix-twilio/twilio-call.php
・スクリプトパラメータ
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
メディアタイプ設定(スクリプトパラメータ)以外は下記参考URL通りに設定致しました。
▼参考URL
http://begood-technology.github.io/zabbix-twilio/install.html
http://begood-technology.github.io/zabbix-twilio/usage.html
Zabbix3.0からスクリプトパラメータを指定する必要があると
幾つか他サイトで拝見したため、上手く動作しない要因かと思い、
記載されていたパラメータを入れてみましたが、動作確認出来ませんでした。。
(そもそもで引数がスクリプトのどこで反映されているのかすら把握出来てなく。。。)
他にも必要な設定、ログがあれば提示しますので、
何卒、宜しくお願い致します。
TNK - 投稿数: 4717
上手く行かない、というだけでは何が起こっているのかがわかりま
せん。
どのように上手く行かないのかより詳細にお教えください。
例えば、以下のような項目は確認されましたか?
・手動で実行すれば、そのスクリプトが実行できるのか?
・アクション自体実行されているのか?
・イベントの詳細画面でメッセージアクションにどう記録されてい
るか?
・アクションが実行されるタイミングで、Zabbixサーバーのログに
何か出力されていないか?
yoshinori - 投稿数: 9
TNKさん
調べることを優先してしまいスクリプトの手動実行を失念しておりました。
改めて手動実行後、切り分けしてみますので、
もし、切り分けが出来なければ、こちらに追加でコメント記載させていただきます。
ご連絡ありがとうございます。
kasugai - 投稿数: 72
すでに解決されているかもしれませんが、zabbix-twilio.php内のZabbix_APIクラスが古い為にエラーになっているのかもしれません。
・参考情報
http://kenzo0107.hatenablog.com/entry/2015/12/08/113709
yoshinori - 投稿数: 9
kasugaiさん
ご返信ありがとうございます。
ご教示頂いたURLを参考に試してみましたが、私の言語知識不足で解決まで至ることが出来ておりません。。
(buildが上手く行かず、、、)
暫定対応として電話通知のみのpythonスクリプトを作成したところ
手動での実行は上手く行きましたので、Zabbixと連動するか試しましたが上手く行きませんでした。
デバッグ等で原因を調査すると以下のログが表示されたので
モジュールの読み込み不可が原因と考えていますが、
手動での実行可能及びパスも通っている様に見えるので原因を特定出来ない状況です。。
必要と思われる情報を記載致しますので、
恐縮ですが、不足or間違い等無いかご教示頂けましたら幸いです。
■権限/所有者
# ls -l
-rwxr-xr-x 1 zabbix zabbix 631 2月 12 07:17 call-twilio.py
■zabbixユーザー指定スクリプト実行(デバッグログも同様のエラー)
# sudo -u zabbix ./call-twilio.py
Traceback (most recent call last):
File "./call-twilio.py", line 4, in
from twilio.rest import Client
ImportError: No module named twilio.rest
■sys.path
# python
Python 2.7.5 (default, Feb 12 2018, 04:02:23)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.path
['', '/usr/lib/zabbix/alertscripts', '/root/.pyenv/versions/2.7.5/lib/python2.7/site-packages', '/root/.pyenv/versions/2.7.5/lib/python27.zip', '/root/.pyenv/versions/2.7.5/lib/python2.7', '/root/.pyenv/versions/2.7.5/lib/python2.7/plat-linux2', '/root/.pyenv/versions/2.7.5/lib/python2.7/lib-tk', '/root/.pyenv/versions/2.7.5/lib/python2.7/lib-old', '/root/.pyenv/versions/2.7.5/lib/python2.7/lib-dynload']
■pip、pythonバージョン
# pip -V
pip 9.0.1 from /root/.pyenv/versions/2.7.5/lib/python2.7/site-packages (python 2.7)
# python -V
Python 2.7.5
TNK - 投稿数: 4717
print.sysの結果を見ると、/root/.pyenv/以下のディレクトリのパ
スも参照しているように見えます。
必要なライブラリが、/root/.pyenv/以下にあったりしませんか?
その場合、zabbixユーザーで実行しようとしても、zabbixユーザー
は/root以下にはアクセスできません。
それ以前に、zabbixユーザーの設定として、/root以下のパスを参
照するのではなく、zabbixユーザーのホームディレクトリ以下のデ
ィレクトリを参照するようになっていると思われます。
つまり、zabbixユーザーで実行しようとした時に、必要なライブラ
リにアクセスできていないのではないでしょうか?
全ユーザーがアクセスできる場所に必要なライブラリを配置するか、
rootユーザーと同様に、zabbixユーザーのホームディレクトリ以下
の.pyenvに必要なライブラリを配置してみてください。
yoshinori - 投稿数: 9
TNKさん
御礼が遅くなりまして申し訳ございません。
ご教示頂いた通り配置変更にて動作確認することが出来ました。
丁寧にご回答頂けて大変助かりました、ありがとうございます。
また、kasugaiさんにご教示頂いた手順についても時間を見つけて再度チャレンジしたいと思います。
取り急ぎ、暫定、対応出来ましたので、本件はクローズで大丈夫です。