Zabbix v5.0 でSNMP Trapとポーリング監視設定

今回は以前にEC2(Amazon Linux2)で構築したZabbixでSNMP Trap受信とクライアントをポーリングで監視する設定をしたいと思います。Zabbixの構築の記事は[こちら](https://qiita.com/u-bayashi/items/b7c6a62d8b8e200a34eb)

# SNMP Trapとポーリングについて
やりたいことはクライアントの監視なのですがやり方が大きく２つあります。
１つはSNMP Trapで監視する方法、もう一つはポーリングして監視する方法です。
イメージとしては以下のような感じです。
![スライド1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/52963f0f-c7ff-a9f7-2875-4f637b2e3e2f.png)

正確ではないかもですが
・何かあった時にクライアントから通知を出してもらい、障害検知　→SNMP Trap
・常時疎通確認しておき、接続断があった時に障害として検知　→ポーリング
というイメージです。

# 今回のゴール
zabbixでWindows Server2019とESXiの監視ができるような環境を作成する

![zabbix_Goal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/eb2dc968-5ff1-482a-e155-394a961bd5a7.png)

※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"

もう１つ別のファイルも修正します。

    #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画面ではこんな感じでアラート表示が出ます。
![trap送信.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/f0472664-2f1e-f52d-4781-24f73830b828.png)

コマンドの中の数字列 ”1.3.6.1.6.3.1.1.5.3”はOIDと呼ばれるIDです。
このIDがどういう状態・情報なのかと紐づいていて、相手先でIDを読み取ることで状態を把握するという感じです。

まとめられている記事がありましたので、ご参考までに
[【snmp trap】generic trapのOIDについて](https://iosis1.hatenablog.com/entry/2020/10/20/125815)


ここまででCLIでの設定は完了です。ここからはZabbizにログインして、監視対象やアラート設定などを行っていきます。

http://"サーバのIPアドレス"/zabbi　でWebGUIにアクセスしてみましょう。
初期ログインIDとパスワードはID＝[Admin]とPW＝[zabbix]です。



### Zabbix上でホスト（監視対象）の設定

ログイン後に[設定]-[ホスト]で[ホストの作成]をクリックし、ホストを作成していきます。

![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/7b73b35b-742f-c844-83ec-28aa4cb0204b.png)


ホスト名やグループ名は任意のものを、タイプはSNMP Trapを送信するだけならSNMPのみでよいですが、今回はポーリングもするのでエージェントにも自分自身のIPを入力します。

![スライド6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/edc52392-8827-4a68-dc70-d41484d49420.png)

### マクロ設定

マクロを以下のように設定します。
![スライド7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/2e4d5cec-a203-f6b9-32fb-cc142af78404.png)

### テンプレートの設定
テンプレートを以下のように設定します。
![スライド8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/017656d5-e93e-02d7-51ff-7c00b86b57b0.png)

### アイテムの設定
SNMT Trap受信用アイテムを以下のように設定します。
![スライド9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/aed8edbe-29bf-c705-7f0d-cb88235e2438.png)

ポーリング用アイテムを以下のように設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/0dc0d297-17f5-cd68-ced5-68ac803ab181.png)

画像は今回は192.168.10.1のホストをポーリング監視する場合の設定です。


### トリガーの設定
SNMP Trap受信用のトリガーを以下のように設定します。
条件式は下記を入力します。

    {"hostname":snmptrap[linkDown].regexp(linkDown)}=1

![スライド10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/82b2d6f1-87ee-e423-57d8-95c7576c2e63.png)

ポーリング用のトリガーを以下のように設定します。
条件式は下記を入力します。

    {"hostname":icmpping.count(#5,0,eq)}>=4

今回は192.168.10.1のホストが5回中4回以上ping応答なし（=値が0）の時アラートを発生させます。

![スライド11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/e2536f8d-710f-1778-c953-155950e16739.png)



これで対象サーバがダウンしたり、NW上疎通できなくなるとZabbix上でアラートが発生するようになります。

# おわりに
Zabbiz のトリガーやアイテム設定のところがあまり理解できてないので間違っていたらすみません。
zabbizが有名どころなだけあって色々ネットで情報は出てくるのですが、どの設定がどういう意味なのかが分からない（笑）

# 参考にしたサイト
[【Zabbix】Zabbix でSNMPトラップ監視できる環境を構築](https://satimo.org/2020/06/zabbix-snmptrap/)
[zabbixバージョン5.0を用いた死活監視（ping監視）](https://security-blog-it.com/19047/#toc4)
[Zabbixの監視設定](https://changineer.info/server/monitoring/zabbix_configration.html)