みなさんこんにちは。マネージドサービス部MSS課の塩野(正)です。
New Relicのネットワーク監視(NPM)について度々話題に取り上げていますが、 NPMサーバで使用しているktranslateの設定ファイル snmp-base.yaml で気になる点がありましたので、 その内容と実際にどのような挙動を示すのか調査した結果を記事にまとめました。
目次
- 目次
- 記事の概要
- 実際の挙動を確認する
- まとめ
- 宣伝
記事の概要
元ネタはこちらになりますが、New Relicのネットワーク監視(NPM)ではICMPやSNMP、Syslog、NetFlowの監視を行うことができます。 その中で、どのデバイスに対してどのようなタイミングで監視をするかという設定を定義する snmp-base.yaml ファイルの記載内容で 各デバイスに対してのポーリングタイミングはglobalセクションとdevicesセクションのどちらでも設定できるようになっています。
で、どちらの設定がどのように監視設定に影響するのかという観点でみると、公式ドキュメントには以下のように記載されていますが、 実際の挙動と公式ドキュメントの内容に差異があるのではないかということで、動作検証をした記事になります。
公式ドキュメントの情報を整理する
公式ドキュメントに記載されているグローバルセクションの poll_time_sec
には以下のような記載がありました。
デバイスをポーリングする時間(秒単位)。これは、 devices.
.poll_time_sec属性を使用してデバイスごとにオーバーライドできます。デフォルトでは、 60に設定されています。
公式ドキュメントに記載されているデバイスセクションの poll_time_sec
には以下のような記載がありました。
SNMPポーリング頻度を秒単位で示します。この設定は、 global.poll_time_sec属性を上書きするために使用されます。
実際の挙動を確認する
globalセクション=devicesセクションで、ping_interval_secを10秒にした場合
ドキュメント上は、最小ポーリングタイミングが30秒となっていることから基本的には30秒以下でポーリングできない認識ですが、実際にできないのか30秒間隔でポーリングするのか試してみました。
snmp-base.yamlの設定
devices: ping_only__10.0.17.52: device_name: ping_only device_ip: 10.0.17.52 provider: kentik-ping ping_only: true ping_interval_sec: 10 global: poll_time_sec: 10 mib_profile_dir: /etc/ktranslate/profiles mibs_db: /etc/ktranslate/mibs.db timeout_ms: 3000
実施結果
想定通り30秒間隔でポーリングしていることがわかりました。 そのため、最短間隔でpingを打ちたい場合は ping_interval_sec を 30 とするのがよさそうです。
globalセクション>devicesセクションにした場合
今度はglobalセクションのping_interval_secをdevicesセクションより大きくしてみました。
設定概要は下記の通り
section name | global | devices |
---|---|---|
ping_interval_sec | 120 (sec) | 60 (sec) |
snmp-base.yamlの設定
devices: ping_only__10.0.17.52: device_name: ping_only device_ip: 10.0.17.52 provider: kentik-ping ping_only: true ping_interval_sec: 60 global: poll_time_sec: 120 mib_profile_dir: /etc/ktranslate/profiles mibs_db: /etc/ktranslate/mibs.db timeout_ms: 3000
実施結果
globalセクションで設定した間隔でポーリングしていることがわかりました。 globalセクションの値は、全体のポーリング間隔の基準ではありますが、より短い方の値を設定するのがよさそうです。
globalセクション<devicesセクションにした場合
今度はdevicesセクションのping_interval_secをglobalセクションより大きくしてみました。
設定概要は下記の通り
section name | global | devices |
---|---|---|
ping_interval_sec | 30 (sec) | 60 (sec) |
snmp-base.yamlの設定
devices: ping_only__10.0.17.52: device_name: ping_only device_ip: 10.0.17.52 provider: kentik-ping ping_only: true ping_interval_sec: 60 global: poll_time_sec: 30 mib_profile_dir: /etc/ktranslate/profiles mibs_db: /etc/ktranslate/mibs.db timeout_ms: 3000
実施結果
動作確認した結果、なんとデータが送信されませんでした! ドキュメント上では、devicesセクションの値で上書きしていると記載されていますが、 下記のdockerのログを見る限り Sending 0 probes となっていることから、ひとつの可能性として送信対象として認識されていないと推測されます。
少なくともSending x probesが0以上の場合はNew Relic側に何らかのデータが送信されており、Sending x probesが0の場合は何度試してもデータ送信されない状況でした。
globalセクション<devicesセクション時のdockerログ
参考)設定値
section name | global | devices |
---|---|---|
ping_interval_sec | 30 (sec) | 60 (sec) |
ktrans-ping | 2025-05-23T08:03:56.695 ktranslate/ [Info] KTranslate monitorMetricsInput Starting ktrans-ping | 2025-05-23T08:03:56.696 ktranslate/ [Info] KTranslate Turning off HTTP server. ktrans-ping | 2025-05-23T08:03:56.696 ktranslate/ [Info] KTranslate do sendToKTranslate Starting ktrans-ping | 2025-05-23T08:03:56.704 ktranslate/ [Info] KTranslate>ping_only Pinger reset to interval: 1m0s, count: 0 ktrans-ping | 2025-05-23T08:03:56.704 ktranslate/ [Info] KTranslate>ping_only snmpPing: First run will be at 2025-05-23 08:04:08.720189445 +0000 UTC. Running every 30s, Sending 0 probes
globalセクション=devicesセクション時のdockerログ
参考)設定値
section name | global | devices |
---|---|---|
ping_interval_sec | 30 (sec) | 30 (sec) |
ktrans-ping | 2025-05-23T08:08:40.613 ktranslate/ [Info] KTranslate monitorMetricsInput Starting ktrans-ping | 2025-05-23T08:08:40.613 ktranslate/ [Info] KTranslate Turning off HTTP server. ktrans-ping | 2025-05-23T08:08:40.613 ktranslate/ [Info] KTranslate do sendToKTranslate Starting ktrans-ping | 2025-05-23T08:08:40.627 ktranslate/ [Info] KTranslate>ping_only Pinger reset to interval: 30s, count: 1 ktrans-ping | 2025-05-23T08:08:40.627 ktranslate/ [Info] KTranslate>ping_only snmpPing: First run will be at 2025-05-23 08:09:03.606450741 +0000 UTC. Running every 30s, Sending 1 probes
globalセクション>devicesセクション時のdockerログ
参考)設定値
section name | global | devices |
---|---|---|
ping_interval_sec | 60 (sec) | 30 (sec) |
ktrans-ping | 2025-05-23T08:10:17.875 ktranslate/ [Info] KTranslate monitorMetricsInput Starting ktrans-ping | 2025-05-23T08:10:17.875 ktranslate/ [Info] KTranslate Turning off HTTP server. ktrans-ping | 2025-05-23T08:10:17.875 ktranslate/ [Info] KTranslate do sendToKTranslate Starting ktrans-ping | 2025-05-23T08:10:17.883 ktranslate/ [Info] KTranslate>ping_only Pinger reset to interval: 30s, count: 2 ktrans-ping | 2025-05-23T08:10:17.883 ktranslate/ [Info] KTranslate>ping_only snmpPing: First run will be at 2025-05-23 08:11:12.224853666 +0000 UTC. Running every 1m0s, Sending 2 probes
おまけ:devicesセクションのping_interval_secを削除した場合
globalセクション<devicesセクションにした場合の状況から、devicesのping_interval_secの値は重要な意味を持つ可能性があるため、 一応devicesセクションに ping_interval_sec がなくても動作するかどうかという観点で確認してみました。
設定概要は下記の通り
section name | global | devices |
---|---|---|
ping_interval_sec | 30 (sec) | N/A |
snmp-base.yamlの設定
devices: ping_only__10.0.17.52: device_name: ping_only device_ip: 10.0.17.52 provider: kentik-ping ping_only: true global: poll_time_sec: 30 mib_profile_dir: /etc/ktranslate/profiles mibs_db: /etc/ktranslat
docker起動時のログ
ktrans-ping | 2025-05-23T08:30:09.143 ktranslate/ [Info] KTranslate monitorMetricsInput Starting ktrans-ping | 2025-05-23T08:30:09.143 ktranslate/ [Info] KTranslate Turning off HTTP server. ktrans-ping | 2025-05-23T08:30:09.143 ktranslate/ [Info] KTranslate do sendToKTranslate Starting ktrans-ping | 2025-05-23T08:30:09.153 ktranslate/ [Info] KTranslate>ping_only Pinger reset to interval: 1m0s, count: 0 ktrans-ping | 2025-05-23T08:30:09.153 ktranslate/ [Info] KTranslate>ping_only snmpPing: First run will be at 2025-05-23 08:30:41.716906999 +0000 UTC. Running every 30s, Sending 0 probes
実施結果
なんとなく起動時のログでその後の状況が推測できてしまうのがアレな感じですが、予想通りデータ送信されませんでした。
まとめ
あくまでも私の検証結果から推察した推奨設定となりますが、ポーリング間隔についてはglobalセクションとdevicesセクションは同じ値を使用し、どちらも値を設定する方がいいのではないかと推測します。 この記事がどなたかのお役に立てれば幸いです。
宣伝
弊社では、お客様環境のオブザーバビリティを加速するためのNew Relicアカウント開設を含めた伴走型のNew Relic導入支援サービスをご提供しております。 もしご興味をお持ちの方は、こちらのお問合せフォームよりお問合せ頂けましたら幸いでございます。