ZabbixではSNMPTrapを受信する為にSNMPTTをいれるか、Zabbixに付随するPerlスクリプトを使用するか選ぶ必要がある。今回はperlスクリプトを使用して監視を行う。
⓵ 監視機器が異常を検知
⓶ 監視機器がsnmptrapdにSNMPトラップを送信
⓷ snmp_trap_receiverがsnmptrapdのログを整形、整形したログをsnmptrapperfileに書き出す。
⓸ snmptrapperがsnmptrapperfileを読み込む
⓹ snmptrapperが読み込んだログを監視データとしてDBに登録
構築環境
- CentOS7
- Zabbix 4.0LTS
作業
【Zabbix側作業】
##1.関連パッケージのインストール
SNMPTrap監視で必要なものや、作業で必要なコマンド、snmp_trap_receiver.plで必要なものをyumでインストールしていく。
###1-1 yumコマンドの実施 ※SNMP関連のインストール
# yum install net-snmp net-snmp-libs net-snmp-utils net-snmp-devel net-snmp-perl
###1-2 yを押下しenter
Total download size: 12 M
Is this ok [y/d/N]: y
1-3 yumコマンドの実施 ※コマンド関連のインストール(インストール時に使用)
# yum install bzip2 gzip tar unzip make curl lynx wget ftp gpg patch gcc
1-4 yを押下しenter
Total download size: 26 M
Is this ok [y/d/N]: y
1-5 yumコマンドの実施 ※perl関連のインストール
# yum install perl perl-CPAN perl-YAML perl-Module-Build perl-Time-HiRes
1-6 yを押下しenter
Total download size: 9.5 M
Is this ok [y/d/N]: y
##2.Perlライブラリの初期設定とパッケージの導入
2-1 cpanモジュールの起動 ※初回起動時は設定を行う
# cpan
###2-2 yesを入力し、enter
Would you like to configure as much as possible automatically? [yes] yes
###2-3 enterを押下
What approach do you want? (Choose 'local::lib', 'sudo' or 'manual')
###2-4 下記コマンドを入力し、enter
cpan[1]> install Config::IniFiles
###2-5 cpanから抜ける
cpan[2]> bye
##3.zabbix_trap_receiver.plの導入
3-1 ソースコードを入手する
# wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.2/zabbix-3.2.2.tar.gz
3-2 ダウンロードしたファイルを解凍する
# tar xfvz zabbix-3.2.2.tar.gz
3-3 解凍したファイルを/usr/local/binにコピー
# cp ./zabbix-3*/misc/snmptrap/zabbix_trap_receiver.pl /usr/local/bin/
3-4 コピーしたファイルの権限を変更
# chmod 755 /usr/local/bin/zabbix_trap_receiver.pl
3-4.viでzabbix_trap_receiver.plの中身を下記に変更
# vi /usr/local/bin/zabbix_trap_receiver.pl
【変更前】$SNMPTrapperFile = '/tmp/zabbix_traps.tmp';
【変更後】$SNMPTrapperFile = '/var/log/zabbix/snmptrap.log';
##4.snmptrapdの設定変更
snmptrapdの起動パラメータの設定を行う。
MIBの読み込みとログ出力先ファシリティをlocal 6に変更。
viで/etc/sysconfig/snmptrapdに下記を追加
# vi /etc/sysconfig/snmptrapd
【追加】
OPTIONS="-m +ALL -Ls6 -On -p /var/run/snmptrapd.pid"
5.snmptrapdの動作設定を行う。
viで/etc/snmp/snmptrapd.confに下記を追記
# vi /etc/snmp/snmptrapd.conf
【追加】
authCommunity log,execute,net private
authCommunity log,execute,net public
perl do "/usr/local/bin/zabbix_trap_receiver.pl"
6.rsyslog設定
local 6で受信したログの出力先ファイルを設定
viで/etc/rsyslog.confに下記を追記
# vi /etc/rsyslog.conf
【追加】
# SNMPTrap
local6.* /var/log/snmpd/snmptrap.log
7.ログ出力先ディレクトリ作成
下記にsnmpdフォルダを作成
mkdir /var/log/snmpd
8.Zabbix設定
テンポラリファイルのパスとプロセスの起動数を指定する。
8-1 viで/etc/zabbix/zabbix_server.confを開く
# vi /etc/zabbix/zabbix_server.conf
8-2 下記を変更
【変更前】# SNMPTrapperFile=/tmp/zabbix_traps.tmp
【変更後】SNMPTrapperFile=/var/log/zabbix/snmptrap.log
8-3 下記を変更
【変更前】# StartSNMPTrapper=0
【変更後】StartSNMPTrapper=1
9.空ファイルの作成
先程追加したSNMPTrapperFileにファイルが存在しないとエラーログが出力されるため、
空ファイルを作成。
###9-1 空ファイルの作成
# touch /var/log/zabbix/snmptrap.log
###9-2 作成した空ファイルの権限を変更
# chown zabbix.zabbix /var/log/zabbix/snmptrap.log
10.各種再起動
10-1 rsyslog再起動
# systemctl restart rsyslog.service
10-2 snmptrapd起動
# systemctl start snmptrapd
設定確認(Zabbix作業)
12.SNMPTrapを送信して動作試験を行う。
SNMP Trapの送信
snmptrap -v 2c -c 【コミュニティ名】 127.0.0.1 8640000 .1.3.6.1.6.3.1.1.5.3
13.ログの受信していることを確認
# cat /var/log/zabbix/snmptrap.log
Jun 5 10:48:58 monitor snmptrapd[1109]: NET-SNMP version 5.7.2
10:49:21 2020/06/05 ZBXTRAP 127.0.0.1
PDU INFO:
notificationtype TRAP
version 1
receivedfrom UDP: [127.0.0.1]:33256->[127.0.0.1]:162
errorstatus 0
messageid 0
community public
transactionid 1
errorindex 0
requestid 798136353
VARBINDS:
.1.3.6.1.2.1.1.3.0 type=67 value=Timeticks: (8640000) 1 day, 0:00:00.00
.1.3.6.1.6.3.1.1.4.1.0 type=6 value=OID: .1.3.6.1.6.3.1.1.5.3
#監視設定
最後にZabbix側で受信したデータを検知できるようにテンプレートを作成していく。
14.テンプレートの作成
14-1 「設定」を押下
14-2 「テンプレート」を押下
14-3 「テンプレート作成」を押下