Umsetzungsideen: Zunächst müssen die Alarminformationen eine Item-ID haben, was eine Voraussetzung ist. Verwenden Sie gemäß den in den Informationen übergebenen Parametern eine reguläre Übereinstimmung mit der Item-ID, um eine Sitzung zu erstellen, oder verwenden Sie Cookies, um sich anzumelden. Fordern Sie Bilder gemäß der Item-ID an und speichern Sie die erhaltenen Bilder lokal. Da der Markdown-Bildlink zugänglich sein muss, befindet sich mein Zabbix im Intranet, sodass das Bild in das Bildbett oder auf einen Webserver mit einer öffentlichen Netzwerk-IP hochgeladen werden muss. Ich habe es hier auf meinen persönlichen Server hochgeladen. Konvertieren Sie die Alarminformationen in das Markdown-Syntaxformat, um eine Anforderung zu erstellen. Verwenden Sie den Webhook von DingTalk, um Nachrichten zu senden und DingTalk-Roboter einzurichten Der DingTalk-Roboter muss aus Sicherheitsgründen eingerichtet werden. Hier definiere ich das Schlüsselwort „Benachrichtigung“, was bedeutet, dass die gesendete Nachricht dieses Schlüsselwort enthalten muss. Skriptimplementierung: Da das Image vom lokalen auf den Remote-Server kopiert werden muss, muss die kennwortfreie Konfiguration im Voraus durchgeführt werden. Das Skript wird vom Zabbix-Benutzer ausgeführt. Am besten legen Sie die Sicherheitsrichtlinie des Webserververzeichnisses fest. #!/usr/bin/python # -*- Kodierung: utf-8 -*- Importanforderungen, Zeit importiere json, sys, re, os zabbixserver_url = "http://192.168.99.200/index.php" #Definieren Sie die Adresse des Remote-Webservers und kopieren Sie das Bild in das Remote-Webverzeichnis pname_path='http://47.103.15.51/dingding_pic/' #Definieren Sie die erhaltene Bildadresse testUrl = "http://192.168.99.200/chart.php" Host = '192.168.99.200' def get_itemid(): itemid=re.search(r'ARTIKEL-ID:(\d+)',sys.argv[2]).group(1) Artikel-ID zurückgeben def get_picture(Artikel-ID, P-Name): #Erstellen Sie eine Sitzung, oder Sie können sie einmalig erstellen und dann Cookies zum Anmelden verwenden myRequests = requests.Session() versuchen: loginHeaders = { "Gastgeber": Gastgeber, "Akzeptieren":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" } # Erstellen Sie die für die Anmeldung benötigten Informationen playLoad = { "Name": "Administrator", "Passwort": "zabbix", "autologin": "1", "enter": "Anmelden", } meineAnfragen.post(URL=Zabbixserver-URL, Header=Login-Header, Daten=PlayLoad) testUrlplayLoad = { "von": "jetzt-10m", "zu": "jetzt", "itemids": Artikel-ID, "Breite": "700", } testGraph = meineRequests.get(url=testUrl,params=testUrlplayLoad) IMAGEPATH = os.path.join('/usr/lib/zabbix/alertscripts/dingding_pic/', pname) #Schreiben Sie die aufgenommenen Bilddaten in eine Datei mit open(IMAGEPATH,'wb') als f: f.write(testGraph.content) os.system("sudo scp %s [email protected]:/usr/share/nginx/html/dingding_pic" %IMAGEPATH) pname_url = pname_pfad+pname Rückgabewert für PName_URL außer Ausnahme als e: drucken(e) returniere False #Erstellen Sie eine Anfrage zum Senden einer Nachricht def send_msg(pname_url,info3): Header = {'Inhaltstyp': 'application/json; Zeichensatz=utf-8'} drucken(info3) Daten = { "msgtype": "Abschlag", "Abschlag": { "Titel": info1, "Text": "## Hinweis:\n"+info3+"\n"%(pname_url) }, "bei":{ "atMobiles": Erinnerungen, "isAtAll": Falsch, }, } r = Anfragen.Post(URL=Webhook-URL,JSON=Daten,Header=Header) drucken(r.text) #Formatieren Sie die Alarminformationen def info_text(): neuer_text = "" x = info2.split('\n') für i in x: wenn re.search('ARTIKEL-ID',str(i)): passieren anders: neuer_text+="- "+str(i)+('\n') drucken(Typ(neuer_Text)) returniere neuen Text wenn __name__ == '__main__': #Schreiben Sie die Alarminformationen in das Protokoll os.system("echo hello >> /tmp/syslog.md") pname = str(int(Zeit.Zeit()))+'.png' info1 = str(sys.argv[1]) info2 = str(sys.argv[2]) info3 = info_text() mit open('/tmp/syslog.md','a') als f: f.schreiben(info1) f.write(info2) f.schließen() Erinnerungen = [] webhook_url = 'https://oapi.dingtalk.com/robot/send?access_token=771ded387e6be652c51a2b6c83cade4e048e3da4fdfe128f1db6b124b87df18a' Artikel-ID = get_itemid() pname_url=Bild_abrufen(Artikel-ID,pname) drucken(pname_url) send_msg(pname_url,info3) Definieren Sie den Alarmmedientyp. Öffnen Sie das Zabbix-Überwachungsweb, wählen Sie im Menü „Verwaltung“ den Alarmmedientyp aus, erstellen Sie den Medientyp, wählen Sie „Skript“, geben Sie den Namen der E-Mail mit dem soeben geschriebenen Bildskript ein, zabbix_email_pic.py, Skriptparameter, und fügen Sie schließlich hinzu Öffnen Sie den Benutzer in der Verwaltung, klicken Sie auf den Benutzer, für den Sie E-Mail-Benachrichtigungen einrichten möchten, fügen Sie dann das Alarmmedium im Alarmmedium hinzu, wählen Sie den soeben definierten Typ im Popup-Fenster aus, passen Sie den Empfänger an und fügen Sie schließlich hinzu Definieren von Warnaktionen Klicken Sie im Konfigurationsmenü auf die Aktion, legen Sie eine Aktion an und füllen Sie diese anschließend entsprechend der Abbildung aus. Aktion Standardtitel Zabbix Hinweis: Server: {HOSTNAME} hat: {TRIGGER.NAME}-Fehler! ARTIKEL-ID:{ARTIKEL.ID} Alarm-Host: {HOST.NAME} Alarmhost: {HOST.IP} Weckzeit: {EVENT.DATE} {EVENT.TIME} Alarmstufe: {TRIGGER.SEVERITY} Warninformationen: {TRIGGER.NAME} Alarmelement: {TRIGGER.KEY} Fragedetails:{ITEM.NAME}:{ITEM.VALUE} Aktueller Status: {TRIGGER.STATUS}: {ITEM.VALUE} Ereignis-ID: {EVENT.ID} Wiederherstellungsvorgang Zabbix hat Folgendes gemeldet: Server: {HOST.NAME} aufgetreten: {TRIGGER.NAME} wurde wiederhergestellt! ARTIKEL-ID:{ARTIKEL.ID} Alarm-Host: {HOST.NAME} Alarmhost: {HOST.IP} Weckzeit: {EVENT.DATE} {EVENT.TIME} Alarmstufe: {TRIGGER.SEVERITY} Warninformationen: {TRIGGER.NAME} Alarmelement: {TRIGGER.KEY} Fragedetails:{ITEM.NAME}:{ITEM.VALUE} Aktueller Status: {TRIGGER.STATUS}: {ITEM.VALUE} Ereignis-ID: {EVENT.ID} Endergebnis Sie können manuell einen Alarm auslösen, um die Wirkung zu testen Zu diesem Zeitpunkt wurden die WeChat-, E-Mail- und DingTalk-Alarme mit Bildern von Zabbix konfiguriert. Zusammenfassen Das Obige ist die Einführung des Herausgebers in die Zabbix-Konfiguration von DingTalk mit Bildalarmfunktion. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
>>: Implementierung von webpack-dev-server zum Erstellen eines lokalen Servers
In diesem Artikel wird hauptsächlich erläutert, w...
Wenn es eine Tabelle mit einem Feld „add_time“ gi...
1. Registrieren Sie zunächst Ihr eigenes Dockerhu...
Heute werde ich den Server nginx verwenden und mu...
Xiaobai zeichnet die Installation von vmtools auf...
Diese Technik stammt aus diesem Artikel - So anim...
Inhaltsverzeichnis Vorwort Entwicklungsumgebung N...
Kürzlich habe ich MySQL verwendet, um Tabellendat...
Oftmals erwarten wir, dass das Abfrageergebnis hö...
Hintergrund Durch das flexible Layout wird eine e...
Das Hinzufügen der richtigen VS Code-Erweiterung ...
<br />Wie kann ich die Bildlaufleiste auf de...
Inhaltsverzeichnis 01 Einführung in InnoDB Replic...
Schritt Platzieren Sie die vorbereiteten statisch...
Der Effekt, den wir erreichen müssen: Was wird be...