読者です 読者をやめる 読者になる 読者になる

Mackerel ブログ #mackerelio

Mackerelの公式ブログです

URL外形監視のレスポンスボディのチェックとリダイレクトに関する挙動と今後の方針について

Mackerelサブプロデューサーの id:Songmu です。平素はMackerelをご利用いただき、誠にありがとうございます。表題の件に関し告知いたします。

ヘルプに記載のある通り、URL外形監視機能において、2xx/3xx系のステータスコードは正常と見なされます。また、3xx系のレスポンスに関しては、リダイレクト先のチェックはおこないません。

また「レスポンスボディのチェック」が設定されている場合でも、レスポンスが3xx系だった場合はレスポンスボディのチェックは行っておりません。つまり、3xx系のレスポンスを返すURLに対して「レスポンスボディのチェック」の設定がなされている場合であっても、その文字列のチェックは実施されていない状況です。

これは、直感的ではない挙動だと認識しており「レスポンスボディのチェック」が設定されている場合には、3xx系のレスポンスであっても、正しくその文字列のチェックをおこなうように挙動を変更する予定です。

その場合、その3xx系のHTTPレスポンスそのもののレスポンスボディに対して文字列チェックをおこなう挙動とする予定です。URL外形監視機能は、そのHTTPレスポンス単体に対するチェックをおこなっており、リダイレクト先のフォローはおこなわないためです。

例えば、 http://mackerel.iohttps://mackerel.io への301リダイレクトを返します。 curl でアクセスしてみると以下のようになります(出力は一部省略しています)。

% curl -v http://mackerel.io/
> GET / HTTP/1.1
> Host: mackerel.io
> User-Agent: curl/7.51.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Thu, 20 Apr 2017 10:28:57 GMT
< Content-Type: text/html
< Content-Length: 178
< Connection: keep-alive
< Location: https://mackerel.io/
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

この場合、 <html> から始まる部分がこのHTTPレスポンスのレスポンスボディとなりますが、「レスポンスボディのチェック」の文字列チェックはこの内容に対しておこなわれることになります。

ついては、3xx系のレスポンスを返しているURLに「レスポンスボディのチェック」の設定をおこなっている監視項目に関し、お手数ですが設定の見直しをお願いいたします。具体的には以下の何れかの対応が想定されます。既にそのような設定になっている場合には、設定の変更は必要ありません。

  • 3xxではなく2xxを返すURLを設定する
  • 「レスポンスボディのチェック」の設定を削除する
  • 今後の仕様変更に備え、その3xxレスポンス自体に含まれる文字列を「レスポンスボディのチェック」に設定しておく

また、3xx系のレスポンスに関して、今後の機能拡張でリダイレクト先をフォローしてチェックする設定オプションを設けることを検討しています。

まとめ

  • 現状3xx系のレスポンスに対してはレスポンスボディのチェックをおこなえておりません
  • 今後「そのレスポンス自体」のレスポンスボディをチェックするように挙動を変更する予定です
    • 必要に応じて設定変更をお願いいたします
  • 3xx系のリダイレクト先をフォローするオプションについて、今後の機能拡張を検討しています

今後共Mackerelをよろしくお願いいたします。