Zabbixのヒストリデータにトラップデータ(トラップ受信イベント)を自動登録

Advanced Trap Receiver のトラップデータ(トラップ受信イベント)はオープンソースの総合監視ソフトウエア Zabbix のヒストリデータに登録することができます。この機能は Advanced Trap Receiver に含まれるアプリケーション連携用の Pythonスクリプト を利用して簡単に実現することができます。Advanced Trap Receiver のフィルタリング機能(エージェント、トラップOID、バインド変数のフィルタ、重複管理や破棄設定)を活用して、監視を行いたいトラップのみを登録することができます。

ヒストリデータには、トラップの基本情報(エージェント稼働時間、トラップOID、バインドデータ)とトラップの説明(description)が登録されるため、トラップの内容を手間なくスピーディーに把握することができます。

設定方法の概要は以下の通りです。

  1. (Zabbix) トラップ登録用のテンプレートをインポート
  2. (Zabbix) トラップを登録するホストにトラップ登録用のテンプレートを追加
  3. (Zabbix) 登録されていない SNMPエージェント のトラップをまとめて登録するホスト設定をインポート
  4. (Python) Advanced Trap Receiver のトラップデータを Zabbix に登録するスクリプトのパラメータ設定
  5. (Systemd) 指定した間隔(周期)でトラップデータの登録を行うための設定

* Zabbix は Zabbix SIA のラトビアおよびその他の国における登録商標または商標です。
* 本ページの内容に関するご質問等は、株式会社アド・コムにお問い合わせください。

設定方法についての説明

(補足)

  • Zabbix のバージョンは 3.0 LTS, 4.0 LTS および 5.0 LTS、 データベース は MySQL(MariaDB) と PostgreSQL に対応します。
  • Python のバージョンは 3.6 に対応します。
  • systemd が動作する環境に対応するものとします。
  • RPMパッケージ(EL8 x86-64用)でのインストールも可能です。
  1. (Zabbix) トラップ登録用のテンプレートをインポート
zbx_export_templates_App_ATR_Trap.xml

テンプレートファイル zbx_export_templates_App_ATR_Trap.xml(テンプレート名 Template App ATR Trap)をインポートします。

  1. (Zabbix) トラップを登録するホストにトラップ登録用のテンプレートを追加

トラップを登録するホストに、1.で登録したテンプレート(Template App ATR Trap)を追加します。

  1. (Zabbix) 登録されていない SNMPエージェント のトラップをまとめて登録するホスト設定をインポート
zbx_export_hosts_Unknown_Trap_Agents.xml

ホスト設定ファイル zbx_export_hosts_Unknown_Trap_Agents.xml(ホスト名 Unknown Trap Agents)をインポートします。

このホスト設定は、Zabbix のホストに登録されていない複数の SNMPエージェント のトラップをまとめて登録する Unknown Trap Agents として登録されます。

  1. (Python) Advanced Trap Receiver のトラップデータを Zabbix に登録するスクリプトのパラメータ設定
import_atr.py
config.ini

Zabbixサーバの任意のディレクトリに上記ファイルを配置し、環境に合わせて config.ini を編集します。

# Advanced Trap Receiver Import Event Parameters
# (config.ini)

######## Advanced Trap Receiver(ATR)
[db_atr]
host = localhost
port = 3306
name = atr
user = atr
pswd = atr

[loopback]
# zabbix host item name of ATR loopback address(127.0.0.1, ::1 and localhost)
zbx_host = Zabbix server

######## ZABBIX
[db_zbx]
# type values: mysql or postgres
type = mysql
host = localhost
# default port values: 3306(mysql) or 5432(postgres)
port = 3306
name = zabbix
user = zabbix
pswd = zabbix
# priority values: ip or dns(case exist both data)
priority = ip

[sender]
bin = /usr/bin/zabbix_sender
server = localhost
port = 10051
key = atr.snmptrap
# unknown host item name(case zabbix host item of trap agent is not set)
unknown = Unknown Trap Agents

######## LOG
[log]
dir = /var/log/import_atr
format = import_atr-%%Y%%m
display = 0
debug = 0

Advanced Trap Receiver のトラップエージェント情報(ホスト名、IPアドレス)と Zabbix のホスト設定のインタフェース情報(IPアドレス、DNS名)を利用して、トラップデータに対する Zabbix の登録ホストを選定するため、Zabbix の登録ホスト毎の設定等は不要です。

  1. (Systemd) 指定した間隔(周期)でトラップデータの登録を行うための設定
import-atr.service
import-atr.timer

Zabbixサーバの /etc/systemd/system ディレクトリに上記ファイルを配置し、トラップデータを登録する間隔(周期)を import-atr.timer の OnUnitInactiveSec パラメータで指定します(前回の登録処理が完了したときからの相対的な時間を指定します)。

[Unit]
Description=Advanced Trap Receiver Import Event Timer

[Timer]
OnBootSec=1min
OnUnitInactiveSec=1min

[Install]
WantedBy=timers.target

systemdタイマーに import-atr.timer を追加して、Advanced Trap Receiver のトラップデータを Zabbix のヒストリデータに登録する機能を開始します。

# systemctl enable import-atr.timer
# systemctl start import-atr.timer
トラップデータ(トラップ受信イベント)を登録したヒストリデータのサンプル

トラップ登録用のテンプレート(Template App ATR Trap)を追加したホストのアイテム(snmptrap)として、トラップの基本情報(エージェント稼働時間、トラップOID、バインドデータ)とトラップの説明(description)のヒストリデータが登録されます。トラップの説明は Advanced Trap Receiver の MIBオブジェクトデータ を利用して登録されます。

ホスト名 Unknown Trap Agents のアイテム(snmptrap)は、複数の SNMPエージェント のトラップが登録されるため、trapAgent の情報が追加されたヒストリデータが登録されます。

Zabbixへのトラップの登録は zabbix_sender の機能を利用するため、一度に最大250件のトラップデータをヒストリデータに登録することができ(250件以上は複数回に分けて登録)、少ない負荷で効率的にトラップデータを登録することができます。

さらに詳しい情報の提供を希望される場合は、こちらよりお申し込みください