🐕

zabbix5.0でSNMP Trap 監視の設定

2021/12/01に公開

概要

SNMPの勉強のため、zabbix5.0でRTX1200のSNMPトラップを受信できる環境を構築してみる。
色々調べると、SNMP v1やv2cの記事が多かったので、v3で試してみる。

環境

zabbix公式のzabbix-applianceを使用して、vmware上にzabbixサーバを構築した。
zabbixのバージョンは5.0LTSを使用。
ここからDLして、vmwareで読み込むだけなので楽ちんでした笑

ルータの設定

snmpv3trapを発報するように、ルータの設定を行なっていく。

エンジンIDの設定

エンジンIDはデフォルトのまま変更しない(変更したが、うまくいかなかったため)
デフォルトのエンジンIDはRTX1200の場合、

8000049e03 + lan1のMACアドレス  

ユーザの設定

snmpv3を使用するにはユーザ設定をする必要がある。

下記コマンドのフォーマットに従ってユーザを作成する。

snmpv3 usm user user_id name group group_id auth auth_pass priv priv_pass

各値は下記のようにする。

パラメーター
user_id 1
name yamaha
group_id 未指定
auth sha
auth_pass authpass
priv aes123-cfb
priv_pass privpass

snmpv3 アクセス許可設定

SNMPのアクセスを許可するホストを設定する。

下記コマンドのフォーマット従ってアクセスを許可するホストを設定する。

snmpv3 host host_ipAddr user user_id

各値は下記のようにする。

パラメーター
host_ipAddr 198.168.1.11 (zabbixサーバのIPのアドレス)
user_id 1

snmpv3 トラップの設定

SNMPトラップの発報先(ホスト)の設定をする。

下記コマンドのフォーマット従ってアクセスを許可するホストを設定する。

snmpv3 trap host host_ipAddr user user_id

各値は下記のようにする。

パラメーター
host_ipAddr 198.168.1.11 (zabbixサーバのIPのアドレス)
user_id 1

SNMP標準トラップの設定

coldstart, warmstart, linkdown, linkup, authenticationfailureを発報するかの設定。
all を設定すると全てのトラップを発報する設定。

下記コマンドのフォーマット従ってアクセスを許可するホストを設定する。

snmp trap enable trap_type [trap_type ...] 

各値は下記のようにする。

パラメーター
trap_type all

lan1インターフェースの各ポートのリンクがup/downしたときにトラップを送信する設定

RTX1200はlan1インターフェースに複数のポートがあるのでこれも設定する。

下記コマンドのフォーマット従ってアクセスを許可するホストを設定する。

snmp trap link-updown separate-l2switch-port interface switch

各値は下記のようにする。

パラメーター
interface lan1
switch on

以上で、ルータの設定は終了です。

ZabbixサーバでSNMPトラップを受信する設定

zabbixサーバでSNMPトラップを受信できるように設定する。
net-snmpを使用して設定する。

firewallの設定

SNMPトラップはudpの162ポートで受信するので該当ポートを開放する

> firewall-cmd --add-port=162/udp --zone=public --permanent
> firewall-cmd --reload

net-snmp, net-snmp-utils, net-snmp-perlのインストール

> dnf install net-snmp net-snmp-utils net-snmp-perl

トラップハンドリング用のスクリプトのダウンロードと配置

> wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.7.tar.gz
> tar zxvf zabbix-5.0.7.tar.gz
> cp -p zabbix-5.0.7/misc/snmptrap/zabbix_trap_receiver.pl /usr/local/bin/

スクリプトファイル内のログファイルへのパスを設定

  #$SNMPTrapperFile = '/tmp/zabbix_traps.tmp'; 
+ $SNMPTrapperFile = '/var/log/snmptrap/snmptrap.log'; 

実行権限の設定と出力先ディレクトリの作成

> chmod +x /usr/local/bin/zabbix_trap_receiver.pl
> mkdir /var/log/snmptrap

snmptrapdの設定

> vi /etc/snmp/snmptrapd.conf
+ createUser -e 0x8000049e03"lan1のMACアドレス" yamaha 'SHA' authpass 'AES'privpass
+ authUser log,execute,net yamaha priv

+ perl do "/usr/local/bin/zabbix_trap_receiver.pl";

snmptrapdの再起動と自動起動の設定

> systemctl stop snmptrapd
> systemctl start snmptrapd
> systemctl status snmptrapd
> systemvtl enable snmptrapd

トラップのテスト

何れかのLANインターフェースをup/down(ケーブルの抜き差し)を行い、
/var/log/snmptrap/snmptrap.logにlinkupとlinkdownのログが書き出されいれば、設定完了

zabbixサーバーでログを読み取る設定

> vi /etc/zabbix/zabbix_server.conf

末尾に下記の設定を挿入する

+ StartSNMPTrapper=1

サーバーを再起動する

> systemctl restart zabbix-server
> systemctl status zabbix-server

zabbixの設定

zabbix上でトラップを確認できるように設定する。

ホストの作成

設定 ⇨ ホスト ⇨ ホストの作成

「ホスト名」「表示名」「グループ」「インターフェース」を入力

パラメーター
ホスト名 192.168.1.1(機器のIPアドレス)
表示名 RTX1200
グループ Template
インターフェース 192.168.1.1(機器のIPアドレス)

アイテムの作成

設定 ⇨ ホスト ⇨ アイテム ⇨ アイテムの作成


「名前」「タイプ」「キー」「データ型」「ログの時間の形式」を入力

パラメーター
名前 trap
タイプ SNMPトラップ
キー snmptrap.fallback
データ型 ログ
ログの時間の形式 hh:mm:ss yyyy/MM/dd

SNMPトラップの受信確認

ルーターのLANインターフェースを抜き差しして、zabbixのGUIで取得できているか確認する

監視データ⇒ホスト⇒最新データ⇒ヒストリ


下図のように表示されれば取得できている

トリガーの作成

トリガーを作成し、特定のトラップに紐づけてアラームを発報するように設定する。

設定⇒ホスト⇒トリガー⇒トリガーの作成


「名前」「深刻度」「障害の条件式」「復旧条件式」を入力

パラメーター
名前 lan3 linkdown
深刻度 重度の障害
障害の条件式 {192.168.1.1: snmptrap.fallback.iregexp(linkdown)}=1 and {192.168.1.1: snmptrap.fallback.iregexp(ifIndex.3)}=1
復旧条件式 {192.168.1.1: snmptrap.fallback.iregexp(linkup)}=1 and {192.168.1.1: snmptrap.fallback.iregexp(ifIndex.3)}=1

トリガーのテスト

ルーターのLANインターフェースのケーブルを抜き、下図の表示がされれば、成功

感想

ZabbixでSNMPトラップを受信できる環境づくりをしたことで、SNMPについての知識が深まったと感じた。
(名前にシンプルと入っているが、そうではないことがよくわかった。)
次は、TeamsやSlackとの連携や、パトライトとの連携を試してみたいと思う。

Discussion