2020.04.17   インフラ

[Zabbix] ゼロから始めるZabbix -snmptrap-

はじめに

NW監視の学習として、監視用ツールとして良く使われている「Zabbix」とネットワーク監視方法で良く使われている「SNMP」と「SNMPTrap」の監視環境を構築をしてみる。それらの内容を数回に分けて掲載していく。
今回はSNMPTrapでL2スイッチ(cisco)の監視環境を構築する。

■掲載内容
1 – ゼロから始めるZabbix -構築-
2 – ゼロから始めるZabbix -SNMP-
3 – ゼロから始めるZabbix -SNMPTrap- (本記事)

SNMPTrapとは

snmptrap.png

SNMPTrapとは、SNMPエージェント(監視対象機器)がSNMPマネージャー(サーバ)に通知を送信する仕組み。パフォーマンスの低下や障害の情報を知ることができる。

SNMPTrap監視の流れ

ZabbixではSNMPTrapを受信する為にSNMPTTをいれるか、Zabbixに付随するPerlスクリプトを使用するか選ぶ必要がある。今回はperlスクリプトを使用して監視を行う。

trap_3.png

構築環境

・Centos 7
・zabbix 4.0 LTS
・上図のようにZabbixサーバとL2スイッチを接続
・L2スイッチはciscoを使用

作業

【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-1 作成した空ファイルの権限を変更
# chown zabbix.zabbix /var/log/zabbix/snmptrap.log

10.各種再起動

10-1 rsyslog再起動
# systemctl restart rsyslog.service

10-2 snmptrapd起動
# systemctl start snmptrapd

【対象機器(ホスト)側作業】
11.監視対象機器のコンフィグを設定する ※NW機器での作業

11-1 特権ユーザでコンフィグモードに移行
 # configure terminal

11-2 下記をコンフィグに追加(トラップの有効化)
 (config)# snmp-server host 【ZabbixサーバIP】 【コミュニティ名】
 (config)# snmp-server enable traps

11-3 コンフィグモードから抜ける
 (config)# exit

11-4 設定を保存する
 # copy running-config startup-config

設定確認(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/snmpd/snmptrap.log
Apr 13 22:14:38 localhost snmptrapd[20280]: 2020-04-13 22:14:38 localhost [UDP: [127.0.0.1]:36759->[127.0.0.1]:162]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (8640000) 1 day, 0:00:00.00#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.6.3.1.1.5.3

14.13で受信したログが整形されていることを確認

# cat /var/log/zabbix/snmptrap.log
01:02:12 2016/12/19 ZBXTRAP 127.0.0.1
PDU INFO:
  notificationtype               TRAP
  version                        1
  receivedfrom                   UDP: [127.0.0.1]:51964->[127.0.0.1]:162
  errorstatus                    0
  messageid                      0
  community                      【コミュニティ名】
  transactionid                  1
  errorindex                     0
  requestid                      1426809208
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側で受信したデータを検知できるようにテンプレートを作成していく。

15.テンプレートの作成

tem1.png

15-1 「設定」を押下
15-2 「テンプレート」を押下
15-3 「テンプレート作成」を押下

15-4 下記項目を入力

項目設定値
テンプレート名任意
表示名任意
グループ任意
説明任意
tem2.png

15-5 「マクロ」を押下

15-6 「継承したマクロとテンプレートマクロ」を押下
15-7 「変更」を押下
15-8 下記項目を入力

項目設定値
{$ SNMP_COMMUNITY} コミュニティ名(任意)

※コミュニティ名は監視対象機器と同じ値にする必要がある

tem3.png

15-9 「追加」を押下

16.アイテムを作成
テンプレートができたので実際に何をするか指示をする為にアイテムを作成する

tem4.png

16-1 追加されたテンプレートを押下する

tem5.png

16-2 「アイテム」を押下
16-3 「アイテムの作成」を押下

16-4 下記項目を入力
ここで全てのSNMPトラップメッセージを拾うように設定
(snmptrap[]のを変えると特定のtrapのみをアラートして出すことが可能)

項目設定値
名前任意
タイプSNMPトラップ
キーsnmptrap[*]
データ型ログ
ログの時間の形式 yyyy/MM/dd hh:mm:ss
説明任意
tem6.png

16-5 「追加」を押下

tem7.png

16-6 アイテムが追加されたことを確認

tem8.png

<参考>下記はL2スイッチでLANケーブルを抜いた際に発生したアラート

おわりに

3回に分けて記事にしたが、今回でZabbixをインストールし、SNMP監視とSNMPTrap監視するところまでが可能になった。あくまで必要最低限の設定で構築をしてきたので、実際に監視をする際は、もっと複雑な設定になっている。今後、現場で生かせるようにZabbixでできることをもっと学習していきたい。

[blogcard url=” https://www.cyberfortress.jp/contact/ “]

参考文献

ZABBIX SNMPTrap設定(zabbix_trap_receiver.pl)
[CentOS7.4] logrotateサービスを入れて日次でログを保存しよう
ZabbixでSNMPTTを利用してSNMPトラップを監視する
Perl trap receiver(zabbix_trap_receiver.pl)を使用したSNMPトラップ監視

Written by CYBERFORTRESS, INC.

サイバーフォートレス CYBERTHREATS TODAY 編集チーム

サイバーフォートレスは、サイバーセキュリティ対策を提供するセキュリティ専門企業です。

セキュリティ対策や、最新のセキュリティ脅威、サイバー攻撃のトレンドなど、当社が研究開発や情報収集した内容をもとに、最新のセキュリティ脅威・セキュリティ対策についてお伝えします。

関連記事

よく読まれている記事