はじめに

Buffalo社製のNAS LS720D LinkStationを持っているので、SNMPからメトリクスをPrometheusに収集してGrafanaで可視化したかった。
ただ、メトリクスとして期待するCPU使用率やディスク使用率などは取ることはできないし、SNMPの取得も不安定だったので結局収集を止めている。SNMP Generatorなどの参考になれば

2024/04/01 追記

New RelicでのSNMPによる設定が快適すぎたのでそちらをおすすめします。
この記事ではできていませんが、CPU使用率やメモリ使用率もMIBをちゃんと設定すれば取得できそうですね。

New Relicでメトリクスとログを収集してみた

1. NASでSNMPを有効にする

LinkStationのダッシュボードからSNMPを有効にしておく。
SNMP コミュニティー名を設定する。ここではpublicとしておいた。

LinkStation_SNMP

2. BuffaloからMIBをダウンロードする

TeraStation/LinkStation プライベートMIB

以下の2つのファイルを使用する

  • BUFFALO-NAS-MIB.txt
  • Buffalo.mib.txt

また、SNMPから取得できる情報はmib_readme.txt に記載されているのでよく読んでおくこと

3. SNMP ExporterのGeneratorを使う

prometheus/snmp_exporter

任意の場所で git clone https://github.com/prometheus/snmp_exporter.git しておく

1でダウンロードしたMIBを ./generator/mibs にコピーする

generator.yml を修正する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
---
auths:
  public_v1:
    version: 1
  public_v2:
    version: 2
modules:
  linkstation:
    walk:
      - nasDiskTable

generatorディレクトリにてdockerコンテナを使ってgeneratorを実行する

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

generator/snmp.ymlが作成される

4. SNMP Exporterの設定

任意のディレクトリにsnmp.ymlを配置して、docker-compose.ymlにsnmp-exporterを追加する。
生成したsnmp.ymlはディレクトリマウントでコンテナに渡す。

docker-compose.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  snmp-exporter:
    image: prom/snmp-exporter
    container_name: snmp-exporter
    restart: unless-stopped
    volumes:
      - './snmp-exporter/snmp.yml:/etc/snmp_exporter/snmp.yml'
    expose:
      - 9116
    networks:
      - monitoring

prometheusのjobの設定

prometheus.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
  - job_name: 'linkstation'
    static_configs:
      - targets:
        - <hostname>
    scrape_interval: 1m
    scrape_timeout: 30s
    metrics_path: /snmp
    params:
      auth: [public_v2]
      module: [linkstation]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: snmp-exporter:9116

Grafanaで確認

NASDiskCapacityの値はとれているよう

NASDiskCapacity

一方でNASDiskUsedはとれていない。SNMP.ymlの作り方が悪いからなのか機種が対応していないためか

NASDiskUsed

おわりに

Synology社のNASであればコンテナの起動もできるようで、外部からSNMP、NAS上でNode Exporterを起動してメトリクス収集することもできるみたい。
自宅のLinkStationはNFS非対応だったり、バックアップ先にS3(互換)なども選べないのでちゃんとしたNASを選定しておけばよかったと今更ながら後悔している。安いからありがたいんだけどね。