2021年1月30日土曜日

CentOS 8 + Zabbix 5.0の環境にSNMPTTを導入してSNMP Trap監視をできるようにする

以前以下記事で、CentOS 7.3+MIRACLE ZBX 3.0構成で、SNMPTTを導入してSNMP Trapを監視できるよう構成した。

Zabbix 5.0がリリースされたので、CentOS 8.1環境に対して同様にSNMPTTを導入してみた。若干手順が異なる箇所があったため、再度SNMPTT導入手順を記載することにする。

環境

  • OS : CentOS 8.1
  • Zabbix : 5.0

SNMPTTのインストール

導入パッケージが多岐にわたるので、SNMPTTはdnfを使ってインストールする。

SNMPTTはperlで動作するソフトウェアとなるため、事前にperlをインストールしておく。

# dnf install perl -y

EPELパッケージを使えるようepel-releaseをインストールする。

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.oYBDaD: ヘッダー V4 RSA/SHA256 Signature、鍵 ID 2f86d6a1: NOKEY
Verifying...                          ################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:epel-release-8-10.el8            ################################# [100%]

続いてSNMPTTを導入するのだが、CentOS 8では単純にdnfでインストールすることができない。ここの情報を参考にさせていただき、CentOS 7向けのレポジトリのSNMPTTのパッケージをインストールして対応する。

CentOS 7向けのSNMPTTはバージョンが更新されている可能性があるため、まずはcurlを使ってリポジトリに存在するSNMPTTのバージョンを確認する。

# curl -s https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/s/ | sed -e 's/<[^>]*>//g' | grep snmptt
 snmptt-1.4.2-1.el7.noarch.rpm                                   2020-07-23 21:36  129K

確認したrpm名から2021年1月時点のSNMPTTのパッケージ名はsnmptt-1.4.2-1.el7.noarch.rpmとなり、リポジトリのURLは以下となる。

https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/s/snmptt-1.4.2-1.el7.noarch.rpm

上記rrpmパッケージのURLを直接指定して、SNMPTTをインストールする。

# dnf --enablerepo=PowerTools -y install https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/s/snmptt-1.4.2-1.el7.noarch.rpm
CentOS-8 - PowerTools                           3.5 MB/s | 2.0 MB     00:00
Extra Packages for Enterprise Linux Modular 8 - 556 kB/s | 537 kB     00:00
Extra Packages for Enterprise Linux 8 - x86_64  2.2 MB/s | 8.8 MB     00:04
snmptt-1.4.2-1.el7.noarch.rpm                   115 kB/s | 129 kB     00:01
依存関係が解決しました。
================================================================================
 パッケージ           Arch   バージョン                      リポジトリー サイズ
================================================================================
インストール:
 snmptt               noarch 1.4.2-1.el7                     @commandline 129 k
依存関係のインストール:
 mariadb-connector-c  x86_64 3.1.11-2.el8_3                  AppStream    200 k
 mariadb-connector-c-config
                      noarch 3.1.11-2.el8_3                  AppStream     15 k
 net-snmp             x86_64 1:5.8-18.el8_3.1                AppStream    354 k
 net-snmp-agent-libs  x86_64 1:5.8-18.el8_3.1                AppStream    747 k
 perl-Digest-HMAC     noarch 1.03-17.module_el8.3.0+416+dee7bcef
                                                             AppStream     20 k
 perl-Socket6         x86_64 0.28-6.el8                      AppStream     36 k
 lm_sensors-libs      x86_64 3.4.0-21.20180522git70f7e08.el8 BaseOS        59 k
 net-snmp-libs        x86_64 1:5.8-18.el8_3.1                BaseOS       824 k
 perl-Digest-SHA1     x86_64 2.13-23.el8                     PowerTools    57 k
 perl-IO-stringy      noarch 2.111-9.el8                     PowerTools    71 k
 perl-Config-IniFiles noarch 3.000002-3.el8                  epel          67 k
 perl-Crypt-DES       x86_64 2.07-19.1.el8                   epel          26 k
 perl-Net-SNMP        noarch 6.0.1-25.el8.1                  epel         107 k

トランザクションの概要
================================================================================
インストール  14 パッケージ

~(中略)~

インストール済み:
  snmptt-1.4.2-1.el7.noarch
  mariadb-connector-c-3.1.11-2.el8_3.x86_64
  mariadb-connector-c-config-3.1.11-2.el8_3.noarch
  net-snmp-1:5.8-18.el8_3.1.x86_64
  net-snmp-agent-libs-1:5.8-18.el8_3.1.x86_64
  perl-Digest-HMAC-1.03-17.module_el8.3.0+416+dee7bcef.noarch
  perl-Socket6-0.28-6.el8.x86_64
  lm_sensors-libs-3.4.0-21.20180522git70f7e08.el8.x86_64
  net-snmp-libs-1:5.8-18.el8_3.1.x86_64
  perl-Digest-SHA1-2.13-23.el8.x86_64
  perl-IO-stringy-2.111-9.el8.noarch
  perl-Config-IniFiles-3.000002-3.el8.noarch
  perl-Crypt-DES-2.07-19.1.el8.x86_64
  perl-Net-SNMP-6.0.1-25.el8.1.noarch

完了しました!

snmptrapsnmpwalkコマンドを使えるようにしておいたほうが何かと便利なので、「net-snmp-utils」もインストールしておく(SNMPTTの動作に必須ではない)。

# dnf install -y net-snmp-utils

Zabbixの設定

SNMP Trapを受信した際のログを出力するファイルと保存先ディレクトリを事前に作成する。今回は「/var/log/snmptrap/snmptrap.log」をログ出力先として設定する。

# mkdir /var/log/snmptrap
# touch /var/log/snmptrap/snmptrap.log
# chown -R snmptt:snmptt /var/log/snmptrap/

「/etc/zabbix/zabbix_server.conf 」の以下個所を確認・修正する。

SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
StartSNMPTrapper=1

設定反映のため、サービス再起動を行う。

# systemctl restart zabbix-server

snmptrapdの設定

「/etc/sysconfig/snmptrapd」に以下を追記する。

OPTIONS="-On -Lsd -p /var/run/snmptrapd.pid -M /usr/share/snmp/mibs:/usr/share/snmp/venders -m all"

「/etc/snmp/snmptrapd.conf」に以下を追記する。

authCommunity   log,execute,net public
traphandle default /usr/sbin/snmptthandler

上記設定後、snmptrapdを起動させる。

# systemctl start snmptrapd
# systemctl enable snmptrapd

SNMPTTの設定

「/etc/snmp/snmptt.ini」の以下個所を確認・修正する。

mode = daemon
date_format = %Y/%m/%d
time_format = %H:%M:%S
date_time_format = %Y/%m/%d %H:%M:%S
log_file = /var/log/snmptrap/snmptrap.log
syslog_enable = 0

「/etc/snmp/snmptt.conf」に以下を追記する。

EVENT general .* "General event" Normal
FORMAT ZBXTRAP $aA $*

SNMPTTを起動させる。

# systemctl start snmptt
# systemctl enable snmptt

監視テスト

この段階で一度監視テストとして、Zabbixサーバ自身にて、snmptrapコマンドにてSNMP Trap受信確認を実施してみよう。

# snmptrap -v2c -c public 127.0.0.1 "" .1.3.6.1.6.3.1.1.5.1 coldStart s "Start"

「/var/log/messages」と「/var/log/snmptrap/snmptrap.log」にログが出力されていればOK。

# tail /var/log/messages
May 21 07:56:20 t1024cent snmptrapd[3164]: 2020-05-21 07:56:20 localhost [UDP: [127.0.0.1]:58945->[127.0.0.1]:162]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (32052165) 3 days, 17:02:01.65#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.6.3.1.1.5.1#011.1.3.6.1.6.3.1.1.5.1 = STRING: "Start"
# tail /var/log/snmptrap/snmptrap.log
2020/05/21 07:56:20 .1.3.6.1.6.3.1.1.5.1 Normal "General event" localhost - ZBXTRAP 127.0.0.1 Start

OIDだけでは障害内容の判別が難しいので、本来はMIBの登録も必要となる。手順は以前のものと変更はないため、過去記事を参照いただきたい。

Zabbixの受信設定

ZabbixのGUIにて、SNMP Trap受信の設定を行う。

テンプレートの作成

  • テンプレート名:Template SNMP Trap
  • グループ:Templates

アイテムの作成

  • 名前:SNMP Trap log
  • タイプ:SNMP トラップ
  • キー:snmptrap[]
  • データ型:ログ
  • ヒストリ保存期間:90d
  • ログの時間の形式:yyyy/MM/dd hh:mm:ss
  • アプリケーションの作成:SNMP Trap
  • 有効:チェック

トリガーの作成

  • 名前:SNMP Trap from {HOST.NAME} : {ITEM.LASTVALUE1}
  • 深刻度:軽度の障害 ※任意の深刻度で設定する
  • 条件式:{Template SNMP Trap:snmptrap[].strlen()}>0
  • 障害イベント生成モード:複数
  • 有効:チェック

ホストにSNMP用のインタフェースを作成

テンプレート適用前に、適用対象のホストに対してSNMP用のインタフェースを作成する。今回は「Zabbix server」に対して、127.0.0.1でインタフェースを追加する。

ホストにテンプレートを適用

適用対象のホストに対して、「Template SNMP Trap」のテンプレートを適用する。

再度監視テストを実施

再度snmptrapコマンドにてSNMP Trap受信確認を実施してみる。ダッシュボードにて正常に障害が検知できればOKとなる。

参考


更新履歴

  • 2020/5/21 新規作成
  • 2021/1/30 SNMPTTのバージョン更新に対応できるよう、SNMPTTのインストール手順を更新

0 件のコメント:

コメントを投稿

人気の投稿