Nginx で ELB のヘルスチェックのログを出力させない

概要

ELB のヘルスチェック時の User-Agent ($http_user_agent) が ELB-HealthChecker の場合に、ログをオフにする設定の備忘録です。

1
2
3
4
5
6
7
8
9
http {
...
map $http_user_agent $loggable {
~ELB-HealthChecker 0;
default 1;
}

access_log /var/log/nginx/access.log ltsv if=$loggable;
}

access_log のパラメータ if で条件を指定でき、アクセスログの出力の on/off が可能です。

設定例

  • conf/nginx.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    http {
    ...
    # access log を ltsv 形式にする
    log_format ltsv 'domain:$host\t'
    'host:$remote_addr\t'
    'user:$remote_user\t'
    'time:$time_local\t'
    'method:$request_method\t'
    'path:$request_uri\t'
    'protocol:$server_protocol\t'
    'status:$status\t'
    'size:$body_bytes_sent\t'
    'referer:$http_referer\t'
    'agent:$http_user_agent\t'
    'response_time:$request_time\t'
    'cookie:$http_cookie\t'
    'set_cookie:$sent_http_set_cookie\t'
    'upstream_addr:$upstream_addr\t'
    'upstream_cache_status:$upstream_cache_status\t'
    'upstream_response_time:$upstream_response_time';

    map $http_user_agent $loggable {
    ~ELB-HealthChecker 0;
    default 1;
    }

    access_log /var/log/nginx/access.log ltsv if=$loggable;

    include /etc/nginx/conf/conf.d/*.conf;
    }
  • conf/conf.d/default.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    server {
    listen 80;
    listen [::]:80;

    # ELB のヘルスチェッカーの場合、 200 を返す
    if ($http_user_agent ~* ELB-HealthChecker) {
    return 200;
    }
    ...
    }

以上
参考になれば幸いです。

Nginx で ELB のヘルスチェックのログを出力させない

https://kenzo0107.github.io/2021/05/19/2021-05-20-nginx-no-logging-at-elb-healthcheck/

Author

Kenzo Tanaka

Posted on

2021-05-20

Licensed under

コメント