Letztes Mal habe ich den Prozess des Speicherns von RSS-Daten in Zabbix mithilfe der externen Überprüfungsfunktion von Zabbix beschrieben, aber es ist nicht schön und es ist anders, wenn man bedenkt, dass es in Zukunft an AWS Lambda usw. übertragen wird. Ich dachte, es könnte besser sein, also entschied ich mich, es mit dem Zabbix-Absender zu implementieren.
Klicken Sie hier für den vorherigen Artikel ⇒ RSS-Daten in Zabbix speichern (externe Prüfung)
--CentOS 8.0 (Zugang zum Internet)
Der Fluss ist grundsätzlich der gleiche. Der einzige Unterschied ist, dass wir endlich einen Zabbix-Absender in Richtung Zabbix betreiben.
Der Code ist unten.
RSS_Checker.py
#!/bin/env python3
import feedparser
from datetime import datetime, timedelta, timezone
from pyzabbix import ZabbixMetric, ZabbixSender
#Stellen Sie die vorherige Periode ein(Geben Sie diesmal die Zeit vor einer Stunde an)
lasttime = (datetime.utcnow() - timedelta(hours=1))
#RSS-URL
RSS_URL = "(Geben Sie die URL an)"
feed = feedparser.parse(RSS_URL)
#Aktualisieren Sie Artikel seit dem letzten Mal
def f(entry):
return datetime(*entry.updated_parsed[:6]).date() >= lasttime
#Verwenden Sie die Filterfunktion, um Daten auszuwählen und nach Aktualisierungszeit zu sortieren
rdflists = list(filter(f, feed.entries))
rdflists.sort(key=lambda x: x['updated'])
#Wenn es nichts gibt, endet der Prozess
if not rdflists:
sys.exit()
msgs = []
for entry in rdflists:
title = entry.title
link = entry.link
time = entry.updated
msg = title + ' / ' + link + ' / ' + time
msgs.append(ZabbixMetric('(Hostname)', '(Schlüsselname)', msg))
result = ZabbixSender(use_config=True).send(msgs)
Dieses Mal wird es von cron ausgeführt, nicht von Zabbix. Stellen Sie daher den Speicherort und den Benutzer entsprechend Ihrer eigenen Umgebung ein.
Obwohl diesmal nicht implementiert, kann es auf dem Server abgelegt werden, auf dem der Code ausgeführt wird. Beachten Sie jedoch, dass einige Einstellungen in der letzten Zeile des Codes geändert werden müssen.
Erstellen Sie in Zabbix wie zuvor ein dediziertes Element.
Geben Sie diesmal "Zabbix Trapper" als Typ an. Im Gegensatz zum letzten Mal wartet Zabbix nur auf die Verarbeitung, daher ist kein Intervall angegeben.
Nachdem Sie das oben Gesagte eingestellt und ausgeführt haben, wurde eine Aktualisierungsinformation erfolgreich in einem Verlaufsdatensatz gespeichert! Diese Methode kann von anderen als dem Zabbix-Server verwendet werden, sodass sie auch für andere Zwecke verwendet werden kann.
Recommended Posts