検索すると Lua スクリプトを RTX にいれる方法もあるみたいだが、別途プロキシが必要みたいなので LAN 内の raspberrypi から SNMP で取得して投げるほうを選んでみた。raspberrypi には既に mackerel-agent が入れてあるので、追加の設定をするだけ。
mackerel-agent-plugins
mackerel-agent は arm 版もリリースされているが、プラグインはリリースされていない。自分でビルドする必要がある。
mackerel-plugin-snmp だけあればいいので、mackerel-plugin-snmp のディレクトリで
env GOOS=linux GOARCH=arm GOARM=5 go build
するだけでバイナリができる。できたバイナリを raspberrypi の /usr/local/bin とかにコピーしておく。
設定
SNMP で取得するが、 mackerel の custom_identifier でホスト分けて表示する。
まず mkr create でホストをつくる
mkr --customIdentifier router1 router1
ここで指定した customIdentifier をプラグインの設定に書くとこちらのホストに投稿したことになる。
[plugin.metrics.snmp-router] command = "mackerel-plugin-snmp -community='public' -host='192.168.0.1' .1.3.6.1.2.1.2.2.1.16.1:ifOutOctets.2 .1.3.6.1.2.1.2.2.1.10.1:ifInOctets.2 .1.3.6.1.4.1.1182.2.1.15.0:temp.yrhInboxTemperature .1.3.6.1.4.1.1182.2.1.4.0:memory.yrhMemoryUtil .1.3.6.1.4.1.1182.2.1.5.0:cpu.yrhCpuUtil5sec .1.3.6.1.4.1.1182.2.1.6.0:cpu.yrhCpuUtil1min .1.3.6.1.4.1.1182.2.1.7.0:cpu.yrhCpuUtil5min" custom_identifier = "router1"
SNMP の OID を調べるのがめちゃくちゃ面倒くさいがだいたい上記ぐらいでいいだろう。
この方法の欠点
- cpu やメモリのメトリクスは mackerel で特別扱いされているが、この方法だとすべて snmp.* のメトリクスになってしまう