Prometheus で YAMAHA RTX3000 のメトリクスを取得して可視化した
気が付いたら家に YAMAHA RTX3000 が届いた。
諸々の設定を済ませてもりもり働きだしたので、Prometheus でメトリクスを収集して Grafana で可視化したので備忘録。
docker-compose.yml に snmp_exporter を追加する
# version: '3'
volumes:
prometheus_data:
grafana_data:
networks:
prometheus:
services:
:
:
snmp-exporter:
image: prom/snmp-exporter:v0.10.0
container_name: snmp-exporter
volumes:
- /opt/docker/snmp-exporter:/etc/snmp_exporter
networks:
- prometheus
ports:
- 9116:9116
restart: always
:
:
今回は /opt/docker/snmp-exporter
に必要なファイルを設置するため、コンテナの /etc/snmp_exporter
にボリュームをマウントしている。
snmp-exporter の Generator で snmp.yml を生成して設置する
まずは snmp-exporter を git clone してきて、mib ファイルを設置する。
また、YAMAHA はプライベート mib を公開しているので、それも併せてダウンロードして設置する。
# yum install gcc make net-snmp net-snmp-utils net-snmp-libs net-snmp-devel
# git clone https://github.com/prometheus/snmp_exporter.git
# cd snmp_exporter/generator
# go build
# make mibs
# wget http://www.rtpro.yamaha.co.jp/RT/docs/mib/yamaha-private-mib.zip
# unzip yamaha-private-mib.zip
# mv yamaha-* mibs/
# export MIBDIRS=mibs
mib ファイルの設置ができたら、Generator に必要な generator.yml を準備する。
【module name】適当なわかりやすい文字列(今回は rtx3000 )
【walk】取得したいメトリクスたち
【version】SNMP のバージョン( RTX3000 は SNMP v1 にしか対応していない)
【auth】RTX3000 側で設定した認証情報
modules:
rtx3000:
walk:
- yrhCpuUtil5sec
- yrhCpuUtil1min
- yrhCpuUtil5min
- yrfRevision
- yrhInboxTemperature
- yrfUpTime
- yrhMemoryUtil
- ifInOctets
- ifOutOctets
version: 1
auth:
community: public
generator.yml が準備できたら、Generator を実行して snmp.yml を生成しよう。
特にエラーが出なければこんな感じの出力がされる。
# ./generator generate
level=info ts=2020-05-09T15:06:34.262Z caller=net_snmp.go:142 msg="Loading MIBs" from=$HOME/.snmp/mibs:/usr/share/snmp/mibs
level=info ts=2020-05-09T15:06:34.296Z caller=main.go:52 msg="Generating config for module" module=rtx3000
level=info ts=2020-05-09T15:06:34.300Z caller=main.go:67 msg="Generated metrics" module=rtx3000 metrics=9
level=info ts=2020-05-09T15:06:34.301Z caller=main.go:92 msg="Config written" file=/opt/docker/snmp_exporter/generator/snmp.yml
この例だと、 /opt/docker/snmp_exporter/generator/snmp.yml
にファイルが生成されるので、これを docker コンテナにマウントしたディレクトリに配置し、Prometheus の設定ファイルにジョブを追加する。
:
:
- job_name: 'snmp.rtx3000'
static_configs:
- targets:
- 192.168.1.1 # RTX3000
labels:
name: RTX3000
vendor: yamaha
params:
module:
- rtx3000
metrics_path: /snmp
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- source_labels: [type]
target_label: __param_module
- target_label: __address__
replacement: snmp-exporter:9116
:
:
できたらコンテナを立ち上げる。
# docker-compose up -d
無事に立ち上がっていれば、 curl を叩くといい感じなメトリクスが返ってくると思うので、これを使って Grafana のダッシュボードを作成すれば幸せになれそう。
# curl -XGET "http://localhost:9116/snmp?target=<RTX3000 の IP アドレス>&module=rtx3000"
Grafana ダッシュボードを作ってみた
幸せになれた。