zabbix5.0でSNMP Trap 監視の設定
概要
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