2021年4月25日日曜日

ZabbixでSNMPを使ってネットワーク機器のトラフィック量を取得する

ZabbixではSNMPを使って機器を監視する機能があり、特にネットワーク機器ではトラフィック量などを取得する場合に便利な機能となる。

今回は仮想ネットワークOSであるVyOSに対して、ZabbixからSNMPによる監視設定を行い、各インタフェースに発生しているトラフィック量をグラフで表示させる手順を記載する。

環境

  • Zabbix 5.0.10
  • VyOS 1.3

手順

1. 取得対象機器でSNMPを有効化

ZabbixでSNMPによる監視を実施するために、事前に監視対象機器にてSNMPの有効化を行う。

今回はVyOSの監視設定となるので、対象のVyOSにて以下の通り設定を行う。community名「public」をread-onlyで設定している。

# show service snmp
 community public {
     authorization ro
 }
 trap-source 192.168.11.33
 trap-target 192.168.11.24 {
     community public
 }

2. snmpwalkによるSNMP情報取得確認

取得対象スイッチ側で、SNMPを使って情報取得ができることを事前に確認しておく。ZabbixのOSにログインし、snmpwalkコマンドで確認すればよい。snmpwalkの使い方は以下の通り。

snmpwalk -v 2c -c <SNMP community名> <対象機器のIPアドレス>

snmpwalkを実行すると大量の情報が表示される。もし表示されないようであれば、情報取得対象の設定やコミュニティ名が誤っているなどが考えられるため、設定を確認しよう。

試しに私の環境でsnmpwalkすると以下のような表示結果となる。

# snmpwalk  -v 2c -c public 192.168.33.33
SNMPv2-MIB::sysDescr.0 = STRING: VyOS 1.3-rolling-202012311144
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.44641
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (10170228) 1 day, 4:15:02.28

~(中略)~

IF-MIB::ifNumber.0 = INTEGER: 3
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: VMware VMXNET3 Ethernet Controller
IF-MIB::ifDescr.3 = STRING: VMware VMXNET3 Ethernet Controller

~(中略)~

SNMPv2-SMI::mib-2.207.1.2.5.1.12.2.10.1 = Timeticks: (0) 0:00:00.00
SNMPv2-SMI::mib-2.207.1.2.5.1.12.3.10.1 = Timeticks: (0) 0:00:00.00
SNMPv2-SMI::mib-2.207.1.2.5.1.13.2.10.1 = Gauge32: 1000
SNMPv2-SMI::mib-2.207.1.2.5.1.13.3.10.1 = Gauge32: 1000

4. SNMP監視用のテンプレート「Template Module Interfaces Simple SNMPv2」を複製

SNMP機器の監視には、あらかじめZabbixに用意されている「Template Net Network Generic Device SNMPv2」を利用する。ただし、一部修正が必要となるため、本テンプレートを複製したのち修正を行うことにする。

「テンプレート」から「Template Module Interfaces Simple SNMPv2」を選択し、「すべて複製」を選択し、テンプレートを複製する。

今回は「Template Module Interfaces Simple SNMPv2 SNMPINDEX」という名称で複製を作成した。

5. ディスカバリルールのアイテムとグラフの名前を修正

「Template Module Interfaces Simple SNMPv2」をVyOSのような仮想ネットワークOSに対して適用すると、ディスカバリルールにて、以下エラーメッセージが表示される。

Cannot create graph: graph with the same name "Interface VMware VMXNET3 Ethernet Controller: Network traffic" already exists.

これは、SNMPのifDescrの値が重複しており、アイテムやグラフの名前が重複し作成に失敗したことを示すエラーとなる。エラーとなった場合は、情報が正しく取得・表示ができないので、修正対応を行う。

複製したテンプレートの「ディスカバリルール」にて、「Network interfaces discovery」を選択する。

ここで表示される「アイテムのプロトタイプ」と「グラフのプロトタイプ」にて、以下の通りアイテムとグラフの名前にifIndexの番号となる{#SNMPINDEX}を付与する。ifIndexはインタフェース毎に連番となり重複しないため、ifDescrが重複したとしても、異なるアイテム、グラフが作成される

Interface {#IFDESCR}: XXXX
   ↓
Interface {#IFDESCR} {#SNMPINDEX}: XXXX

▼アイテムのプロトタイプ


▼グラフのプロトタイプ


なお、普通のスイッチであればifDescrが重複することはないと思われる。例えばCiscoスイッチであれば、”GigabitEthernet 0/0”といった値で表示される。

6. 「Template Net Network Generic Device SNMPv2」のテンプレートを修正

「Template Net Network Generic Device SNMPv2」のテンプレートから「Template Module Interfaces Simple SNMPv2」を削除し代わりに複製した「Template Module Interfaces Simple SNMPv2 SNMPINDEX」を追加する。

7. ホストにSNMPインタフェースを設定

「設定」→「ホスト」にて監視対象ホストを選択し、「SNMPインターフェース」の箇所に、IPアドレスとポート番号(通常は161)を設定する。

8. ホストにテンプレートをリンク

ホストの設定のテンプレートに「Template Net Network Generic Device SNMPv2」を追加する。

1時間ほど待つと、特にエラーもなくSNMP情報の取得に成功するはずだ。取得されたインターフェースのトラフィック量は、グラフにて確認できる。MRTGなどと同じように、Incoming traffic (ポートから見て入力方向)とOutgoing traffic (ポートから見て出力方向)が一つのグラフで表示されるという一般的なものであり、他の監視ソフトを使っている人であっても違和感はないだろう。

以上で設定は完了となる。

VyOSの仕様によりテンプレートの修正対応が必要だったが、普通のスイッチであれば、ホストを登録し「Template Net Network Generic Device SNMPv2」のテンプレートをリンクするだけで設定が完了する。このようにZabbixでは、非常に簡単にネットワーク機器の監視が実現できる。

更新履歴

  • 2017/9/14 新規作成
  • 2021/4/25 Zabbix 5.0の環境に合わせて全面刷新

0 件のコメント:

コメントを投稿

人気の投稿