La dernière fois, j'ai décrit le processus de stockage des données RSS dans Zabbix à l'aide de la fonction de vérification externe de Zabbix, mais ce n'est pas beau et c'est différent étant donné qu'elles seront transférées vers AWS Lambda, etc. à l'avenir. J'ai pensé que cela pourrait être mieux, alors j'ai décidé de l'implémenter en utilisant l'expéditeur Zabbix.
Cliquez ici pour l'article précédent ⇒ Stocker les données RSS dans Zabbix (vérification externe)
--Comment initialiser Python
Le flux est fondamentalement le même. La seule différence est que nous exécutons enfin un émetteur Zabbix vers Zabbix.
Le code est ci-dessous.
RSS_Checker.py
#!/bin/env python3
import feedparser
from datetime import datetime, timedelta, timezone
from pyzabbix import ZabbixMetric, ZabbixSender
#Définir la période précédente(Cette fois, spécifiez l'heure il y a une heure)
lasttime = (datetime.utcnow() - timedelta(hours=1))
#URL RSS
RSS_URL = "(Spécifiez l'URL)"
feed = feedparser.parse(RSS_URL)
#Obtenez des articles mis à jour depuis la dernière fois
def f(entry):
return datetime(*entry.updated_parsed[:6]).date() >= lasttime
#Utilisez la fonction de filtre pour sélectionner les données et les trier par heure de mise à jour
rdflists = list(filter(f, feed.entries))
rdflists.sort(key=lambda x: x['updated'])
#Quand il n'y a rien, le processus se termine
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('(nom d'hôte)', '(nom de la clé)', msg))
result = ZabbixSender(use_config=True).send(msgs)
Cette fois, il sera exécuté par cron, et non depuis Zabbix, veuillez donc définir l'emplacement et l'utilisateur en fonction de votre propre environnement.
De plus, bien que non implémenté cette fois, il peut être placé sur le serveur où le code est exécuté, mais veuillez noter que certains paramètres de la dernière ligne du code doivent être modifiés.
Dans Zabbix, créez un élément dédié comme auparavant.
Cette fois, spécifiez "Zabbix Trapper" comme type. Contrairement à la dernière fois, Zabbix n'attend que le traitement, il n'y a donc pas d'intervalle spécifié.
Après avoir défini ce qui précède et l'avoir exécuté, une information de mise à jour a été stockée avec succès dans un enregistrement d'historique! Cette méthode peut être utilisée par d'autres que le serveur Zabbix, elle peut donc être utilisée à d'autres fins.
Recommended Posts