

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 拡張ヘルスログ形式
<a name="health-enhanced-serverlogs"></a>

AWS Elastic Beanstalk プラットフォームは、カスタムウェブサーバーログ形式を使用して、HTTP リクエストに関する情報を拡張ヘルスレポートシステムに効率的に中継します。システムはログを分析し、問題を特定して、それに基づいてインスタンスと環境ヘルスを設定します。対象環境でウェブサーバープロキシを無効にし、ウェブコンテナから直接リクエストを処理する場合でも、[Elastic Beanstalk ヘルスエージェント](health-enhanced.md#health-enhanced-agent)によって使用される場所と形式でログを出力するようにサーバーを設定することで、拡張ヘルスレポートを最大限に活用できます。

**注記**  
このページの情報は、Linux ベースのプラットフォームにのみ関係します。Windows Server プラットフォームでは、Elastic Beanstalk は HTTP リクエストに関する情報を IIS ウェブサーバーから直接受け取ります。詳細については、「[Windows サーバー上の IIS でのウェブサーバーメトリクスキャプチャ](health-enhanced-metrics-server-iis.md)」を参照してください。

## ウェブサーバーログ設定
<a name="health-enhanced-serverlogs.configure"></a>

Elastic Beanstalk プラットフォームは、HTTP リクエストに関する情報を含む 2 つのログを出力するように設定されています。最初のログは、詳細形式であり、リクエストに関する詳細な情報（リクエスタのユーザーエージェント情報や人間が読み取れる形式のタイムスタンプなど）を提供します。

**/var/log/nginx/access.log**  
以下の例は、Ruby ウェブサーバー環境で実行されている nginx プロキシのものですが、その形式は Apache のものに似ています。

```
172.31.24.3 - - [23/Jul/2015:00:21:20 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:21 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
```

2 つ目のログは、簡易形式です。これは、拡張ヘルスレポートに関連する情報のみを提供します。このログは、`healthd` という名前のサブフォルダに出力され、1 時間ごとにローテーションされます。古いログは、ローテーション直後に削除されます。

**/var/log/nginx/healthd/application.log.2015-07-23-00**  
次の例は、機械による読み取りが可能な形式のログを示しています。

```
1437609879.311"/"200"0.083"0.083"177.72.242.17
1437609879.874"/"200"0.347"0.347"177.72.242.17
1437609880.006"/bad/path"404"0.001"0.001"177.72.242.17
1437609880.058"/"200"0.530"0.530"177.72.242.17
1437609880.928"/bad/path"404"0.001"0.001"177.72.242.17
```

拡張ヘルスログ形式には、以下の情報が含まれます。
+ リクエストの時間 (Unix 時間)。
+ リクエストのパス
+ 結果に対応する HTTP ステータスコード
+ リクエスト時間
+ アップストリーム時間
+ `X-Forwarded-For` HTTP ヘッダー

nginx プロキシでは、時間は小数点以下 3 桁の浮動小数点の秒数で表示されます。Apache では、整数で表したミリ秒数が使用されます。

**注記**  
次のような警告 (`DATE-TIME` は日付と時刻) がログファイルに表示される場合で、マルチコンテナ Docker 環境などでカスタムプロキシを使用しているときは、`healthd` がログファイルを読み込むことができるように、.ebextension を使用して環境を設定する必要があります。  

```
W, [DATE-TIME #1922] WARN -- : log file "/var/log/nginx/healthd/application.log.DATE-TIME" does not exist
```
.ebextension は[マルチコンテナ Docker のサンプル](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-multicontainer-v2.zip)から開始できます。

**/etc/nginx/conf.d/webapp\_healthd.conf**  
この例は、`healthd` ログ形式が強調表示されている nginx のログ設定を示しています。

```
upstream my_app {
  server unix:///var/run/puma/my_app.sock;
}

log_format healthd '$msec"$uri"'
                '$status"$request_time"$upstream_response_time"'
                '$http_x_forwarded_for';

server {
  listen 80;
  server_name _ localhost; # need to listen to localhost for worker tier

  if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
    set $year $1;
    set $month $2;
    set $day $3;
    set $hour $4;
  }

  access_log  /var/log/nginx/access.log  main;
  access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;

  location / {
    proxy_pass http://my_app; # match the name of upstream directive which is defined above
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /assets {
    alias /var/app/current/public/assets;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }

  location /public {
    alias /var/app/current/public;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }
}
```

**/etc/httpd/conf.d/healthd.conf**  
次の例は、Apache のログ設定を示します。

```
LogFormat "%{%s}t\"%U\"%s\"%D\"%D\"%{X-Forwarded-For}i" healthd
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/healthd/application.log.%Y-%m-%d-%H 3600" healthd
```

## 拡張ヘルスレポート用のログの生成
<a name="health-enhanced-serverlogs.generate"></a>

ヘルスエージェントにログを提供するには、以下の操作を行う必要があります。
+ 前のセクションで示したように、正しい形式でログを出力する
+ ログを `/var/log/nginx/healthd/` に出力する
+ `application.log.$year-$month-$day-$hour`
+ ログを 1 時間に 1 回ローテーションさせる
+ ログは切り捨てないでください