[
ping RTTとパケットロスをメトリック化するプラグインを作ってみた
mackerel-plugin-pinglatencyというMackerel向けのメトリックプラグインを作った。
Mackerelで通信のレイテンシー、ジッター、パケットロスを取得したいという話題があり、シンプルなping前提でよければまぁまぁ簡単にできそうだなと思ったのがきっかけ。
最初はRubyでpingコマンド結果をラップするそれっぽいメトリックプラグインを作ってみた。でも、Windowsでも動かしたいとか、mkr plugin install
でネットワークインストールしたいとか欲が出てくると、普通にテンプレにのっとってGoで書くのが王道である。
実際のところ、同種のものとしてはすでにkazeburoさんのmackerel-plugin-pingingやariarijpさんのmackerel-plugin-pungがある。とはいえ、せっかくなのでGoの手習いがてら、ユーザーにより扱いやすいものを目指して自作してみた。
メトリックプラグインのサンプルのmackerel-plugin-sampleをベースに、CopilotとChatGPTに教えてもらいながら作成。
グラフ定義のところが難しかったんだけど、同僚のmasarasiさんの記事「Mackerelのグラフをカスタマイズする」が詳しくて、とても助かった。
複数ホストを重ねたときの表示の取り扱い、けっこう綺麗にできたのではないだろうか。
計測は単純なICMP pingでデフォルト5回の試行をしているだけなので、これで完璧というわけではない。けど、まぁまぁ実用に耐えるものにはなったと思う。
今度はOTelで似たものを習作に作ってみてみようかな。