KUSONEKOの見る世界

NEC IX2215 を Zabbix で監視する

UNIVERGE IX2215をZabbixで監視設定した時のメモです。

IX2215にSNMP設定を追加

IXがSNMPに応答するようにエージェントの設定と、障害発生時にトラップを発生させるように設定をします。

snmp-agent ip enable
snmp-agent ip community public ro
snmp-agent ip host サーバのIP public version 2

テンプレートの準備

テンプレートをダウンロード

以下からZabbixのIX用テンプレートをダウンロードします。

https://share.zabbix.com/network_devices/nec

テンプレート(UNIVERGE_IX.xml)内の以下の赤字を追記します。
Zabbix 5.0.2以降は、v1とv2が統一されたため、この対応は不要な場合があります。

<template>
    <name>Template Module EtherLike-MIB SNMPv2</name>
</template>
<template>
    <name>Template Module Generic SNMPv2</name>
</template>
<template>
    <name>Template Module Interfaces SNMPv2</name>
</template>

追記しないと、Zabbixにインポートした際に、以下のエラーが発生します。

インポートに失敗しました
- Function libxml_disable_entity_loader() is deprecated [conf.import.php:89 → CApiWrapper->__call() → CFrontendApiWrapper->callMethod() → CApiWrapper->callMethod() → CFrontendApiWrapper->callClientMethod() → CLocalApiClient->callMethod() → CConfiguration->import() → CXmlImportReader->read() in include/classes/import/readers/CXmlImportReader.php:39]
- テンプレート"UNIVERGE IX"をインポートできません。リンクされているテンプレート"Template Module EtherLike-MIB SNMP, Template Module Generic SNMP, Template Module Interfaces SNMP"が存在しません。

テンプレートのインポート

Zabbixに修正したテンプレートをインポートします。

[設定]→[テンプレート]→右上の[インポート]から、修正したテンプレート選択し、[インポート]する。

IX2215の登録

ZabbixにIX2215を登録します。

[設定]→[ホスト]→右上の[ホストの作成]をクリックする。
以下を設定し、[追加]をクリックする。

  • [ホスト名]をIXのホスト名
  • [グループ]をTemplates/Network devices
  • [インターフェース]は[追加]をクリックし、SNMPを選択、IXのIPアドレスを入力
    [SNMPバージョン]をSNMPv2
    [SNMPコミュニティ]をpublic

作成したIX2215を選択し、テンプレートタブに移動し、[新規テンプレートをリンク]で、UNIVERGE IXを[選択]し、[更新]する。

登録直後はアイテムなどの数が少ないですが、ディスカバリーが行われるとインターフェースを認識し、アイテムなどが増えます。

Zabbix ディスカバリ前
ディスカバリ前
Zabbix ディスカバリ後
ディスカバリ後

グラフ作成

インターネットのトラフィックをグラフで見られるようにします。

[設定]→[ホスト]→[IX2215]→[グラフ]で、[グラフの作成]をクリック。

名前:GE0
アイテム:
    [追加]をクリック。
    GE0.1、Tun0.0、GE0.0のBits received, Bits sentを選択。
    グラフの形式:線
左下の[追加]をクリック。

IX2215 GE0トラフィック量グラフ
IX2215 GE0トラフィック量グラフ

私の環境では、PPPoEがGE0.1、IPoEがTun0.0、IPv6がGE0.0になり、物理がGE0になっています。

NEC IX2215 を自宅用ルータとして使ってみた

NEC IX2215を自宅用ルータとして購入しました。設定した内容の紹介とRTX810との速度比較、NetMeisterの登録もしています。

IPv6通信のみを考慮する場合

普通なら前述のグラフで十分でしょう。
ここでは、IPv6の通信のみ(IPoEの通信を含まない)を計算するアイテムを作ります。

IPoEはIPv6にトンネリングされGE0.0を通るため、GE0.0のバイト数からでは純粋なIPv6のトラフィック量が分かりません。

よって、GE0.0からTun0.0(IPoE)を引き、更にTun0.0のパケット数からトンネリングで使われたヘッダ分の引くことにしました。
これで、IPv6の通信のみになるはずです。

IPoEで使用したヘッダーサイズを計算

まず、SNMPでTun0.0のユニキャストパケット数を取得します。
これは、他と同じく3分間隔で取得し、以前の値との差分を出します。
パケット数の差分から1秒ごとの値に割り、IPv6のヘッダーサイズ40バイトとビット変換のため、8を掛けています。

[設定]→[ホスト]→[IX2215]→[アイテム]で、[アイテムの作成]をクリック。

名前:Interface Tunnel0.0(): IPoE Header received
タイプ:SNMPエージェント
キー:net.if.in[ifHCInUcastPkts.1208]
式:1.3.6.1.2.1.31.1.1.1.7.1208
※1208の部分はアイテム一覧でTun0.0を確認します
監視感覚:3m (他のアイテムと合わせる)
保存前処理:
    [追加]をクリック。
    1秒あたりの差分を選択
    [追加]をクリック。
    乗数を選択し、320を入力(40*8のため)
左下の[追加]をクリック。

outも側も作成します。

IPv6のみのアイテムを作成

[設定]→[ホスト]→[IX2215]→[アイテム]で、[アイテムの作成]をクリック。

名前:IPv6 Bits received
タイプ:計算
キー:net.if.in[ifHCInOctets.ipv6]
式:last("net.if.in[ifHCInOctets.644]",0) - last("net.if.in[ifHCInOctets.1208]",0) -last("net.if.in[ifHCInUcastPkts.1208]",0)
※GE0.0からTun0.0とIPoEで使用したヘッダーのbpsを引いています。
単位:bps
監視感覚:3m (他のアイテムと合わせる)
左下の[追加]をクリック。

out側も作成します。

積算グラフを作成

PPPoE、IPoE、IPv6のみの値を取得できるようになったため、積算グラフで作成するのも良いでしょう。

[設定]→[ホスト]→[IX2215]→[グラフ]で、[グラフの作成]をクリック。

名前:GE0 受信
グラフのタイプ:積算グラフ
アイテム:
    [追加]をクリック。
    GE0.1、Tun0.0、IPv6のBits received, Bits sentを選択。
左下の[追加]をクリック。

IX2215 GE0トラフィック量積算グラフ
IX2215 GE0トラフィック量積算グラフ

IPv6とIPv4の通信の割合が視覚的に分かるようになりました。