Debian8とZabbix3.2を実行しています。
ターミナルで実行すると正常に実行されるカスタムアラートスクリプトを作成しました。
/bin/sh /usr/lib/zabbix/alertscripts/send_sms.sh 4483222740 Hello
これは、Twilio経由でSMSを送信し、正常に機能します。
私のzabbix_server.confには次のものがあります。
AlertScriptsPath=/usr/lib/zabbix/alertscripts
次のカスタムメディアタイプを作成しました https://www.zabbix.com/documentation/3.2/manual/config/notifications/media/script
しかし、スクリプトは呼び出されていません。正しくトリガーされている電子メールの一般的なメディアタイプがあります。
スクリプトに対する私の権限は次のとおりです。
ls -alh
total 12K
drwxr-xr-x 2 root root 4.0K Mar 9 09:04 .
drwxr-xr-x 4 root root 4.0K Feb 3 13:36 ..
-rwxr--r-- 1 root root 165 Mar 9 09:12 send_sms.sh
/ var/log /ディレクトリで「send_sms」をgrepしてエラーが発生したかどうかを確認しようとしました。何もない。
スクリプトをで終了します
exit 0
デバッグする方法は?
a)引用する権限、-rwxr--r-- 1 root root 165 Mar 9 09:12 send_sms.sh
、スクリプトの実行をroot
ユーザー(スクリプトの所有者)にのみ許可します。 Zabbixデーモンは通常zabbix
ユーザーとして実行されるため、そのユーザーにはスクリプトを実行する権限がありません。スクリプトはすでに世界中で読み取り可能であるため、権限を755に変更しても問題はなく、Zabbixがスクリプトを実行できるようになります。
b)スクリプトが環境変数に依存している場合は、必ずスクリプト自体にそれらを設定してください-Zabbixは、プロファイルや、これらの変数を設定するために期待されるその他のものをソースしません
権限を開く代わりに、zabbixユーザーがスクリプトを実行できるようにするsudoersファイルを作成できます。 Sudoersの構文は非常に細心の注意が必要です。これを台無しにすると、誤ったファイルまたは行を削除するまでSudoが完全に壊れてしまうので注意してください。
zabbix ALL=NOPASSWD: /usr/lib/zabbix/alertscripts/send_sms.sh *
zabbixとALLの間にスペースではなくタブ文字が必要です。そのため、エディターでこれを置き換えないようにしてください。このサイトはそうしているようですので、それを直接コピーして貼り付けないでください。
たとえば、その行を/etc/sudoers.d/zabbix
にドロップします。これをrootとして実行して、誤ってSudoを自分で壊した場合にロックアウトされないようにします。後でvisudo -cf /etc/sudoers.d/zabbix
を使用して構文をテストできます。
編集:繰り返しますが、これの私のユースケースは、rootを必要とするapt-getを使用した更新に関連するチェックです。 Twilioはおそらくまだ機能しており、ファイルを読み取って実行するだけです。