1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Zabbix で YAMAHA ルータを監視する

Posted at

ふと「そういえばネットワーク機器の監視ってやったことないな」となってちょろっと入門してみたメモ。(SNMP, Zabbix ともに初めてなのでかなり初心者っぽい記事になっている。)

0. 用語

SNMP

SNMP (Simple Network Management Protocol) は、ネットワーク機器(ルーター, スイッチ, サーバー など)を監視・管理するための通信プロトコル。デフォルトでは UDP 161 番ポートが使用される。

監視する側を Manager / 監視される側を Agent と呼び、基本的には Manager から Agent に定期的にリクエストを送信してデータを取得したり設定を管理したりするが、機器側で何かしら障害などのイベントが発生した場合は Agent から Manager に対して通知を送信する仕組みもある。(Trap という)

プロトコルのバージョンは主に SNMPv1 / SNMPv2c / SNMPv3 の3種類があり、SNMPv3 では認証と暗号化に対応している。

MIB

MIB (Management Information Base) は SNMP でやりとりされる情報の構造を定義したもの。MIB は木構造だが、各ノードに割り当てられている OID (Object Identifier) によってノードが一意に特定される。例えば OID 1.3.6.1.2.1.1.5.0 は「sysName (機器名)」を意味する。

MIB の構造は RFC で定義されており上記の sysName などは 標準 MIB 領域のノードとして定義されているが、さらに MIB には 拡張 MIB (プライベート MIB) 領域が定められていて各ベンダが独自に構造を定義することができるようになっている。例えば YAMAHA ルータは標準 MIB に含まれない種類のデータを返すことができて、その構造については公式リファレンスと MIB ファイルが公開されている。1

1. YAMAHA ルータの情報を取得できるようにする

自宅にあるルータが YAMAHA NVR700W なので今回はこのデータを取得できるようにしていく。

※ この記事中では、ルータの IP アドレスは 192.168.100.1 で、作業している端末 (MacBook) の IP アドレスは 192.168.100.10 ということにしておく。

YAMAHA ルータの設定

作業端末の IP を指定して SNMPv2c を許可する。2

※ 本当は SNMPv3 でやるのがセキュアで良いのかもしれないが、今回はちょっと触ってみたかっただけなので設定が簡単そうな SNMPv2c にした。

NVR700W のコマンド
snmpv2c host 192.168.100.10 public

snmpwalk してみる

試しに、標準 MIB の受信トラフィック量を表すノード ifInOctets (OID: 1.3.6.1.2.1.2.2.1.10) を snmpwalk コマンドで取得してみる。

※ macOS では snmpwalk コマンドがデフォルトで入っているので何もしなくても使えた。

$ snmpwalk -v 2c -c public 192.168.100.1 1.3.6.1.2.1.2.2.1.10
IF-MIB::ifInOctets.1 = Counter32: 2467833741
IF-MIB::ifInOctets.2 = Counter32: 0
IF-MIB::ifInOctets.3 = Counter32: 4074117545
IF-MIB::ifInOctets.4 = Counter32: 0
IF-MIB::ifInOctets.5 = Counter32: 0
IF-MIB::ifInOctets.6 = Counter32: 0
IF-MIB::ifInOctets.7 = Counter32: 0
IF-MIB::ifInOctets.8 = Counter32: 4264280814
IF-MIB::ifInOctets.9 = Counter32: 0
IF-MIB::ifInOctets.10 = Counter32: 0
(以下略)

.1 .3 .8 が受信トラフィックがあるインタフェースっぽいが、それぞれが何を表しているのか謎...。

2. Zabbix でダッシュボードを作る

SNMP データの収集と可視化は、調べると Prometheus SNMP Exporter で収集して Grafana で可視化する方法がイマドキっぽいようだが、Zabbix を使う方法のほうが手軽そうだったので今回は Zabbix でやってみることにした。今回は試しに触ってみたかっただけなので、各選択肢のメリデメなどはちゃんと比較していない。

Zabbix を立てる

Zabbix は公式で Docker イメージが提供されている3ので、ローカルで試しに動かすだけなら Docker Compose の設定ファイルを書くだけで簡単にできた。

compose.yml
services:

  web:
    image: zabbix/zabbix-web-nginx-pgsql:7.2-alpine-latest
    ports:
      - 8080:8080
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: deadbeef
      ZBX_SERVER_HOST: server
      PHP_TZ: Asia/Tokyo

  server:
    image: zabbix/zabbix-server-pgsql:7.2-alpine-latest
    volumes:
      - zabbix:/var/lib/zabbix
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: deadbeef
      ZBX_ENABLE_SNMP_TRAPS: true

  snmptraps:
    image: zabbix/zabbix-snmptraps:7.2-alpine-latest
    volumes:
      - zabbix:/var/lib/zabbix
    ports:
      - 162:162/tcp
      - 162:162/udp

  postgres:
    image: postgres:17
    volumes:
      - postgres:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: deadbeef

volumes:
  zabbix:
  postgres:

※ SNMP Trap を受信するための zabbix-snmptraps の設定も記述しているが、今回の記事中では Trap を送信する設定までは扱っていない。

docker compose up で起動させたら http://localhost:8080/ にアクセスして、ユーザ名 Admin パスワード zabbix でログインすることができた。

image.png

データを収集する設定

host を追加する。(※ Host name Host groups は適当)

image.png

item として前項でも使用した ifInOctets のうちひとつを取得する設定を追加してみる。

image.png

すこし時間をおいてから Graph をみてみると、無事に取れているっぽい。

image.png

YAMAHA ルータ用の MIB を追加

YAMAHA ルータが提供する拡張 MIB 領域の構造 (MIB ファイル) は公式サイトで公開されている1ので、これを Zabbix に登録してみる。

server コンテナ内で実行するコマンド
$ cd /var/lib/zabbix/mibs/
$ wget http://www.rtpro.yamaha.co.jp/RT/docs/mib/yamaha-private-mib.tar.gz
$ tar xzf yamaha-private-mib.tar.gz
$ rm -f yamaha-private-mib.tar.gz

登録はできたものの、これをやっておくと何が嬉しいのかはまだよくわかっていない。(拡張 MIB データを取得するだけなら OID がわかればできるし)

TODO: 次にやること

今回は時間がなかったので「とりあえず何らかのデータを取得してグラフを出す」だけで終わってしまった。

まだ「監視ダッシュボードを作った」感はないので、やりたいことはまだ色々ある。

  • Zabbix テンプレートを作る
    • 取得するデータ項目の定義
    • グラフの定義
  • Trap を受け取れるようにする
  • ダッシュボードを作る
  • 通知できるようにする
  1. SNMP MIBリファレンス | RTpro - ヤマハ 2

  2. 21.6 SNMPv2c によるアクセスを許可するホストの設定

  3. Zabbix SIA | Docker Hub

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?