今回は以前にEC2(Amazon Linux2)で構築したZabbixでSNMP Trap受信とクライアントをポーリングで監視する設定をしたいと思います。Zabbixの構築の記事はこちら
SNMP Trapとポーリングについて
やりたいことはクライアントの監視なのですがやり方が大きく2つあります。
1つはSNMP Trapで監視する方法、もう一つはポーリングして監視する方法です。
イメージとしては以下のような感じです。
正確ではないかもですが
・何かあった時にクライアントから通知を出してもらい、障害検知 →SNMP Trap
・常時疎通確認しておき、接続断があった時に障害として検知 →ポーリング
というイメージです。
今回のゴール
zabbixでWindows Server2019とESXiの監視ができるような環境を作成する
※Windows Server2019についてはSNMPポーリングの受信のみで、ESXiはSNMP Trapとポーリング両方設定していきます。
前提環境
・ESXiのバージョンは6.7
・Zabbixのバージョンは5.0
・Zabbixサーバ、windows Server2019、ESXiは全て同一セグメント上に構築
・ZabbixはAmazon Linux2(CentOS7)で構築
設定の流れ
① ZabbixサーバにSNMP Trapの受信設定(CLIで設定)
② Zabbix上でホスト(監視対象)の設定(GUIで設定)
実際にやってみた
まず①からです。最初にEPELリポジトリを有効にします。だたし通常のCentOS7とは違い"yum install -y epel-release"としてもコマンドは通らないので、以下コマンドを実行します。
EPELリポジトリの有効化
#EPELリポジトリの有効化
amazon-linux-extras install epel -y
#EPELリポジトリの修正
vim /etc/yum.repos.d/epel.repo
以下のように修正
[epel]
enabled=0
SNMPトラップハンドラーのSNMPTTをインストールおよびファイル修正
#SNMPTTのインストール
yum --enablerepo=epel install -y snmptt
snmptt.iniの修正
#vim /etc/snmp/snmptt.ini
:set nu で行数を表示させます
以下修正していきます。
[16行目付近]
変更前:mode = standalone
変更後:mode = daemon
[71行目付近]
変更前:net_snmp_perl_enable = 0
変更後:net_snmp_perl_enable = 1
[88行目付近]
変更前:net_snmp_perl_best_guess = 0
変更後:net_snmp_perl_best_guess = 2
[227行目付近]
変更前:#date_time_format
変更後:date_time_format = %Y/%m/%d %H:%M:%S
[254行目付近]
変更前:sleep = 5
変更後:sleep = 1
[607行目付近]
変更前:DEBUGGING = 0
変更後:DEBUGGING = 1
[613行目付近]
変更前:#DEBUGGING_FILE DEBUGGING
変更後:DEBUGGING_FILE DEBUGGING = var/log/snmptt/snmptt.debug
[613行目付近]
変更前:#DEBUGGING_FILE DEBUGGING
変更後:DEBUGGING_FILE DEBUGGING = var/log/snmptt/snmptt.debug
[618行目付近]
変更前:# DEBUGGING_FILE_HANDLER = /var/log/snmptt/snmptthandler.debug
変更後:DEBUGGING_FILE_HANDLER = /var/log/snmptt/snmptthandler.debug
[624行目付近]
変更前:/etc/snmp/snmptt.conf
変更後:/etc/snmp/snmptt_base.conf]
snmptt.confの修正
#snmptt.confの修正
vim /etc/snmp/snmptt_base.conf
以下のようにファイルの中身を修正します。
EVENT general .1.3.6.1.6.3.1.1.5.1 "coldStart" Normal
FORMAT ZBXTRAP $aA $ar $*
EVENT general .1.3.6.1.6.3.1.1.5.2 "warmStart" Normal
FORMAT ZBXTRAP $aA $ar $*
EVENT general .1.3.6.1.6.3.1.1.5.3 "linkDown" Critical
FORMAT ZBXTRAP $aA $ar $*
EVENT general .1.3.6.1.6.3.1.1.5.4 "linkUp" Normal
FORMAT ZBXTRAP $aA $ar $*
snmptrap関連の設定ファイルを修正
#snmptrapdの修正
vim /etc/sysconfig/snmptrapd
既存設定をコメントアウトさせて以下を追記
OPTIONS="-m +ALL -Lsd -On"
もう1つ別のファイルも修正します。
#snmptrapd.confの修正
vim /etc/snmp/snmptrapd.conf
既存設定をコメントアウトさせて以下を追記
authCommunity log,execute,net public
perl do "/usr/share/snmptt/snmptthandler-embedded"
Zabbix設定ファイル の設定
#zabbix_server.confの修正
vim /etc/zabbix/zabbix_server.conf
以下を変更
変更前:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
変更後:SNMPTrapperFile=/var/log/snmptt/snmptt.log
変更前:StartSNMPTrapper=0
変更後:StartSNMPTrapper=1
各種サービスの起動
systemctl start snmptt
systemctl enable snmptt
systemctl start snmptrapd
systemctl enable snmptrapd
systemctl restart zabbix-server
これでSNMP Trapの設定は完了しました。SNMP Trapがちゃんと受信できて、ログに出力されるか見てみましょう。
#テストで自分自身からSNMP TRap送信
snmptrap -v 2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.3
#ログの確認
tail /var/log/snmptt/snmptt.log
こんな感じでログが出力されていればOKです。
2022/MM/DD xx:xx:xx .1.3.6.1.6.3.1.1.5.3 Critical "linkDown" 127.0.0.1 - ZBXTRAP 127.0.0.1 127.0.0.1
設定完了するとZabbixのGUI画面ではこんな感じでアラート表示が出ます。
コマンドの中の数字列 ”1.3.6.1.6.3.1.1.5.3”はOIDと呼ばれるIDです。
このIDがどういう状態・情報なのかと紐づいていて、相手先でIDを読み取ることで状態を把握するという感じです。
まとめられている記事がありましたので、ご参考までに
【snmp trap】generic trapのOIDについて
ここまででCLIでの設定は完了です。ここからはZabbizにログインして、監視対象やアラート設定などを行っていきます。
http://"サーバのIPアドレス"/zabbi でWebGUIにアクセスしてみましょう。
初期ログインIDとパスワードはID=[Admin]とPW=[zabbix]です。
Zabbix上でホスト(監視対象)の設定
ログイン後に[設定]-[ホスト]で[ホストの作成]をクリックし、ホストを作成していきます。
ホスト名やグループ名は任意のものを、タイプはSNMP Trapを送信するだけならSNMPのみでよいですが、今回はポーリングもするのでエージェントにも自分自身のIPを入力します。
マクロ設定
テンプレートの設定
アイテムの設定
ポーリング用アイテムを以下のように設定します。
画像は今回は192.168.10.1のホストをポーリング監視する場合の設定です。
トリガーの設定
SNMP Trap受信用のトリガーを以下のように設定します。
条件式は下記を入力します。
{"hostname":snmptrap[linkDown].regexp(linkDown)}=1
ポーリング用のトリガーを以下のように設定します。
条件式は下記を入力します。
{"hostname":icmpping.count(#5,0,eq)}>=4
今回は192.168.10.1のホストが5回中4回以上ping応答なし(=値が0)の時アラートを発生させます。
これで対象サーバがダウンしたり、NW上疎通できなくなるとZabbix上でアラートが発生するようになります。
おわりに
Zabbiz のトリガーやアイテム設定のところがあまり理解できてないので間違っていたらすみません。
zabbizが有名どころなだけあって色々ネットで情報は出てくるのですが、どの設定がどういう意味なのかが分からない(笑)
参考にしたサイト
【Zabbix】Zabbix でSNMPトラップ監視できる環境を構築
zabbixバージョン5.0を用いた死活監視(ping監視)
Zabbixの監視設定