例: HTTP 404 コードをカウントする - Amazon CloudWatch Logs

例: HTTP 404 コードをカウントする

CloudWatch Logs を使用して、Apache サーバーが HTTP 404 レスポンス (ページが見つからない場合のレスポンスコード) を返した数をモニタリングできます。サイトの訪問者が目的のリソースを見つけられなかった頻度を理解するためにモニタリングする場合があります。ログレコードが各ログイベント (サイト訪問) に関する次の情報を含むように設定されている前提です。

  • 要求者の IP アドレス

  • RFC 1413 ID

  • Username

  • タイムスタンプ

  • リクエスト方法およびリクエストされたリソースとプロトコル

  • リクエストに対する HTTP レスポンスコード

  • リクエストで転送されたバイト数

例は次のようになります。

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 2326

以下の例に示すように、HTTP 404 エラーの構造にイベントが一致するようにルールを指定できます。

CloudWatch コンソールを使用してメトリクスフィルターを作成するには

  1. https://console.aws.amazon.com/cloudwatch/ にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[ロググループ] を選択します。

  3. Actions、[メトリクスフィルターの作成] を選択します。

  4. [フィルターパターン] には [IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes] と入力します。

  5. フィルターパターンをテストするには、[パターンのテスト] を選択します。

  6. [次へ] を選択し、[フィルター名] に HTTP404Errors と入力します。

  7. [メトリクスの詳細] の [メトリクス名前空間] に、MyNameSpace と入力します。

  8. [メトリクス名] に、ApacheNotFoundErrorCount を入力します。

  9. [メトリクス値] が 1 であることを確認します。これにより、各 404 エラーイベントのカウントは 1 ずつ増分されます。

  10. [デフォルト値] に 0 と入力し、[次へ] を選択します。

  11. [メトリクスフィルターの作成] を選択します。

AWS CLI を使用してメトリクスにフィルターを作成するには

コマンドプロンプトで、次のコマンドを実行します。

aws logs put-metric-filter \ --log-group-name MyApp/access.log \ --filter-name HTTP404Errors \ --filter-pattern '[ip, id, user, timestamp, request, status_code=404, size]' \ --metric-transformations \ metricName=ApacheNotFoundErrorCount,metricNamespace=MyNamespace,metricValue=1

この例では、右角括弧や左角括弧、二重引用符、および文字列 404 のようなリテラル文字列が使用されていました。このパターンでは、ログイベントをモニタリングするにはログイベントメッセージ全体が一致する必要があります。

describe-metric-filters コマンドを使用して、メトリクスフィルターの作成を検証できます。このような出力が表示されます。

aws logs describe-metric-filters --log-group-name MyApp/access.log { "metricFilters": [ { "filterName": "HTTP404Errors", "metricTransformations": [ { "metricValue": "1", "metricNamespace": "MyNamespace", "metricName": "ApacheNotFoundErrorCount" } ], "creationTime": 1399277571078, "filterPattern": "[ip, id, user, timestamp, request, status_code=404, size]" } ] }

これでイベントをいくつか手動で投稿できます。

aws logs put-log-events \ --log-group-name MyApp/access.log --log-stream-name hostname \ --log-events \ timestamp=1394793518000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 404 2326" \ timestamp=1394793528000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb2.gif HTTP/1.0\" 200 2326"

サンプルログイベントを入力してすぐに、CloudWatch コンソールで ApacheNotFoundErrorCount という名前のメトリクスを取得できます。