New Relic ネットワーク監視のために KTranslate Docker コンテナを実行している間、コンテナの状態を監視して、潜在的な問題をプロアクティブに検出できます。
KTranslate コンテナ イメージには、実行時に使用できる-tee_logs=true
および-metrics=jchf
設定があり、ヘルス メトリックを New Relic に直接送信できます。これらは、New Relic のガイド付きインストールを介してネットワーク監視をインストールすると、デフォルトで有効になります。ネットワーク監視を手動でインストールする際に設定することをお勧めします。
KTranslate からのログ ヒント Dockerホストからローカルでログを確認する場合は、 docker logs $CONTAINER_NAME
を実行します。たとえば、 docker logs ktranslate-snmp
。
-tee_logs=true
オプションは、デバイスをポーリングするときにログをNewRelicに送信します。それらを表示するには、次の手順を実行します。
one.newrelic.com > All capabilities > Logs に移動します。Find logs where にcollector.name:"ktranslate"
と入力し、 Query logs をクリックします。一般的なログ検索 以下は、トラブルシューティングの際に、サポートのためのデータ収集に使用できる一般的な検索方法です。
実行している KTranslate のバージョンは? Logs UIです。
$ collector.name: "ktranslate" message: "*KTranslate Running -- Version*"
NRQL。
FROM Log SELECT * WHERE ` collector.name ` = 'ktranslate' AND ` message ` LIKE '%KTranslate Running -- Version%'
期待される成果
$ KTranslate Running -- Version kt-2021-12-06-1546870234 ; Build Mon Dec 6 22 :22:56 UTC 2021
実行時にDockerに渡された引数は? Logs UIです。
$ collector.name: "ktranslate" message: "*KTranslate CLI:*"
NRQL。
FROM Log SELECT * WHERE ` collector.name ` = 'ktranslate' AND ` message ` LIKE '%KTranslate CLI:%'
期待される成果
$ KTranslate CLI: [ ktranslate -listen off -mapping /etc/ktranslate/config.json -geo /etc/ktranslate/GeoLite2-Country.mmdb -udrs /etc/ktranslate/udr.csv -api_devices /etc/ktranslate/devices.json -asn /etc/ktranslate/GeoLite2-ASN.mmdb -log_level info -snmp /snmp-base.yaml -nr_account_id = 2583772 -log_level = info -metrics = jchf -tee_logs = true -service_name = snmp nr1.snmp ]
どのようなエラーが発生していますか? ログに解析ルールが適用されていない場合
Logs UIです。
$ collector.name: "ktranslate" message:-* \ [ Info \ ] *
NRQL。
FROM Log SELECT * WHERE ` collector.name ` = 'ktranslate' AND ` message ` NOT LIKE '%[Info]%'
ログに解析ルールを適用した場合
Logs UIです。
$ collector.name: "ktranslate" severity:- "Info"
NRQL。
FROM Log SELECT * WHERE ` collector.name ` = 'ktranslate' AND ` severity ` != 'Info'
期待される成果
$ KTranslate > cisco-7513 There was an SNMP polling error with the CustomDeviceMetrics walking OID .1.3.6.1.2.1.4.31.1.1.21 after 0 retries: request timeout ( after 0 retries ) .
ヒント KTranslate のログ重大度レベルは次のとおりです: Info
、 Warn
、およびError
。
私のデバイスでは、match_attributesフィルターは機能していますか? Logs UIです。
$ collector.name: "ktranslate" message: "*Match Attribute*"
NRQL。
FROM Log SELECT * WHERE ` collector.name ` = 'ktranslate' AND ` message ` LIKE '%Match Attribute%'
期待される成果
$ KTranslate > cisco-7513 Added 1 Match Attribute ( s )
すべてのデバイスには、デフォルトのmonitor_admin_shut: true
構成から継承された少なくとも1つの一致属性が必要です。単一の一致属性を追加したデバイスには、 2
の値が表示されることを期待する必要があります。
ヒント クエリにデバイス名を追加することで、これらの結果をさらにフィルタリングできます: collector.name:"ktranslate" message:"*$DEVICE_NAME*Match Attribute*"
。
KTranslate からのメトリック -metrics
オプションは、デバイスをポーリングするときに次のパフォーマンスメトリックをキャプチャします。
メトリック
グラニュラリティ
説明
baseserver_healthcheck_execution_total
トップレベル
内部ヘルスチェックの割合。ほとんどの場合、物事がデッドロックしていないことを示しており、常に0より大きくなければなりません。
inputq
トップレベル
すべてのSNMP、Flow、VPCの入力を合わせて、過去60秒間に受信した1秒あたりのメッセージ数(msg/sec)。
jchfq
トップレベル
事前に割り当てられた利用可能なバッファの数でレートを測定します。約8,000のはずです。
delivery_metrics_nr
NewRelicへの配信
New Relicへのすべてのメトリックについて、過去60秒間に送信された1秒あたりのバッチ数(バッチ/秒)。
delivery_logs_nr
NewRelicへの配信
New Relicへのすべてのログについて、過去60秒間に送信された1秒あたりのログ数(logs / sec)。
delivery_wins_nr
NewRelicへの配信
メトリックとイベントをNewRelicに送信してから過去60秒間に受信した200のHTTPコードの1秒あたりの勝ち数(wins / sec)。
device_metrics
SNMP
デバイスレベルのメトリクスに対する過去60秒間のSNMPポーリングのPolls per Second(polls/sec)。
interface_metrics
SNMP
インターフェースレベルのメトリクスに対する過去60秒間のSNMPポーリングの1秒あたりのポール数(polls/sec)。
snmp_fail
SNMP
SNMPポーリングがdevice_name
によってファセットされて機能しているかどうかを監視するゲージ。ここで、1は良いことを意味し、2は失敗することを意味します。
netflow.flows
ネットフロー
すべてのデバイスのフローデータについて、過去60秒間に受信した1秒あたりのフロー(fps)。IPFIX、NetFlow、sFlowのいずれか。
syslog_queue
Syslog
処理されるのを待っているsyslogメッセージのゲージ。
syslog_errors
Syslog
syslogメッセージを処理している間の、過去60秒間の1秒あたりのエラー数(errors/sec)。
syslog_messages
Syslog
全syslogデータの過去60秒間に受信した1秒あたりのメッセージ数(msg/sec)。
一般的な測定基準の検索 New Relicでこれらの指標を確認するには:
one.newrelic.com > All capabilities > Query your data に移動します。以下のNRQLクエリのいずれかを入力してください。 KTranslate アプリケーションの現在のバージョンは何ですか? latest ( ver ) AS 'image_version'
FACET host AS 'docker_host' , svc AS 'container_service'
WHERE provider = 'kentik-agent'
AND instrumentation . name = 'heartbeat'
KTranslate アプリケーションの正常性はどの程度ですか? latest ( kentik . ktranslate . chf . kkc . baseserver_healthcheck_execution_total ) AS 'healthcheck_total' ,
latest ( kentik . ktranslate . chf . kkc . inputq ) AS 'input_per_second' ,
latest ( kentik . ktranslate . chf . kkc . jchfq ) AS 'buffer'
FACET host AS 'docker_host' , svc AS 'container_service'
WHERE provider = 'kentik-agent'
AND instrumentation . name = 'heartbeat'
New Relicへの配信の状態はどうですか? latest ( kentik . ktranslate . chf . kkc . delivery_metrics_nr ) AS 'delivery_metric_batches_per_second' ,
latest ( kentik . ktranslate . chf . kkc . delivery_logs_nr ) AS 'delivery_logs_per_second' ,
latest ( kentik . ktranslate . chf . kkc . delivery_wins_nr ) AS 'delivery_wins_per_second'
FACET host AS 'docker_host' , svc AS 'container_service'
WHERE provider = 'kentik-agent'
AND instrumentation . name = 'heartbeat'
SNMPコレクション全体の状態はどうですか? latest ( kentik . ktranslate . chf . kkc . device_metrics ) AS 'device_polls_per_second' ,
latest ( kentik . ktranslate . chf . kkc . interface_metrics ) AS 'interface_polls_per_second'
FACET host AS 'docker_host' , svc AS 'container_service'
WHERE provider = 'kentik-agent'
AND instrumentation . name = 'heartbeat'
SNMPの収集に失敗している機器は? latest ( kentik . ktranslate . chf . kkc . snmp_fail ) AS 'snmp_fail'
FACET host AS 'docker_host' , svc AS 'container_service' , device_name AS 'snmp_device'
WHERE provider = 'kentik-agent'
AND instrumentation . name = 'heartbeat'
FACET docker_host , container_service , snmp_device
私のフローデータ収集の健康状態はどうですか? max ( kentik . ktranslate . chf . kkc . netflow ) AS 'flows_per_second'
FACET host AS 'docker_host' , svc AS 'container_service' , device_name AS 'flow_device'
WHERE provider = 'kentik-agent'
AND instrumentation . name = 'heartbeat'
私のsyslogコレクションの健康状態はどうですか? latest ( kentik . ktranslate . chf . kkc . syslog_queue ) AS 'syslog_queue_total' ,
latest ( kentik . ktranslate . chf . kkc . syslog_errors ) AS 'syslog_errors_per_second' ,
latest ( kentik . ktranslate . chf . kkc . syslog_messages ) AS 'syslog_messages_per_second'
FACET host AS 'docker_host' , svc AS 'container_service'
WHERE provider = 'kentik-agent'
AND instrumentation . name = 'heartbeat'