[PYTHON] RSS-Daten in Zabbix speichern (Zabbix-Absender)

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)

Umwelt (wie beim letzten Mal)

--CentOS 8.0 (Zugang zum Internet)

Was wurde erreicht (wie beim letzten Mal)

Sprich hier nicht (wie beim letzten Mal)

Was ich mit Python realisiert habe

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)

Platzierung des Codes auf dem Zabbix-Server

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.

Was Sie in Zabbix eingestellt haben

Erstellen Sie in Zabbix wie zuvor ein dediziertes Element.

Item 設定画面.JPeG

Geben Sie diesmal "Zabbix Trapper" als Typ an. Im Gegensatz zum letzten Mal wartet Zabbix nur auf die Verarbeitung, daher ist kein Intervall angegeben.

Ich konnte etwas tun, was ich beim letzten Mal nicht realisieren konnte

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.

Referenzseite

Recommended Posts

RSS-Daten in Zabbix speichern (Zabbix-Absender)
RSS-Daten in Zabbix speichern (externe Prüfung)
Abtastung in unausgeglichenen Daten
Speichern Sie auf Japanisch in StringProperty im Google App Engine-Datenspeicher
Behandeln Sie Umgebungsdaten in Python
Verwenden Sie den Parameterspeicher in Python
Bearbeiten von Daten in Python-try mit Pandas_plyr
Zeigen Sie UTM-30LX-Daten in Python an
Schreiben Sie Daten im HDF-Format