New Relic NPM(NetworkPerformanceMonitoring)ではSNMPモニタリングを行っている機器からのsyslog データを受信することができます。
これによってネットワーク機器のリソース情報だけで無くLog情報を一元的に確認し、ネットワーク機器の問題を素早く特定することができる可能性が高まります。
New Relic NPMのSyslogモニタリングはインターネット上のエンドポイントに対してLogを送る方式ではなく、ktranslateコンテナをSyslogサーバーとして設定する方式ですので、IPアドレスによるSyslogサーバー指定しかできないネットワーク機器でも利用することができます。
最新の設定方法はドキュメントをご確認ください。
ネットワーク機器設定
ネットワーク機器でリモートのSyslogサーバーに対してLogを送信するように設定を行います。このときの送信先としてktranslate コンテナのIPアドレスを指定します。
ネットワーク機器の設定方法はお使いのネットワーク機器のマニュアルをご確認ください。
New Relic ドキュメントではいくつかのネットワーク機器マニュアルへのリンク集として提供しています。
注意
ktranslateのデフォルトのSyslogリッスンポートは5143(TCP/UDP)となっています。
一般的なsyslogポートである514(またはその他のポート)を使用する必要がある場合は、Dockerランタイムの起動オプションでリッスンポートを指定/変更することが可能です。
リッスンポートを指定するオプションは以下のように指定します。
-syslog="0.0.0.0:514"
ktranslateでSyslogモニタリングを行う際に必要なポートは次の通りです。
※Inbound のポートは上記のコマンドで変更することが出来ます。
通信方向 |
ソース |
宛先 |
Port |
Protocol |
---|---|---|---|---|
Outbound |
Docker host |
443 |
TCP |
|
Outbound |
Docker host |
|
443 |
TCP |
Inbound |
ネットワーク機器 |
Docker host |
5143 (デフォルト) |
UDP |
自動設定方法
- 画面右上の [+ Add more data]をクリックします。
- Network performance monitoring から[Syslog]を選択します。
- デバイスとSyslogDataをマッピングする方法を選択します。
- Manually add を選択した場合はデバイスリストを作成します。
- 表示されたDockerコマンドを実行してコンテナを配置します。
- コンテナの準備が出来たらNetwork機器のSyslog設定を行えばSyslogデータが連携されます。
手動での設定方法
ktranslate コンテナでのSyslogリッスン有効化設定
1. DockerがインストールされているLinuxホストでdockerhubからktranslateイメージをダウンロードします。
docker pull kentik/ktranslate:v2
2. snmp-base.yaml
ファイルを$HOME
Dockerユーザーのローカルディレクトリにコピーし、実行してコンテナを破棄します。
cd .
id=$(docker create kentik/ktranslate:v2)
docker cp $id:/etc/ktranslate/snmp-base.yaml .
docker rm -v $id
3. snmp-base.yaml
ファイルで、devices
セクション内にネットワーク syslog デバイスを追加します。devices
セクションの書式は以下のサンプルを参考にしてください。
devices:
syslogDevice:
device_name: edge-router
device_ip: 10.10.1.254
# Optional user tags
user_tags:
owning_team: net_eng
environment: production
Tips
syslogデータを収集したいネットワーク機器がSNMPデバイスとして既に登録されている場合snmp-base.yamlファイルに2つめの機器として追加をする必要はありません。
SNMPpollingを行わず、Syslogモニタリングだけを行いたい場合は
ping_only: true
オプションを追記することでSyslogデータだけを集取するように設定する事もできます。
4. ktranslate を実行して、ネットワーク syslog をリッスンします。
docker run -d --name ktranslate-syslog --restart unless-stopped --net=host \
-v `pwd`/snmp-base.yaml:/snmp-base.yaml \
-e NEW_RELIC_API_KEY=$YOUR_NR_LICENSE_KEY \
kentik/ktranslate:v2 \
-snmp /snmp-base.yaml \
-nr_account_id=$YOUR_NR_ACCOUNT_ID \
## If your account is located in Europe, add the following option:
## -nr_region=EU \
-metrics=jchf \
-tee_logs=true \
-service_name=syslog \
## Optional: To override the default listening port of "0.0.0.0:5143":
## -syslog="<ip_address>:<port>"
nr1.syslog
ktranslateは、RFC3164、RFC5424、またはRFC6587に準拠した形式のSyslogデータを扱う事ができます。
5. ktranslateを経由して集取されたSyslogデータはNew Relic One logs UI で確認することが出来ます。
New Relic One Logs UIで以下のクエリを実行することで、ネットワークSyslogをフィルタすることができます。
"plugin.type":"ktranslate-syslog"
まとめ
New Relic NPMではSNMPによりネットワーク機器の性能をモニタリングし
NetFlowによってどのようにネットワークが利用されているのかを可視化します。
そして、Syslogによってネットワーク機器のLogモニタリングを行う事によって、ネットワーク機器の異常を詳細に確認することが出来るようになります。
是非ネットワーク機器のSyslog設定を有効化し、ネットワークObservabilityを高めてください。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。