1. スクリプトが保存されているデフォルトのパスを見つけます (デフォルトのパスの下に置きました。別のパスに変更したい場合は、zabbix_server.conf 設定ファイルを変更します)
/usr/local/zabbix-server/share /zabbix/alertscripts script ストレージ パス
2. ディレクトリに新しい mail.py ファイルを作成します: スクリプト リファレンス:
cd /usr/local/zabbix/alertscripts
vim mail.py
#!/usr/bin /python
#coding:utf-8
#author: itnihao
#mail: itnihao@qq.com
#url:https://github.com/itnihao/zabbix-book /edit/master/06 -chapter/zabbix_sendmail_v2.py スクリプトを直接変更してコピーすると、形式の問題が発生します~
import smtplib
from email.mime.text import MIMEText
import os
import argparse
インポートログ
インポート日時
# QQ enterprise
#smtp_server = 'smtp.exmail.qq.com'
#smtp_port = 25
#smtp_user = 'itnihao_zabbix@itnihao.com'
#smtp_pass = '1234567890'
# 163 メール
# smtp_server = 'smtp.163.com'
#smtp_port = 25
#smtp_user = 'itnihao_zabbix@163.com'
#smtp_pass = '1234567890'
#QQ Mail
smt p_server ='smtp.qq.com '
smtp_port = 25
smtp_user ='itnihao_zabbix@qq.com'
smtp_pass ='1234567890'
def send_mail(mail_to,subject,内容):
msg = MIMEText( content,_subtype='plain', _charset='utf-8')
msg['Subject'] = unicode(subject,'UTF-8')
msg['From'] = smtp_user
msg['to'] = mail_to
グローバル sendstatus
グローバル送信者
try:
if smtp_port == 465:
smtp = smtplib.SMTP_SSL()
else:
= smtplib.SMTP( )
smtp.connect(smtp_server,smtp_port)
smtp.login(smtp_user,smtp_pass) smtp.sendmail(smtp_user,mail_to,msg.as_string()) smtp.close()
sendstatus = True
例外、e を除く; sendstatus でない場合:
content = senderr
os.path.isdir(logpath): os.makedirs(logpath) t=datetime.datetime.now() 昼間=t.strftime('%Y-% m-%d') daylogfile=logpath+'/'+str(daytime)+'.log'logging.basicConfig(filename=daylogfile,level=logging.DEBUG) os.system('chown zabbix. zabbix {0}'.format(daylogfile))logging.info('*'*130)logging.debug(str(t)+' メール送信先: {0 },content は :n {1}' .format(mail_to,content))if __name__ == "__main__": parser = argparse.ArgumentParser(description='zabbix アラートのためにユーザーにメールを送信') parser.add_argument('mail_to',action= "store", help='ユーザーに送信するメールのアドレス ') parser.add_argument('subject',action="store", help='メールの件名') parser.add_argument('content',action="store", help='メールの内容') args = parser.parse_args() mail_to=args .mail_to subject=args.subjectcontent=args.content send_mail(mail_to,subject,content)logwrite(sendstatus,mail_to,content)3、スクリプトの権限を変更します# chown zabbix.zabbix mail.py# chmod 775 mail .py4、zabbix Web設定 設定でメディアタイプを選択し、メディアタイプを作成します
次の情報を入力し、選択スクリプトを入力します。zabbix3.0 の場合は、次の 3 つのパラメータを入力する必要があります。
管理者ユーザーでユーザーを作成するかアラームを設定します
ここで追加されるのは、失敗後に通知されるメール、つまり受信者です。
configuration-Action-createアクションで、電子メールアラームを実装するアクションを作成します
(私の写真は以下のテンプレートとは異なります。私が使用しているサーバーは中国エリアのすべてのメール タイトルが文字化けするため、この画像のタイトルを短くしました)
Action-Email
デフォルトの件名: Fault {TRIGGER.STATUS}、サーバー: {HOSTNAME1 } 発生: { TRIGGER.NAME} 障害!デフォルト メッセージ:アラーム ホスト: {HOSTNAME1}アラーム時刻: {EVENT.DATE} {EVENT.TIME}アラーム レベル: {TRIGGER.SEVERITY}アラームメッセージ: { TRIGGER.NAME}アラーム項目:{TRIGGER.KEY1}問題の詳細:{ITEM.NAME}:{ITEM.VALUE}現在のステータス:{TRIGGER.STATUS}:{ITEM.VALUE1} イベントID :{EVENT.ID} 詳細については、Montoring-Eventsをご覧ください。 回復の件名: {TRIGGER.STATUS} の復元、サーバー: {HOSTNAME1}: {TRIGGER.NAME} が回復しました。 回復メッセージ: アラーム ホスト: {HOSTNAME1} アラーム時刻: {EVENT. DATE } {EVENT.TIME}アラームレベル: {TRIGGER.SEVERITY}アラーム情報: {TRIGGER.NAME}アラーム項目: {TRIGGER.KEY1}問題の詳細: {ITEM.NAME}: {ITEM . VALUE}現在のステータス: {TRIGGER.STATUS}:{ITEM.VALUE1}イベントID: {EVENT.ID}アラームが復旧しました。ご安心ください。ここでは、操作のタイプ、送信されるメッセージ、およびメッセージのスクリプトに注意する必要があります。正しいものを選択する必要があります。
5. 電子メールを送信するために zabbix をテストします
エージェント クライアントを見つけて停止します。次に、アラームメールを見てください~
Kill 後、ここで正常に送信されたことがわかります~ 注: Zabbix のアラームは通常 5 分に 1 回送信されます。たとえば、16:20 に停止した場合、障害メールは 16:25 に受信され、16:30 に処理されます。 16:35〜に復旧情報を受け取ることができます…6. まとめ
ここではubuntu 16.4システムを使用しています。後で、いくつかのライブラリファイルを送信するためにmailxを使用してみました。が見つからずインストールできませんでした。その後、電子メールの受信に失敗した後、別のシステムに切り替えました。最終的に、外部の Python スクリプトを使用してそれを実現することにしました~ · Ubuntu システムには、それに付属していないソフトウェアの依存関係が多数あります。独自の環境では、apt-get は使いにくく、126 メールボックスを使用する場合、クライアント認証コードは使用できません。Python スクリプトで QQ メールボックスにログインするのは、会社の企業だけです。メールボックス。しかし、zabbixは頻繁にメールを送信するので、多くのメールはゴミ箱に捨てられてしまいます…最終的には社内メールボックスのQQメールボックスに転送しました。
Ubuntuは開発や学習には適していますが、サーバーとして使用するとまだ多くの問題があります。正しい姿勢: centos+zabbix+企業メール フォローアップ記事を書く機会があれば、zabbix の WeChat で警察に電話してください。
以上がZabbix3.0.2が外部Pythonスクリプトを使用して電子メールアラームを実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。