インターンの子が、Nginxでバーチャルごとに別ログフォーマットを出力したいと困っていました。ちなみにググってみると確かに出てこないので、この機会に今回サクッとブログします。
■Module ngx_http_log_module
http://nginx.org/en/docs/http/ngx_http_log_module.html
■やりたいこと
- adachin.comはtest_id、alternative_idは取得できている
- adachin2.comはtest_id、alternative_idは取得できないようになっている
adachin2.com
用にLogFormatを追加するだけです。
■Nginx
- nginx.conf
1 2 3 4 |
~省略~ include conf.d/log.conf.http; include conf.d/*.conf; } |
- log.conf.http
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 31 32 33 34 35 36 37 38 39 40 41 42 43 |
fastcgi_hide_header "X-User-ID"; fastcgi_hide_header "X-Alternative-Login-ID"; map $http_user_agent $log_ua { ~ELB-HealthChecker 0; default 1; } log_format main 'time:$time_iso8601\t' 'server_addr:$server_addr\t' 'host:$remote_addr\t' 'method:$request_method\t' 'reqsize:$request_length\t' 'uri:$request_uri\t' 'query:$query_string\t' 'status:$status\t' 'size:$body_bytes_sent\t' 'referer:$http_referer\t' 'ua:$http_user_agent\t' 'forwardedfor:$http_x_forwarded_for\t' 'reqtime:$request_time\t' 'apptime:$upstream_response_time\t' 'user_id:$upstream_http_x_user_id\t' 'alternative_id:$upstream_http_x_alternative_login_id\t' 'test_id:$http_x_test_id' ; log_format adachin2 'time:$time_iso8601\t' 'server_addr:$server_addr\t' 'host:$remote_addr\t' 'method:$request_method\t' 'reqsize:$request_length\t' 'uri:$request_uri\t' 'query:$query_string\t' 'status:$status\t' 'size:$body_bytes_sent\t' 'referer:$http_referer\t' 'ua:$http_user_agent\t' 'forwardedfor:$http_x_forwarded_for\t' 'reqtime:$request_time\t' 'apptime:$upstream_response_time\t' 'user_id:$upstream_http_x_user_id\t' ; |
- adachin.conf
1 2 3 4 5 6 7 |
server { listen 80; server_name adachin.com; access_log /var/log/nginx/adachin_access.log main; error_log /var/log/nginx/adachin_error.log warn; ~省略~ |
- adachin2.conf
1 2 3 4 5 6 7 |
server { listen 80; server_name adachin2.com; access_log /var/log/nginx/adachin2_access.log adachin2; error_log /var/log/nginx/adachin2_error.log warn; ~省略~ |
■まとめ
バーチャルと同じように追加すればOK。
まったく関係ないけども、会社のアドベントカレンダーも書きました!
Lancers Advent Calendar 2019 13日目を書きました?
[digdag]BigQueryのデータをシェルスクリプトでDBにインポートする方法 | ランサーズ(Lancers)エンジニアブログ https://t.co/szdWZIVGvu
— adachin?SRE (@adachin0817) December 13, 2019
0件のコメント