Heim > Artikel > Backend-Entwicklung > Detaillierte Erklärung, wie Zabbix3.0.2 externe Python-Skripte verwendet, um E-Mail-Alarme zu implementieren
1. Suchen Sie den Standardpfad, in dem das Skript gespeichert ist (ich habe ihn unter dem Standardpfad abgelegt. Wenn Sie zu einem anderen Pfad wechseln möchten, ändern Sie die Konfigurationsdatei zabbix_server.conf)
/usr/local /zabbix-server/ share/zabbix/alertscripts Skriptspeicherpfad
2. Erstellen Sie eine neue mail.py-Datei im Verzeichnis:
cd /usr/local/zabbix-server /share/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 Das Skript kann direkt nach unten geändert und kopiert werden. Es treten Formatprobleme auf~
import smtplib
from email.mime.text import MIMEText
import os
import argparse
Protokollierung importieren
Datum/Uhrzeit importieren
#QQ Enterprise
#smtp_server = 'smtp.exmail.qq.com'
#smtp_port = 25
#smtp_user = 'itnihao_zabbix@itnihao.com'
#smtp_pass = '1234567890'
#163 Mail
#smtp_server = 'smtp.163.com'
#smtp_port = 25
#smtp_user = 'itnihao_zabbix@163.com'
#smtp_pass = '1234567890'
#QQ Mail
SMTP_SERVER = 'SMTP.QQ.com'SMTP_PORT = 25
SMTP_USER ='ITNIHAO_ZABBIX@qq.com '
SMTP_PASS =' 1234567890 ' > def send_mail(mail_to,subject,content):
msg = MIMEText(content,_subtype='plain', _charset='utf-8')
msg['Subject'] = unicode(subject,'UTF-8')
msg['From'] = smtp_user
msg['to'] = mail_to
global sendstatus
global senderr
try:
if smtp_port == 465:
smtp = smtplib.SMTP_SSL()
sonst:
smtp = 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()
print 'send ok'
sendstatus = True
außer Exception,e:
senderr=str(e)
print senderr
sendstatus = False
def logwrite(sendstatus,mail_to,content) :
logpath='/var/log/zabbix/alert'
wenn nicht sendstatus:
content = senderr
wenn nicht os.path. isdir(logpath):
os.makedirs(logpath)
t=datetime.datetime.now()
daytime=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)+' Mail senden an {0},Inhalt ist :n {1}'.format(mail_to,content))
if __name__ == "__main__":
parser = argparse .ArgumentParser(description='E-Mail an Benutzer für Zabbix-Benachrichtigung senden')
parser.add_argument('mail_to',action="store", help='Die Adresse der E-Mail, die an den Benutzer gesendet wird ' )
parser.add_argument('subject',action="store", help='Der Betreff der E-Mail')
Parser.add_argument('content',action=" store", help='Der Inhalt der E-Mail')
args = parser.parse_args()
mail_to=args.mail_to
subject=args.subject
content =args.content
send_mail(mail_to,subject,content)
logwrite(sendstatus,mail_to,content)
3, ändern Sie die Berechtigungen des Skripts
# chown zabbix.zabbix mail.py
# chmod 775 mail.py
4, Zabbix-Webkonfiguration
Wählen Sie den Medientyp aus in der Konfiguration und erstellen Sie einen Medientyp
Geben Sie die folgenden Informationen ein, geben Sie ein Auswahlskript ein und zabbix3.0 benötigt die folgenden 3 Parameter.
Erstellen Sie einen Benutzer oder stellen Sie einen Alarm im Admin-Benutzer ein
Was hier hinzugefügt wird, folgt ein Fehler Die E-Mail-Adresse, an die die E-Mail benachrichtigt wird, ist der Empfänger.
Erstellen Sie eine Aktion zum Implementieren eines E-Mail-Alarms in der Konfiguration – Aktion – Aktion erstellen
(Mein Bild unterscheidet sich von der unten angegebenen Vorlage, das stimmt Empfohlen Verwenden Sie eine Vorlage, da sich der von mir verwendete Server nicht in China befindet. Alle E-Mail-Titel werden daher verstümmelt. Daher habe ich den Titel in diesem Bild gekürzt.
Name:
.Aktions-E-Mail
Standardbetreff:
Fehler {TRIGGER.STATUS}, Server: {HOSTNAME1} aufgetreten: {TRIGGER.NAME}-Fehler!
Standardnachricht:
Alarm-Host: {HOSTNAME1}
Alarmzeit: {EVENT.DATE} {EVENT.TIME}
Alarmstufe: {TRIGGER.SEVERITY}
Alarminformationen: {TRIGGER.NAME}
Alarmelement: {TRIGGER.KEY1}
Problemdetails: {ITEM.NAME}:{ITEM.VALUE}
Aktueller Status: {TRIGGER.STATUS}:{ITEM.VALUE1}
Ereignis-ID: {EVENT.ID}
Bitte gehen Sie zu Montoring-Events, um die Details zu überprüfen.
Betreff der Wiederherstellung:
Wiederherstellung von {TRIGGER.STATUS}, Server: {HOSTNAME1}: {TRIGGER.NAME} wurde wiederhergestellt!
Wiederherstellungsnachricht:
Alarm-Host: {HOSTNAME1}
Alarmzeit: {EVENT.DATE} {EVENT.TIME}
Alarmstufe: {TRIGGER.SEVERITY}
Alarminformationen: { TRIGGER.NAME}
Alarmelement:{TRIGGER.KEY1}
Problemdetails:{ITEM.NAME}:{ITEM.VALUE}
Aktueller Status: {TRIGGER . STATUS}:{ITEM.VALUE1}
Ereignis-ID: {EVENT.ID}
Der Alarm wurde wiederhergestellt, bitte entspannen Sie sich.
Hier sollten Sie auf die Art der Operation, den Versand der Nachricht und das Skript der Nachricht achten. Wählen Sie den richtigen aus.
5. Testen Sie zabbix, um E-Mails zu senden.
Suchen Sie einen Agenten-Client und stoppen Sie ihn. Dann schauen Sie sich die Alarm-E-Mail an~
Nach dem Kill können Sie sehen, dass es erfolgreich durchgeführt wurde~
Hinweis: Der Alarm von Zabbix wird normalerweise alle 5 Minuten gesendet. Beispiel: Wenn es um 16:20 Uhr stoppt, erhalten Sie die Störungs-E-Mail um 16:25 Uhr und sie wird um 16:30 Uhr bearbeitet. Die Wiederherstellungsinformationen können um 16:35 Uhr empfangen werden Hier habe ich zuerst versucht, Mailx zum Senden zu verwenden, aber später konnten einige Bibliotheksdateien nicht installiert werden, und dann wechselte ich zu anderen Methoden und konnte keine E-Mails empfangen. Schließlich entschied ich mich, ein externes Python-Skript zu verwenden, um dies zu erreichen Das Ubuntu-System verfügt über viele Softwareabhängigkeiten, die nicht mit der eigenen Umgebung verbunden sind. Bei Verwendung des 126-Postfachs kann der Client-Autorisierungscode nicht im QQ-Postfach angemeldet werden Die letzte Möglichkeit ist das Firmenpostfach des Unternehmens. Da Zabbix jedoch häufig E-Mails sendet, werden viele davon in den Papierkorb geworfen ... Schließlich habe ich sie an das QQ-Postfach im Firmenpostfach weitergeleitet.
Ubuntu eignet sich gut zum Entwickeln und Lernen, aber es gibt immer noch viele Probleme, wenn es als Server verwendet wird.
Richtige Haltung: Centos+Zabbix+Firmen-E-Mail Wenn Sie die Möglichkeit haben, einen Folgeartikel zu schreiben, rufen wir die Polizei in WeChat in Zabbix.
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie Zabbix3.0.2 externe Python-Skripte verwendet, um E-Mail-Alarme zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!