alert_scriptをPythonで実行できない
お世話になっております。
Zabbixからalert_scriptでPythonでの通知を試しております。
Zabbixは3.2.8です
Pythonは2.7です
実行ファイル==output.py==
#!/usr/bin/python
#-*-coding:utf-8*-
import time
file = open('test.txt','w')
string ='test'
file.write(string)
file.write(time.ctime())
file.close()
==
メディアタイプの作成とユーザへの紐づけは完了しております。
アクションの設定も完了しております。
su -u zabbix output.pyを実行したところ
ちゃんとtest.txtに時刻が下記駒われていることを確認しました。
他に必要な情報があれば言ってください。
以上、よろしくお願い致します。
TNK - 投稿数: 4737
ほぼ同じスクリプトを使用して呼び出すことができています。
メディアの設定を再度ご確認ください。
zabbix_server.conf内のAlertScriptsPathで指定したディレクトリ
にそのスクリプトを配置していますか?
メディアの設定内のスクリプト名に「output.py」とだけ指定して
いますか?
イベントの詳細画面やZabbixサーバーのログなども確認してみてく
ださい。実行に失敗していれば、なぜ失敗したかのヒントが出力さ
れているはずです。
あと、書いて頂いたスクリプトそのままですと、書き出すディレク
トリにパーミッションが無くてtext.txtファイルに書きこめていな
い可能性が考えられます。
出力先を/tmp以下などパーミッションの問題の無いディレクトリの
ファイルを指定してみてください。
もう一つ、SELinuxなどのセキュリティの仕組みを有効にしている
のであれば、それらのログファイルも確認してください。
nojikow1120 - 投稿数: 4
TNK様
早速の返信ありがとうございます。
分かっている範囲で返答させていただきます。
>メディアの設定を再度ご確認ください。
メディア設定に関して再度確認しました。Python以外どうなるか
確認したところ、bashでの実行が出来ることを確認しました。
>zabbix_server.conf内のAlertScriptsPathで指定したディレクトリ
>にそのスクリプトを配置していますか?
/usr/lib/zabbix/alertscriptsの下に配置しております。
別の言語(bash)は実行できることを確認しました。
>メディアの設定内のスクリプト名に「output.py」とだけ指定して
>いますか?
しておりました。ほぼ同様な内容のoutput2.shでしたら
実行できました。
>イベントの詳細画面やZabbixサーバーのログなども確認してみてく
>ださい。実行に失敗していれば、なぜ失敗したかのヒントが出力さ
>れているはずです。
ZabbixサーバのログやAction logを確認しましたが、特に問題となる
ログが出力されていませんでいた。
Action logはSentとなっておりました。
>あと、書いて頂いたスクリプトそのままですと、書き出すディレク
>トリにパーミッションが無くてtext.txtファイルに書きこめていな
>い可能性が考えられます。
>出力先を/tmp以下などパーミッションの問題の無いディレクトリの
>ファイルを指定してみてください。
import os
os.chdir("/tmp/")
を追加して、tmpで出力できるように変更しましたが
実行されておりませんでした。
>もう一つ、SELinuxなどのセキュリティの仕組みを有効にしている
>のであれば、それらのログファイルも確認してください。
SELinuxを一時的に無効しましたが、やはり実行できませんでした。
色々と助言を頂いたのに申し訳ありません。
お知恵をお貸し頂ければと思います。
以上、よろしくお願い致します。
TNK - 投稿数: 4737
ZabbixのバージョンやOSの環境にも依存したかもしれません。
シェルスクリプトなら起動できるのであれば、そのPythonスクリプトを
シェルスクリプト経由で実行するようにしてください。
nojikow1120 - 投稿数: 4
TNK様
お世話になっております。
迅速な返信ありがとうございます。
シェルスクリプト経由でも実行されませんでした。
OSのバージョンは、CentOS Linux release 7.4.1708 (Core) で
Zabbixのバージョンは、3.2.8です。
ここのログや設定を確認をしたらいいということがあれば、ご教示ください。
以上、よろしくお願い致します。
TNK - 投稿数: 4737
CentOS 7.3.1611とZabbix 3.2.6でもPythonのスクリプトを直接指
定して動きました。
繰り返しになりますが、ZabbixサーバーやOSのログを確認してくだ
さい。
一時的に、デバッグレベルをあげてみることが可能であるならば、
それも試してみてください。
heya - 投稿数: 319
>ほぼ同様な内容のoutput2.shでしたら実行できました。
私は python を触ったことがないのですが、その output2.sh を貼り付けると、分かる人が output.py と見比べてくれるかもしれません。
あと念のためですが、 output.py には実行権ついてますよね?(ついているから sudo -u zabbix output.py が実行できたんだと思いますが)
nojikow1120 - 投稿数: 4
TNK様、heya様
いつもお世話になっております。
ご返信ありがとうございます。
/var/log/zabbix/のzabbix_server.logは特に出力されていませんでしたが、
/var/log/messageには以下のような気になるメッセージが出力されていました。
Oct 20 14:34:11 test python: detected unhandled Python exception in '/usr/lib/zabbix/alertscripts/output.py'
デバッグレベルを上げて確認してみます。
output2.shは
==
#!/bin/sh
date > /tmp/test.txt
==
となります。
以上、よろしくお願い致します。
wakaba - 投稿数: 228
広瀬です
PythonスクリプトをざわざわZABBIXユーザで動作確認しているということは、ZABBIXサーバ
自体もzabbix権限で稼働されているのでしょうか?であれば、sudoersの設定周りも一度確認
なさってみてください。
「detected unhandled Python exception」ってことは、環境変数引き継がれていない関連かも
しれませんが、その方面でも確認は必要ですね。
いちを、当方でも適当にPythonスクリプト噛ましてみましたが、普通に稼働しました。但しroot
権限条件下です。ZABBIXサーバー自体、zabbixユーザ権限で稼働しているならば、root権限
に切り替えて見て、確認してみては如何でしょうか?