New RelicでICMP PING監視~KTranslateを使った監視設定方法~

記事タイトルとURLをコピーする

みなさんこんにちは。ネコが好きなマネージドサービス部の塩野です。
今回はNew RelicのKtranslateを使ったICMP PING監視のお話です。

概要

New RelicのKTranslateの機能を使用して、ICMP PING監視をどうやってすればよいかを記載しました。

本記事の対象者

・New Relicを使ってICMPのネットワーク監視をしたい方 ・Synthetics PINGの監視は対象外です

インストール方法の違い

まず、KTranslateの設定は下記の2つのパターンがあります。どちらの方がいい、どちらの方がよくないということではなく、より環境に慣れている方で設定すればいいと思います。当記事ではDockerを使った設定で話を進めて生きたと思います。

監視方法 メリット デメリット
Docker 環境の再現が簡単 Docker独特のクセがあり、トラブルになった時に切り分けの難易度が高くなる
Linux Package Manager Linuxに慣れていたら難しくない 依存関係などの影響を受けることがある

構成図と当記事のゴール

当記事で使用する環境の構成図はこちらです

デプロイ環境

項目 詳細
OS AmazonLinux2
追加ソフト Docker Engine
監視対象IP 10.0.17.252/32

環境の説明

nr-ktranslate に Docker Engine をインストールし、Docker上でKTranslateを動作させる。KTranslateからICMPの監視をおこない、Linux Server に対してPING監視ができるところをゴールとします。

dockerのインストール

今回はdocker版のKTranslateを使用しますので、まずはDocker Engineのインストールをおこないます。インストールコマンドを実行する前に、おまじないとして yum update を実行してパッケージをアップデートしておきましょう。

sudo yum update -y
sudo amazon-linux-extras install docker
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker ec2-user

KTranslateのセットアップ

1.Add dataからNetworkを選択し、Network Router and Switches をクリックする

2.Begin Installationをクリックする

3.Select Account で設定したい New Relicのアカウントを選択する

4.Choose Installation methodでDockerを選択する

5.Create the configration to use wthen querying your devices で任意のものを選択する
※今回はSNMPの監視を想定していませんのでここではどれを選択しても問題ありませんが、便宜上 v1 を選択しておきます

6.バージョンを選択するとそのバージョンに応じたdiscoveryの設定が表示されますが、今回はICMP監視をメインとするためテキトーに入力しています

7.Collector name を入力する
※この名前がDocker Containerのコンテナ名になります

8.コンフィグレーションファイルと設定用コマンドが表示されますので、コピーしてテキストエディタに貼り付けます

テキストエディタに貼り付けた内容を下記のように書き換えます。具体的には devices: の部分をICMP監視の設定に書き換えました。

cat > /yaml/snmp-base.yaml << EOF
devices: 
  ping_only__10.0.17.252:
    device_name: ping_only
    device_ip: 10.0.17.252
    provider: kentik-ping
    user_tags:
      owning_team: load_balancing
    ping_only: true
    ping_interval_sec: 30
discovery: 
  cidrs:
    - 10.0.17.252/32
  ignore_list: []
  debug: false
  ports:
    - 161
  default_communities:
    - public
  default_v3: null
  add_devices: true
  add_mibs: true
  threads: 4
  replace_devices: true
  check_all_ips: true
  use_snmp_v1: true
global:
  poll_time_sec: 60
  mib_profile_dir: /etc/ktranslate/profiles
  mibs_db: /etc/ktranslate/mibs.db
  mibs_enabled:
    - IF-MIB
  timeout_ms: 3000
  retries: 0
EOF
if [ $(id -u) == 0 ]; then chown 1000:1000 /yaml/snmp-base.yaml; fi
docker run -d --name ktranslate-icmp_monitoring --restart unless-stopped --pull=always -p 162:1620/udp \
-v `pwd`/yaml:/yaml \
-e NEW_RELIC_API_KEY=newrelic_ingest_api_key \
kentik/ktranslate:v2 \
  -snmp /yaml/snmp-base.yaml \
  -nr_account_id=1234567 \
  -metrics=jchf \
  -tee_logs=true \
  -service_name=icmp_monitoring \
  -snmp_discovery_on_start=true \
  -snmp_discovery_min=180 \
  nr1.snmp

なお、ICMP監視設定を含む snmp-base.yaml のサンプルコンフィグは、下記ドキュメントに記載されています。
docs.newrelic.com

設定ファイルの修正が終わりましたら、DockerがインストールされているKTranslateを動かすインスタンス上でコンテナを動作させるコマンドを実行します。コンテナを動作させるコマンドの実行後、コンテナが意図した通り動作しているか下記コマンドを使って確認します。

docker ps -a

Createの時間とStatusの時間が同じくらいになっているか、Statusの時間が極端に短い(常に~1分以内)でない限りは動作しているとみなしていいでしょう。もしStatusの時間が極端に短い状態が続いているようならコンテナが再起動を繰り返している可能性がありますので、コマンドの見直しや既存コンテナの停止・削除を実施し、再度コマンドを流しなおしてください。

※既存コンテナを停止する場合
docker stop ktranslate-icmp_monitoring

※既存コンテナを削除する場合
docker rm ktranslate-icmp_monitoring

コンテナが動作していることが確認できましたら、Continueをクリックしましょう


9.Continueをクリックします
  ここまでくれば、ほぼ完成ですネ

10.最後、See your dataをクリックして設定画面を終わらせます

動作確認

それでは動作確認をしてみましょう。Network>Device Performanceから下記のように監視状況を確認することができます。しかしながら、この画面からはどのIPを監視してる以上の情報を確認することができません。PINGロスがでている、PING遅延がでている、正常にPINGできているなどの情報を見る機能はどうやら現時点ではないように見受けられます。


もう少し詳細なPINGのステータスを確認する方法がないものかと探してみると、どうやらMetric & Eventの画面から状態を確認することができそうです。メトリクスは「kentik.ping.XXXX」に紐づいている項目が対象で、下記画面よりPINGが成功している状況を確認することができました。


それでは監視対象をダウンさせて、PINGロスを検知できるかも確認してみましょう。


ちゃんと kentik.ping.PacketsRecv のメトリクス値が0となり、受信に失敗している状況を確認することができました。また kentik.ping.PacketLossPct のメトリクス値が増えていることが確認できましたので、ちゃんとPINGロスしていることが確認できました。

まとめ

New Relicのドキュメントに記載されている方法で、ガイドインストールを使ったICMP監視を実践してみました。やはりPINGといえばSyntheticsでICMPについてはドキュメントも情報が少なければ、ガイドインストールすら対応していない状況なので、New RelicとしてはICMPよりWebのパフォーマンス監視の方により力をいれているように感じました。

こちらの記事がどなたかのお役に立てれば幸いです。

個人的なお願いごと

弊社内の運用基盤でもNew Relicを使った監視をしており、その中で蓄積されたノウハウや知見などに興味がある方が多くいらっしゃる場合は、個人的にこういったブログ記事を増やしたりユーザーグループなどでの発表を増やしてもいいのかと考えています。もし興味がある、もっとこの手の情報を知りたいという方が多くいらっしるようであれば、こういうのも書いてとリクエストを添えた上で記事の拡散の際ににご協力頂ければ嬉しいです。

関連記事

New Relicを使ったPING監視の実情
blog.serverworks.co.jp

New RelicのFlex機能を使ったICMP PING監視
blog.serverworks.co.jp

塩野 正人 ブログ記事一覧はコチラ

マネージドサービス部所属。ネコが好きです。