[PYTHON] Stocker les données RSS dans Zabbix (expéditeur Zabbix)

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)

Environnement (identique à la dernière fois)

Ce qui a été réalisé (comme la dernière fois)

Ne parlez pas ici (comme la dernière fois)

--Comment initialiser Python

Ce que j'ai réalisé avec 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)

Placement de code sur le serveur Zabbix

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.

Ce que vous définissez dans Zabbix

Dans Zabbix, créez un élément dédié comme auparavant.

Item 設定画面.JPeG

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é.

J'ai pu faire quelque chose que je ne pouvais pas réaliser la dernière fois

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.

Site de référence

Recommended Posts

Stocker les données RSS dans Zabbix (expéditeur Zabbix)
Stocker les données RSS dans Zabbix (vérification externe)
Échantillonnage dans des données déséquilibrées
Enregistrer en japonais dans StringProperty dans le magasin de données Google App Engine
Gérer les données ambiantes en Python
Utiliser le magasin de paramètres en Python
Manipuler des données en Python-essayez avec Pandas_plyr
Afficher les données UTM-30LX en Python
Écrire des données au format HDF