つまずいたこと
datadogでsnmp監視したところ、追加したメトリクスの値が常に0となってしまっていた。
snmp監視の方法は以下を参考に構築した。
DatadogのSNMP Integrationを利用してネットワーク機器を監視する
https://qiita.com/wuitap/items/49fe9e074fddc44d054a
今回参考にしたリンク
Profile Format Reference
https://datadoghq.dev/integrations-core/tutorials/snmp/profile-format/
Metrics Types
https://docs.datadoghq.com/ja/metrics/types/?tab=count
原因
datadogでは、メトリクスタイプを指定することが出来る。基本的には、typeをGaugeにしておけば問題ないが追加したメトリクスはRateになっていた。
ほとんど変化しないメトリクスのため、常に0となっていた。
type | 用途 |
---|---|
Gauge | ある断面で発生した値(基本これになる) |
Counter | イベント発生の合計数 |
Rate | 前回分との差分 |
調査方法
debug logの取得
$ docker exec -it ${container_id} agent check snmp --log-level > snmp.log
$ less snmp.log
取得したlog
2022-03-30 02:04:14 UTC | CORE | TRACE | (pkg/collector/snmp/gosnmp_lib/gosnmp_log.go in Write) | logger_debug.go:13: OID:XXXXXXXXXX
2022-03-30 02:04:14 UTC | CORE | TRACE | (pkg/collector/snmp/gosnmp_lib/gosnmp_log.go in Write) | logger_debug.go:13: decodeValue: msg: value
2022-03-30 02:04:14 UTC | CORE | TRACE | (pkg/collector/snmp/gosnmp_lib/gosnmp_log.go in Write) | logger_debug.go:7: decodeValue: type is Counter64
debug logを見ると、上記のような形でCounter64で表示されていた。datadog内部では以下のように変換されているよう。
SNMP type | Inferred metric type |
---|---|
Counter32 | rate |
Counter64 | rate |
Gauge32 | gauge |
Integer | gauge |
Integer32 | gauge |
CounterBasedGauge64 | gauge |
Opaque | gauge |
修正方法
forced_type: XXX
の形で強制的にtypeを変更する設定を入れる。
metrics:
# CPU
- MIB: CHECKPOINT-MIB
metric_tags:
- column:
OID: 1.3.6.1.4.1.2620.1.6.7.5.1.1
name: multiProcIndex
tag: cpu_core
symbols:
- OID: 1.3.6.1.4.1.2620.1.6.7.5.1.2
name: multiProcUserTime
- OID: 1.3.6.1.4.1.2620.1.6.7.5.1.3
name: multiProcSystemTime
- OID: 1.3.6.1.4.1.2620.1.6.7.5.1.4
name: multiProcIdleTime
- OID: 1.3.6.1.4.1.2620.1.6.7.5.1.5
name: multiProcUsage
table:
OID: 1.3.6.1.4.1.2620.1.6.7.5
name: multiProcTable
- MIB: CHECKPOINT-MIB
symbol:
OID: 1.3.6.1.4.1.2620.1.6.7.2.7.0
name: procNum
# Memory
- MIB: CHECKPOINT-MIB
forced_type: gauge ★
symbol:
OID: 1.3.6.1.4.1.2620.1.6.7.4.3.0
name: memTotalReal64
- MIB: CHECKPOINT-MIB
forced_type: gauge ★
symbol:
OID: 1.3.6.1.4.1.2620.1.6.7.4.4.0
name: memActiveReal64
- MIB: CHECKPOINT-MIB
forced_type: gauge ★
symbol:
OID: 1.3.6.1.4.1.2620.1.6.7.4.5.0
name: memFreeReal64
詳細は公式のサンプルを確認
https://github.com/DataDog/integrations-core/blob/master/snmp/datadog_checks/snmp/data/profiles/checkpoint-firewall.yaml
補足
typeの指定はもっと簡単に確認することが可能だった。。。
Metrics→Summaryで確認ができる。ここからだと、メトリクスの単位(byte,kiobyte,etc)も設定出来るので便利
Metrics Summary
https://docs.datadoghq.com/metrics/summary/