Hateburo: kazeburo hatenablog

SRE / 運用系小姑 / Goを書くPerl Monger

mackerel-plugin-pinging について

この記事はMackerelアドベントカレンダー9日目の記事です。 今年新たに作ったmackerel pluginの数がとても少なかったのでショックを受けているMackerelアンバサダーのkazeburoです。

この記事ではそのうちの一つを紹介します。

mackerel-agent-pinging

github.com

公式のpluginとして、check-pingがありますが、こちらはmetricsを取得するためのpluginとなります。

ariarijp さんによる mackerel-plugin-ping もありますが、こちらとは取得しているメトリクスが異なります。

github.com

使い方

$ sudo /usr/local/bin/mackerel-plugin-pinging --count 10 --key-prefix=example --host x.x.x.x
pinging.example_rtt_count.success       10.000000       1575852276
pinging.example_rtt_count.error 0.000000        1575852276
pinging.example_rtt_ms.max      0.544514        1575852276
pinging.example_rtt_ms.min      0.464331        1575852276
pinging.example_rtt_ms.average  0.499242        1575852276
pinging.example_rtt_ms.90_percentile    0.526231        1575852276

実行には、SUIDを設定またはroot権限が必要になります。

この例では x.x.x.x に対して、10回pingパケットを送信し、その成功回数、失敗回数とRTTのMax、Min、平均と90%tileを出力します。

タイムアウトpingを送出する間隔はオプションにて変更できます。

/usr/local/bin/mackerel-plugin-pinging -h
Usage:
  mackerel-plugin-pinging [OPTIONS]

Application Options:
      --host=       Hostname to ping
      --timeout=    timeout millisec per ping (default: 1000)
      --interval=   sleep millisec after every ping (default: 10)
      --count=      Count Sending ping (default: 10)
      --key-prefix= Metric key prefix
  -v, --version     Show version

Help Options:
  -h, --help        Show this help message

使用例

mackerel-plugin-pinging はデータセンター間のレイテンシや、ネットワーク上の問題を検出するために使っています。

f:id:kazeburo:20191209101755p:plain

このグラフから某所から某所へのRTTは18msec、pingの失敗は観測されていないことがわかります。

NAT経由での外部との通信品質の監視、マルチクラウド環境でのVPNやinterconnectの監視にも利用できるかと思います。機会があればご利用ください。