背景
datadogというSaaSのモニタリングサービスがあります。
エージェントを対象に入れてデータを送るpush型モデルなのですが、ホストの情報だけでなく、様々な方法でメトリクスを取得できるよう担っており、その中にsnmpも存在しています。
ホスト監視のためにエージェントを入れていたので、ついでにネットワーク機器もまとめて監視できると嬉しいなと思い立ちました。
試したこと
https://docs.datadoghq.com/integrations/snmp/ にあることを一通り。
単一メトリック
OIDと名称(任意に指定可能)を指定して取得できます。
テーブル
MIBを用意してMIBとテーブルを指定、さらにテーブルのどれを取得するか選べます。 また、メトリックにテーブル内の値を任意のタグとしてつけることができます。
できなかったこと
OIDを指定したテーブル取得
OIDを利用する場合は、単一メトリックとして、最初に得られた値が利用されます。
他のテーブルの値をテーブルのタグとして利用
わかりやすくいうとifXTableにあるifHCInOctetsにifTableにあるifDescrを利用したいというようなケースです。
この場合はifTableにあるIfInOctetsを利用するか、ifXTableにあるifNameを利用すれば良いのですが、そのほかにも似たようなケースがあり、いい感じのタグがつけられませんでした。
結局どうしたのか。
prometheusのコレクタがあるので、snmp_exporterを利用しました。
datadog側でデータの取得元をsnmp_exporterにして取得する形です。