見出し画像

【ZABBIX】Zabbix4系とCentOS 7系でSNMP Trap監視する

 こんにちは〜インフラエンジニアのtamolabです!
今回はZBBIXとSNMPを利用したシステム監視について監視するまでの構築手順を書きたいと思います。Zabbixでネットワーク機器などZabbix agentがインストールできない機器、いわゆるエージェントレスな監視を行う際に、SNMP trapのOIDをmibファイルから解決してアラートと検知できるようにしたいというモチベーションです。

1. 動作環境説明

画像1

 Zabbixに必要なコンポーネント(Webインターフェース、zabbix-server、Database)は事前に導入して、基本的にzabbixが利用できる状態からスタートします。

# OSとバージョン確認
$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

# Zabbix-serverのバージョン確認
$ zabbix_server -V
zabbix_server (Zabbix) 4.0.11

# Apacheのバージョン確認
$ httpd -v
Server version: Apache/2.4.6 (CentOS)

# PHPのバージョン確認
$ php -v
PHP 5.4.16 (cli)

2. 環境の準備

画像2

zabbix serverのコンフィグファイルにSNMP trapを有効にする設定と、ログファイルの場所をしているす箇所があるので編集していきます。

# fileの編集$ sudo vi /etc/zabbix/zabbix_server.conf
# 以下の行を追記
$ sudo vim /etc/zabbix/zabbix_server.conf

#以下の行を追記
SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1

# zabbix-serverプロセスの再起動
$ sudo systemctl restart zabbix-server 

3. snmptt, snmptrapdインストール

画像3

パッケージをインストールしていきます。

$ sudo yum install net-snmp-utils
$ sudo yum install net-snmp-perl
$ sudo yum install perl
$ sudo yum install perl-Net-SNMP
$ sudo yum install perl-Config-IniFiles
$ sudo yum install perl-Module-Build
$ sudo yum install perl-Time-HiRes

完了したら、SNMPTTユーザを追加します。

$ sudo useradd -s /sbin/nologin snmptt

次に、SNMPTTパッケージをインストールします。

$ sudo cd /usr/src/

# パッケージのダウンロード
$ sudo wget https://sourceforge.net/projects/snmptt/files/snmptt/snmptt_1.4/snmptt_1.4.tgz/download

# ダウンロードしたtarファイルの展開
$ sudo tar xvzf snmptt_1.4.tgz

# 必要ファイルのコピー
$ sudo cd snmptt_1.4
$ sudo cp snmptt /usr/sbin/
$ sudo cp snmptthamdler /usr/sbin/
$ sudo cp snmptt.ini /etc/snmp/
$ sudo cp snmpttconvertmib /etc/snmp/

# コピーしたファイルの権限(パーミッション)変更
$ sudo chmod 755 /usr/sbin/snmptt
$ sudo chmod 755 /usr/sbin/snmptthandler
$ sudo chmod 755 /usr/sbin/snmpttconvertmib

4. snmptt, snmptrapdのセットアップ

画像4

パッケージのインストールが完了したら、ログディレクトリとspoolディレクトリの追加して、所有者を変更します。

# snmpttログディレクトリの追加と所有者の変更
$ sudo mkdir /var/log/snmptt/
$ sudo chown nmptt:snmptt /var/log/snmptt/

# spoolディレクトリの追加と所有者の変更
$ sudo mkdir /var/spool/snmptt/
$ sudo chown nmptt:snmptt /var/spool/snmptt/

ここは任意の設定ですが、ログローテとの設定をします。場合によってはかなりのログ量になるのでローテートしておきましょう。

$ sudo cp snmptt.logrotate /etc/logrotate.d/snmptt

次は、snmpt.confの設定を変更します。これはmibで解決できないOIDを受信した際に文字整形するための設定です。

# file 編集$ sudo vi /etc/snmp/snmptt.conf

$ sudo vim /etc/snmp/snmptt.conf
# 下記を追記
EVENT general .* "General Events" Normal
FORMAT ZBXTRAP $aA Unknown

上記を設定しておくことで、解決できないOIDを受信した時に下記のように文字を整形することができます。$aAにはいろんな値が代入されます。

08:00:45 2020/06/03 <未解決のOIDが記載される> Normal "General Events" - ZBXTRAP Unknown

snmptrapd.confを編集してサービス起動(または再起動)を行います。

$ sudo vim /etc/snmp/snmptrapd.conf
# 下記を追加します。
traphandle default /usr/sbin/snmptthandler
disableAuthorization yes

# プロセスの起動(既に動いている場合は停止してから起動)
$ sudo systemctl stop snmptrapd
$ sudo systemctl start snmptrapd

snmptt.iniを変更して、サービス起動を行います。

$ sudo vim cat /etc/snmp/snmptt.ini
# 下記を追記
mode = daemon

net_snmp_perl_enable = 1

net_snmp_perl_best_guess = 2

sleep = 5

DEBUGGING = 0

multiple_event = 0

date_time_format = %H:%M:%S %Y/%m/%d

DEBUGGING_FILE = /var/log/snmptt/snmptt.debug

DEBUGGING_FILE_HANDLER = /var/log/snmptt/snmptthandler.debug

# サービスの起動
$ sudo systemctl start snmptt

5. テスト

画像5

ここまでで一度テストしてみましょう。

# 擬似TRAPファイルを自分自身に送信する。
$ sudo snmptrap -v 2c -c test 127.0.0.1 '' .1.1.1 .1.1.1 s "任意文字列"

# ログの確認
$ cat /var/log/snmptt/snmptt.log
09:52:54 2020/06/03 .1.1.1 Normal "General Events" localhost - ZBXTRAP 127.0.0.1 Unknown

自分自身(127.0.0.1)からOID(.1.1.1)が送信されてきたが、mib解決できない(知らないOID)であったため、/etc/snmp/snmptt.confで記載したように"General Event"で整形されていることが確認できます。

ここまでで、SNMP trapを受信できるようになりました。
あとは監視対象マシンでサーバに向けてSNMP trapの送信の設定をすれば、zabbixでtrapを受けることができます。zabbixのトリガーやアイテムの設定をすればこの/var/log/snmptt/snmptt.logの文字列を監視することができますね。

6. キーワード

画像6

#CentOS #zabbix #snmp # snmptrap #監視ツール #IT #mib

7. お問い合わせ

画像7

 本投稿のコメントでも構いませんし、下記からお問い合わせいただいても大丈夫です。
 note.tamolab@gmail.com

サポートをお願いいたしますmm もしXXXXな記事を書いて欲しい、XXXXな記事は不適切だなどのご要望がありましたら、お知らせください!