1
0

More than 3 years have passed since last update.

RSSのデータをZabbixへ格納する(Zabbix sender編)

Posted at

 前回は、Zabbix の外部チェック機能を使って、RSS のデータを Zabbix へ格納する処理について、記述をしましたが、いまいち、美しくない点と、今後 AWS Lambda などに移し替えることを考えると、別のやり方のほうが良いかもしれないと思い、Zabbix sender を使用して実装することにしました。

前回の記事はこちら ⇒ RSSのデータをZabbixへ格納する(外部チェック編)

環境 (前回と同じ)

  • CentOS 8.0 (インターネットへアクセスできること)
  • Python 3.6
  • Zabbix 5.0

実現したこと (前回と同じ)

  • Python を使って RSS を取得する
  • 前回からのアップデート分を取得し、Zabbix のアイテムへ格納する

ここではお話しないこと (前回と同じ)

  • Python の初期設定方法
  • Zabbix のインストール方法
  • Zabbix の一般的な機能説明

Pythonで実現したこと

 基本的に流れは同じです。唯一違うのは、最後に Zabbix へ向けて、Zabbix sender を実行している点です。

 コードは以下の通りです。

RSS_Checker.py
#!/bin/env python3
import feedparser
from datetime import datetime, timedelta, timezone
from pyzabbix import ZabbixMetric, ZabbixSender

# 前回の期間を設定 (今回は1時間前の時間を指定)
lasttime = (datetime.utcnow() - timedelta(hours=1))

#RSSのURL
RSS_URL = "(URLを指定)"
feed = feedparser.parse(RSS_URL)

# 前回の時間以降にアップデートされた記事を取得
def f(entry):
    return datetime(*entry.updated_parsed[:6]).date() >= lasttime

# フィルタ関数を使用しデータを選定し、update時刻でソート
rdflists = list(filter(f, feed.entries))
rdflists.sort(key=lambda x: x['updated'])

# 何もない時は処理を終わる
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('(ホスト名)', '(key名)', msg))

result = ZabbixSender(use_config=True).send(msgs)

Zabbixサーバへのコードの配置

 今回は Zabbix からの実行ではなく、cron によって実行するため、配置場所とユーザはご自身の環境に合わせて設定してください。

 また、今回は実施していませんが、コードを実行するサーバへの配置でも構いませんが、コードの最終行の設定を一部変更する必要がありますので、ご注意ください。

Zabbixで設定したこと

 Zabbix では、前回と同じように専用の Item を作成します。

Item 設定画面.JPeG

 今回は、タイプに「Zabbix トラッパー」を指定します。前回とは違い、Zabbix は処理を待つだけですので、間隔の指定は有りません。

前回実現できなかったことができた

 上記を設定し、いざ実行すると、無事に更新情報1件に対し、ヒストリ1レコードに格納できました!
 この方法では、Zabbix サーバ以外でも処理が実行できるので、別の用途でも使用することができるかもしれません。

参考サイト

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0