この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
MackerelのURL外形監視は単に死活だけではなく、レスポンスタイムをグラフにプロットしたり、それに対して閾値を設定して通知させたりすることが可能です。
実際監視させると、こんな感じですね。
サービスメトリック「HTTP Response Time」として可視化されます。
ところでMackerelはAPIを使って、収集されたメトリックを時間指定でエクスポートさせることが可能です。
サービスメトリックについてはここにドキュメントがあります。
通常のサービスメトリックであれば、このAPI( metric-names
)を使ってメトリック名を取得したのち、下記のAPIで期間を指定して取得することになるのですが、
URL外形監視の場合は metric-names
を使っても名前が取得出来ません。
% curl -sH "X-Api-Key: ${MACKEREL_APIKEY}" \
https://api.mackerelio.com/api/v0/services/${SERVICE_NAME}/metric-names
{"names":[]}
恐らくですが、URL外形監視のメトリックはユーザーに代わってMackerelのシステムが投稿しているため、リストに出てこないのだと思います。
じゃあエクスポート出来ないのか、と言えばそんなことはなくて、ちゃんとメトリック名を調べる方法があります。
具体的にはここでマウスホバーさせてください。
小さくて見づらい上にコピペできないので、不便ですね!
ご安心下さい。このメトリック名は __externalhttp.responsetime.<モニタID>
で一意に求められます。
モニタIDは、URL外形監視の設定画面のURLから確認出来ます。
実際に取得してみたらこんな感じです。 jq
でちょっと整形&時刻情報を UNIXTIME から ISO 8601 に変換してみました。
MACKEREL_APIKEY='****'
SERVICE_NAME='Home'
MONITOR_ID='****'
TIME_FROM=$(date -d "10 minutes ago" +%s)
TIME_TO=$(date +%s)
URL_API="https://api.mackerelio.com/api/v0/services/${SERVICE_NAME}/metrics"
NAME="__externalhttp.responsetime.${MONITOR_ID}"
curl -sH "X-Api-Key: ${MACKEREL_APIKEY}" \
"${URL_API}?name=${NAME}&from=${TIME_FROM}&to=${TIME_TO}" \
| jq -c '.metrics[]|[.time,(.time|todate),.value]'
[1657187700,"2022-07-07T09:55:00Z",464]
[1657187760,"2022-07-07T09:56:00Z",428]
[1657187820,"2022-07-07T09:57:00Z",437]
[1657187880,"2022-07-07T09:58:00Z",433]
[1657187940,"2022-07-07T09:59:00Z",450]
[1657188000,"2022-07-07T10:00:00Z",408]
[1657188060,"2022-07-07T10:01:00Z",453]
[1657188120,"2022-07-07T10:02:00Z",430]
[1657188180,"2022-07-07T10:03:00Z",417]
[1657188240,"2022-07-07T10:04:00Z",423]
なお、タイムスタンプの部分は UNIXTIME に変換する必要があるので GNU date を使っていますが、macOS から実行される場合は以下の記事を参考に書き直してみて下さい。