例: Apache ログからのフィールドの抽出 - Amazon CloudWatch Logs

例: Apache ログからのフィールドの抽出

カウントの代わりに、個別のログイベント内の値をメトリクス値に使用する方が役に立つ場合があります。この例では、Apache ウェブサーバーが転送したバイト数を計測するメトリクスを作成する抽出ルールの作成方法を示しています。

この抽出ルールは、ログイベントの 7 つのフィールドと一致します。メトリクス値は 7 番目に一致したトークンの値です。抽出ルールの metricValue フィールドにある「$7」がトークンの参照です。

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

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

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

  3. Apache サーバーのロググループの名前を選択します。

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

  5. [フィルターパターン] には [ip, id, user, timestamp, request, status_code, size] と入力します。

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

  7. [メトリクスの割り当て] を選択し、[フィルター名] に size と入力します。

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

  9. [メトリクス名] に「BytesTransferred」と入力します。

  10. [メトリクス値] に $size と入力します。

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

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

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

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

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

put-log-event 呼び出しの次のデータを使用してこのルールをテストできます。前の例のモニタリングルールを削除していない場合は、2 つの異なるメトリクスを生成します。

127.0.0.1 - - [24/Sep/2013:11:49:52 -0700] "GET /index.html HTTP/1.1" 404 287 127.0.0.1 - - [24/Sep/2013:11:49:52 -0700] "GET /index.html HTTP/1.1" 404 287 127.0.0.1 - - [24/Sep/2013:11:50:51 -0700] "GET /~test/ HTTP/1.1" 200 3 127.0.0.1 - - [24/Sep/2013:11:50:51 -0700] "GET /favicon.ico HTTP/1.1" 404 308 127.0.0.1 - - [24/Sep/2013:11:50:51 -0700] "GET /favicon.ico HTTP/1.1" 404 308 127.0.0.1 - - [24/Sep/2013:11:51:34 -0700] "GET /~test/index.html HTTP/1.1" 200 3