こんにちは。先日購入したIX2215のメトリクスをGrafanaで確認したくなったので、やってみました。

PrometheusとGrafanaについてはDockerコンテナで動かしています。

事前準備

PrometheusとGrafanaの構築は事前に行っておいてください。

手順

今回は以下の手順を行います。

  • IXのSNMPを有効化
  • snmp_exporterを利用してsnmpwalkの情報をPrometheusに投げる
  • Prometheusの設定
  • Grafanaダッシュボードの作成

IX2215のSNMPを有効にする

コンソールケーブルなどでIXに接続して、コンフィグモードから以下のようにコマンドを発行します。

1
2
RT-ix2215(config)# snmp-agent ip enable
RT-ix2215(config)# snmp-agent ip community public ro

一行目でsnmpとsnmptrapの両方を有効化しています。

二行目ではpublicという読み取り専用のコミュニティを設定しました。

IXで行う設定はこれだけです。

snmp_exporterを用意する

snmp_exporterはGitHubで公開されているため、手元にクローンします。

generatorというディレクトリに移動してmibをダウンロードします。

1
2
3
$ git clone [email protected]:prometheus/snmp_exporter.git
$ cd generator
$ make mibs

もしmakeで失敗する場合は、以下のパッケージをインストールします。

1
2
$ sudo apt update -y
$ sudo apt install unzip build-essential libsnmp-dev

mibのダウンロードに失敗する場合は、makefileを編集していらないものはDLしないようにしてください。

snmp.ymlを生成する

先ほどのディレクトリのまま、以下のコマンドでsnmp.ymlを生成します。

1
$ docker run -it -v "${PWD}:/opt/" prom/snmp-generator generate

実行するとディレクトリにsnmp.ymlが生成されていると思います。

Docker Composeでsnmp-exporterを構築する

以下のようなdocker-compose.ymlを用意します。

先ほど作成したsnmp.ymlをコンテナ内で利用できるようにマウントしておいてください

今回の例ではdocker-compose.ymlと同じディレクトリに移動しておきました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
version: '3'

services:
  prometheus:
    image: prom/prometheus
    # 省略
  snmp:
    image: prom/snmp-exporter
    container_name: snmp_exporter
    volumes:
      - './snmp.yml:/etc/snmp_exporter/snmp.yml' # snmp.ymlをマウント
    ports:
      - "9116:9116"

prometheus.ymlを編集する

prometheus.ymlに以下のようなjobを追加します。

IXのIPアドレスやexporterのIPアドレスを指定するところは環境に合わせて変更してください。

前項ではPrometheusとexporterを同一のdocker-compose.ymlで起動しました。そのため、exporterのIPアドレスにcomposeのサービス名を指定します。

それ以外の場合はexporterが起動しているマシンのIPアドレスを指定しましょう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
scrape_configs:
  - job_name: 'snmp_nec_ix'
    static_configs:
      - targets:
        - 192.168.10.254  # IXのIP
    metrics_path: /snmp
    params:
      module: [nec_ix]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: snmp:9116 # 同一composeファイルで起動する場合はサービス名を指定

編集後はdocker compose up -dなどで起動しておいてください。

Grafanaのダッシュボードを編集する

Grafanaのdashboardsを検索したところ、NEC IXシリーズ向けに公開しているテンプレートはなさそうなので自分で作ります。

1
{job="snmp_nec_ix"}

こんな感じでjobを指定すれば値がたくさん表示されるので、ほしい情報を抜き取って好きなダッシュボードを作成してください。

おわりに

NetMeisterなどで情報を確認するのも良いですが、やはり自分でカスタマイズできたほうが便利ですね。

なによりかっこいい😎