特定のエンドポイントの負荷試験の結果を投稿するMackerelプラグインを書いた

これ何

特定のエンドポイントに毎秒XリクエストをY秒流した結果をMackerelのメトリックとして投稿するプラグインを書きました。こんな感じでレスポンスタイムの99パーセンタルなどが可視化できます。

mkrを使っている人は以下でインストールできます。

% mkr plugin install syou6162/mackerel-plugin-request-pressure

当たり前ですが、他人のサイトにリクエストを飛ばしまくって迷惑をかけないようにしてください。

何で作った

Nginxのアクセスログなどがすでにあれば、レイテンシーの99パーセンタイルなどを可視化できるプラグインはすでに存在します。大体のユースケースはこれで十分。

しかし、当たり前ですがある程度流量のあるサイトでないと平均以外の値はあまり信用できません。自分が運用している趣味サイトは訪問者が自分とGoogle botくらいなので、流量が少ないです。ベンチマークスクリプトをかけてログを取ればよいですが、ログを取って可視化までやるのは面倒だなと思ってMackerelのプラグインにしました。プラグインとしてしこんでおけば定常的にレイテンシが分かって便利。-metric-key-prefixを付けておけばエンドポイント毎にグラフを出せます。このプラグイン自体も結構負荷がかかるものなので、負荷試験を行なう目的のサーバーで実行せずmonitoring専用のホストを作ってそこで実行するのがオススメです。

週末にインフラ方面の知識を付ける練習として負荷試験を行なっていたけど、パフォーマンスを継続的に見たりアラート飛ばせるようになったりするので便利。