2024年6月16日日曜日

Zabbix 7.0にSNMP Trapを監視する手順 (AlmaLinux 9+SNMPTT)

以下記事で、AlmaLinux9.4+Zabbix 7.0のインストール手順を記載した。

Zabbix自体には、SNMP Trapを受信する機能はないため、snmptrapdやSNMPTTと連携して監視設定を行う必要がある。

本記事では、Zabbix 7.0の環境にて、SNMPTTを用いたSNMP Trap監視設定の手順を記載する。

環境

導入環境は以下となる。事前にZabbixサーバーがインストールされていることが前提となる。

  • OS : AlmaLinux 9.4
  • Zabbix : 7.0
  • SNMPTT : 1.5

SNMPTTインストール

1. リポジトリを登録

SNMPTTは通常のAlmaLinuxのリポジトリには存在しないため、EPELとCRBのリポジトリを登録する。なお、CRB (CodeReady Builder)のリポジトリは、以前はPowerToolsという名称で呼ばれていたものとなる。

dnf install epel-release -y
dnf config-manager --set-enabled crb

2. パッケージをインストール

以下コマンドでNET-SNMPと各種関連Perlモジュールをインストールする。

dnf install net-snmp net-snmp-utils net-snmp-perl perl-Time-HiRes \
perl-Text-Balanced perl-Sys-Syslog perl-DBI perl-DBD-MySQL perl-DBD-Pg \
perl-threads perl-Digest-MD5 perl-DBD-ODBC perl-Config-IniFiles perl-Net-IP -y

3. SNMPTTをダウンロード

SNMPTTを以下公式サイトからダウンロードする。今回はsnmptt_1.5.tgzをダウンロードした。

http://www.snmptt.org/downloads.shtml

4. SNMPTTを手動インストール

先ほどダウンロードしたSNMPTTのファイルをサーバーの任意のディレクトリに配置し、展開する。

tar zxvf snmptt_1.5.tgz

展開したファイルに含まれるSNMPTTとSNMPTT handlerの実行ファイルを/usr/sbin/に配置する。

cd snmptt_1.5
cp snmptt /usr/sbin/
chmod +x /usr/sbin/snmptt
cp snmptthandler /usr/sbin/
chmod +x /usr/sbin/snmptthandler

SNMPTT実行用ユーザーsnmptt-rオプションを付けてシステムユーザーとして作成する。

adduser -r snmptt

設定ファイルを/etc/snmpttに配置する。

mkdir /etc/snmptt
chown -R snmptt.snmptt /etc/snmptt
chmod 750 /etc/snmptt
cp snmptt.ini /etc/snmptt/

ログ等を保管するディレクトリを作成する。

mkdir /var/log/snmptt
chown -R snmptt.snmptt /var/log/snmptt
chmod -R 755 /var/log/snmptt
mkdir /var/spool/snmptt/
chown -R snmptt.snmptt /var/spool/snmptt
chmod -R 750 /var/spool/snmptt

systemdに起動用設定ファイルを配置する。

cp snmptt.service /usr/lib/systemd/system/snmptt.service
chmod -x /usr/lib/systemd/system/snmptt.service

ログローテート用の設定ファイルを配置する。

cp snmptt.logrotate /etc/logrotate.d/snmptt

ログローテートの設定ファイルの記載が一部適切ではないので、★箇所を
修正しておく。

# vi /etc/logrotate.d/snmptt

/var/log/snmptt/snmptt*.log /var/log/snmptt/snmptthandler.debug {
    weekly
    notifempty
    missingok
}

/var/log/snmptt/snmptt.debug {
    weekly
    notifempty
    missingok
    postrotate
        /usr/bin/systemctl reload snmptt >/dev/null 2>/dev/null # ←★reloadコマンドを修正
    endscript
}

5. SNMPTT設定

SNMPTTの設定ファイルsnmptt.iniを以下の通り修正する。

# vi /etc/snmptt/snmptt.ini
net_snmp_perl_enable = 1
log_enable = 1
log_file = /var/log/snmptt/snmptt.log
date_time_format = %Y/%m/%d %H:%M:%S
syslog_enable = 0

Trap受信時の出力内容を定義するsnmptt.confファイルを作成する。

# cat << 'EOF' > /etc/snmptt/snmptt.conf
EVENT general .* "General event" Normal
FORMAT ZBXTRAP $aA $*
EOF

SNMPTTを起動させる。

systemctl start snmptt
systemctl enable snmptt
systemctl status snmptt

6. snmptrapd設定

snmptrapdの設定を行う。

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

# vi /etc/snmp/snmptrapd.conf
authCommunity   log,execute,net public
traphandle default /usr/sbin/snmptthandler

snmptrapdを起動させる。

systemctl start snmptrapd
systemctl enable snmptrapd
systemctl status snmptrapd

7. SNMP Trap受信テスト

一度ここでsnmptrapコマンドを用いて、SNMP Trapを送信しておく。

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

SNMP Trap送信後、SNMPTTのログにTrapの内容が出力されていれば問題ない。

# cat /var/log/snmptt/snmptt.log
2024-06-15T12:30:48+0900 .1.3.6.1.6.3.1.1.5.1 Normal "Status Events" localhost - ZBXTRAP  Device reinitialized (coldStart)

8. Zabbixサーバーの設定

Zabbixサーバーは以下設定を変更しておく。

# vi /etc/zabbix/zabbix_server.conf
SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1

変更を反映するため、Zabbixサーバーのサービスを再起動しておく。

systemctl restart zabbix-server

ZabbixにおけるSNMP Trap監視設定

SNMPTTの設定が完了したら、ZabbixのWeb画面にログインし、テンプレート、アイテム、トリガーを設定する。

1. テンプレートを設定

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

2. アイテムを設定

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

3. トリガーを設定

  • 名前:SNMP Trap from {HOST.NAME} : {ITEM.LASTVALUE1}
  • 深刻度:軽度の障害 ※任意の深刻度で設定する
  • 条件式:last(/SNMP Trap/snmptrap[])<>""
  • 障害イベント生成モード:複数
  • 手動クローズを許可:チェック
  • 有効:チェック

4. 監視対象機器に対してテンプレート適用とSNMPインタフェース設定

監視対象機器に対してテンプレート適用とSNMPインタフェース設定を行い監視を有効化する。

5. SNMP Trap受信テスト

再度snmptrapコマンドを用いて、SNMP Trapを送信しておく。

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

Zabbixサーバーの監視画面にて、トリガーによる障害検知がされれば設定は完了となる。

参考

0 件のコメント:

コメントを投稿

人気の投稿