New Relic NPMでのSyslogモニタリング

ktranslate でのsyslogデータ受信

公開済み Updated 所要時間:約 8分

New Relic NPM(NetworkPerformanceMonitoring)ではSNMPモニタリングを行っている機器からのsyslog データを受信することができます。

これによってネットワーク機器のリソース情報だけで無くLog情報を一元的に確認し、ネットワーク機器の問題を素早く特定することができる可能性が高まります。

New Relic NPMのSyslogモニタリングはインターネット上のエンドポイントに対してLogを送る方式ではなく、ktranslateコンテナをSyslogサーバーとして設定する方式ですので、IPアドレスによるSyslogサーバー指定しかできないネットワーク機器でも利用することができます。

最新の設定方法はドキュメントをご確認ください。

ネットワーク機器設定

ネットワーク機器でリモートのSyslogサーバーに対してLogを送信するように設定を行います。このときの送信先としてktranslate コンテナのIPアドレスを指定します。

ネットワーク機器の設定方法はお使いのネットワーク機器のマニュアルをご確認ください。

New Relic ドキュメントではいくつかのネットワーク機器マニュアルへのリンク集として提供しています。

-syslog="0.0.0.0:514"

ktranslateでSyslogモニタリングを行う際に必要なポートは次の通りです。

※Inbound のポートは上記のコマンドで変更することが出来ます。

通信方向

ソース

宛先

Port

Protocol

Outbound

Docker host

ktranslate image on Docker Hub

443

TCP

Outbound

Docker host

New Relic Log API endpoint:

  • US Endpoint:

    https://log-api.newrelic.com

  • EU Endpoint:

    https://log-api.eu.newrelic.com

443

TCP

Inbound

ネットワーク機器

Docker host

5143 (デフォルト)

UDP

自動設定方法

  1. 画面右上の [+ Add more data]をクリックします。
  2. Network performance monitoring から[Syslog]を選択します。
    Syslog icon
  3. デバイスとSyslogDataをマッピングする方法を選択します。
    Syslog Device Mapping
  4. Manually add を選択した場合はデバイスリストを作成します。
    Syslog Add Device list
  5. 表示されたDockerコマンドを実行してコンテナを配置します。
    Syslog Docker Command
  6. コンテナの準備が出来たらNetwork機器のSyslog設定を行えばSyslogデータが連携されます。
    Ready Syslog Data

手動での設定方法

ktranslate コンテナでのSyslogリッスン有効化設定

1. DockerがインストールされているLinuxホストでdockerhubからktranslateイメージをダウンロードします。

docker pull kentik/ktranslate:v2

2. snmp-base.yamlファイルを$HOMEDockerユーザーのローカルディレクトリにコピーし、実行してコンテナを破棄します。

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

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

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を高めてください。