LogstashExample-nginx-config: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) (Новая страница: «=Конфигурация тестовых окружений с Nginx для максимально подробного логгирования=») |
Sirmax (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
=Конфигурация тестовых окружений с Nginx для максимально подробного логгирования= |
=Конфигурация тестовых окружений с Nginx для максимально подробного логгирования= |
||
| + | ==Конфигурация (только значимые части)== |
||
| + | <PRE> |
||
| + | # Log in JSON Format |
||
| + | log_format nginxlog_json escape=json |
||
| + | '{ ' |
||
| + | '"nginx_http_user_agent": "$http_user_agent",' |
||
| + | '"nginx_ancient_browser": "$ancient_browser",' |
||
| + | '"nginx_body_bytes_sent": "$body_bytes_sent",' |
||
| + | '"nginx_bytes_sent": "$bytes_sent",' |
||
| + | '"nginx_connection": "$connection",' |
||
| + | '"nginx_connection_requests": "$connection_requests",' |
||
| + | '"nginx_connections_active": "$connections_active",' |
||
| + | '"nginx_connections_reading": "$connections_reading",' |
||
| + | '"nginx_connections_waiting": "$connections_waiting",' |
||
| + | '"nginx_connections_writing": "$connections_writing",' |
||
| + | '"nginx_content_length": "$content_length",' |
||
| + | '"nginx_content_type": "$content_type",' |
||
| + | '"nginx_cookie_": "$cookie_",' |
||
| + | '"nginx_document_root": "$document_root",' |
||
| + | '"nginx_document_uri": "$document_uri",' |
||
| + | '"nginx_fastcgi_path_info": "$fastcgi_path_info",' |
||
| + | '"nginx_fastcgi_script_name": "$fastcgi_script_name",' |
||
| + | '"nginx_host": "$host",' |
||
| + | '"nginx_hostname": "$hostname",' |
||
| + | '"nginx_https": "$https",' |
||
| + | '"nginx_invalid_referer": "$invalid_referer",' |
||
| + | '"nginx_is_args": "$is_args",' |
||
| + | '"nginx_limit_conn_status": "$limit_conn_status",' |
||
| + | '"nginx_limit_rate": "$limit_rate",' |
||
| + | '"nginx_limit_req_status": "$limit_req_status",' |
||
| + | '"nginx_modern_browser": "$modern_browser",' |
||
| + | '"nginx_msec": "$msec",' |
||
| + | '"nginx_msie": "$msie",' |
||
| + | '"nginx_nginx_version": "$nginx_version",' |
||
| + | '"nginx_proxy_add_x_forwarded_for": "$proxy_add_x_forwarded_for",' |
||
| + | '"nginx_proxy_host": "$proxy_host",' |
||
| + | '"nginx_proxy_port": "$proxy_port",' |
||
| + | '"nginx_proxy_protocol_addr": "$proxy_protocol_addr",' |
||
| + | '"nginx_proxy_protocol_port": "$proxy_protocol_port",' |
||
| + | '"nginx_proxy_protocol_server_addr": "$proxy_protocol_server_addr",' |
||
| + | '"nginx_proxy_protocol_server_port": "$proxy_protocol_server_port",' |
||
| + | '"nginx_query_string": "$query_string",' |
||
| + | '"nginx_realip_remote_addr": "$realip_remote_addr",' |
||
| + | '"nginx_realip_remote_port": "$realip_remote_port",' |
||
| + | '"nginx_remote_addr": "$remote_addr",' |
||
| + | '"nginx_remote_port": "$remote_port",' |
||
| + | '"nginx_remote_user": "$remote_user",' |
||
| + | '"nginx_request": "$request",' |
||
| + | '"nginx_request_headers": "$request_headers",' |
||
| + | '"nginx_request_body": "$request_body",' |
||
| + | '"nginx_request_id": "$request_id",' |
||
| + | '"nginx_request_length": "$request_length",' |
||
| + | '"nginx_request_method": "$request_method",' |
||
| + | '"nginx_request_time": "$request_time",' |
||
| + | '"nginx_request_uri": "$request_uri",' |
||
| + | '"nginx_scheme": "$scheme",' |
||
| + | '"nginx_server_addr": "$server_addr",' |
||
| + | '"nginx_server_name": "$server_name",' |
||
| + | '"nginx_server_port": "$server_port",' |
||
| + | '"nginx_server_port": "$server_port",' |
||
| + | '"nginx_server_protocol": "$server_protocol",' |
||
| + | '"nginx_ssl_cipher": "$ssl_cipher",' |
||
| + | '"nginx_ssl_ciphers": "$ssl_ciphers",' |
||
| + | '"nginx_ssl_client_cert": "$ssl_client_cert",' |
||
| + | '"nginx_ssl_client_escaped_cert": "$ssl_client_escaped_cert",' |
||
| + | '"nginx_ssl_client_fingerprint": "$ssl_client_fingerprint",' |
||
| + | '"nginx_ssl_client_i_dn": "$ssl_client_i_dn",' |
||
| + | '"nginx_ssl_client_raw_cert": "$ssl_client_raw_cert",' |
||
| + | '"nginx_ssl_client_s_dn": "$ssl_client_s_dn",' |
||
| + | '"nginx_ssl_client_serial": "$ssl_client_serial",' |
||
| + | '"nginx_ssl_client_v_end": "$ssl_client_v_end",' |
||
| + | '"nginx_ssl_client_v_remain": "$ssl_client_v_remain",' |
||
| + | '"nginx_ssl_client_v_start": "$ssl_client_v_start",' |
||
| + | '"nginx_ssl_client_verify": "$ssl_client_verify",' |
||
| + | '"nginx_ssl_early_data": "$ssl_early_data",' |
||
| + | '"nginx_ssl_protocol": "$ssl_protocol",' |
||
| + | '"nginx_ssl_server_name": "$ssl_server_name",' |
||
| + | '"nginx_ssl_session_id": "$ssl_session_id",' |
||
| + | '"nginx_ssl_session_reused": "$ssl_session_reused",' |
||
| + | '"nginx_status": "$status",' |
||
| + | '"nginx_tcpinfo_rtt": "$tcpinfo_rtt",' |
||
| + | '"nginx_tcpinfo_rttvar": "$tcpinfo_rttvar",' |
||
| + | '"nginx_tcpinfo_snd_cwnd": "$tcpinfo_snd_cwnd",' |
||
| + | '"nginx_tcpinfo_rcv_space": "$tcpinfo_rcv_space",' |
||
| + | '"nginx_time_iso8601": "$time_iso8601",' |
||
| + | '"nginx_time_local": "$time_local",' |
||
| + | '"nginx_uid_got": "$uid_got",' |
||
| + | '"nginx_uid_reset": "$uid_reset",' |
||
| + | '"nginx_uid_set": "$uid_set",' |
||
| + | '"nginx_upstream_addr": "$upstream_addr",' |
||
| + | '"nginx_upstream_bytes_received": "$upstream_bytes_received",' |
||
| + | '"nginx_upstream_bytes_sent": "$upstream_bytes_sent",' |
||
| + | '"nginx_upstream_bytes_sent": "$upstream_bytes_sent",' |
||
| + | '"nginx_upstream_cache_status": "$upstream_cache_status",' |
||
| + | '"nginx_upstream_connect_time": "$upstream_connect_time",' |
||
| + | '"nginx_upstream_cookie_": "$upstream_cookie_",' |
||
| + | '"nginx_upstream_header_time": "$upstream_header_time",' |
||
| + | '"nginx_upstream_http_": "$upstream_http_",' |
||
| + | '"nginx_upstream_response_length": "$upstream_response_length",' |
||
| + | '"nginx_upstream_response_time": "$upstream_response_time",' |
||
| + | '"nginx_upstream_status": "$upstream_status",' |
||
| + | '"nginx_uri": "$uri",' |
||
| + | '"nginx_response_body": "$response_body"' |
||
| + | '}'; |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | server { |
||
| + | listen 443 ssl; |
||
| + | root /var/www/backend; |
||
| + | server_name elk.domain.tld; |
||
| + | access_log /var/log/nginx/elk.domain.tld-access.log.ssl nginxlog_json; |
||
| + | error_log /var/log/nginx/elk.domain.tld-error.log.ssl; |
||
| + | client_max_body_size 500M; |
||
| + | keepalive_timeout 0; |
||
| + | ssl_certificate ...; |
||
| + | ssl_certificate_key ...; |
||
| + | |||
| + | lua_need_request_body on; |
||
| + | |||
| + | set $response_body ""; |
||
| + | body_filter_by_lua ' |
||
| + | local response_body = string.sub(ngx.arg[1], 1, 1000) |
||
| + | ngx.ctx.buffered = (ngx.ctx.buffered or "") .. response_body |
||
| + | if ngx.arg[2] then |
||
| + | ngx.var.response_body = ngx.ctx.buffered |
||
| + | end |
||
| + | '; |
||
| + | |||
| + | set_by_lua_block $request_headers{ |
||
| + | local h = ngx.req.get_headers() |
||
| + | local request_headers_all = "" |
||
| + | for k, v in pairs(h) do |
||
| + | local rowtext = "" |
||
| + | rowtext = string.format(" %s='%s' ", k, v) |
||
| + | request_headers_all = request_headers_all .. rowtext |
||
| + | |||
| + | end |
||
| + | return request_headers_all |
||
| + | } |
||
| + | ... |
||
| + | </PRE> |
||
Версия 11:17, 11 августа 2021
Конфигурация тестовых окружений с Nginx для максимально подробного логгирования
Конфигурация (только значимые части)
# Log in JSON Format
log_format nginxlog_json escape=json
'{ '
'"nginx_http_user_agent": "$http_user_agent",'
'"nginx_ancient_browser": "$ancient_browser",'
'"nginx_body_bytes_sent": "$body_bytes_sent",'
'"nginx_bytes_sent": "$bytes_sent",'
'"nginx_connection": "$connection",'
'"nginx_connection_requests": "$connection_requests",'
'"nginx_connections_active": "$connections_active",'
'"nginx_connections_reading": "$connections_reading",'
'"nginx_connections_waiting": "$connections_waiting",'
'"nginx_connections_writing": "$connections_writing",'
'"nginx_content_length": "$content_length",'
'"nginx_content_type": "$content_type",'
'"nginx_cookie_": "$cookie_",'
'"nginx_document_root": "$document_root",'
'"nginx_document_uri": "$document_uri",'
'"nginx_fastcgi_path_info": "$fastcgi_path_info",'
'"nginx_fastcgi_script_name": "$fastcgi_script_name",'
'"nginx_host": "$host",'
'"nginx_hostname": "$hostname",'
'"nginx_https": "$https",'
'"nginx_invalid_referer": "$invalid_referer",'
'"nginx_is_args": "$is_args",'
'"nginx_limit_conn_status": "$limit_conn_status",'
'"nginx_limit_rate": "$limit_rate",'
'"nginx_limit_req_status": "$limit_req_status",'
'"nginx_modern_browser": "$modern_browser",'
'"nginx_msec": "$msec",'
'"nginx_msie": "$msie",'
'"nginx_nginx_version": "$nginx_version",'
'"nginx_proxy_add_x_forwarded_for": "$proxy_add_x_forwarded_for",'
'"nginx_proxy_host": "$proxy_host",'
'"nginx_proxy_port": "$proxy_port",'
'"nginx_proxy_protocol_addr": "$proxy_protocol_addr",'
'"nginx_proxy_protocol_port": "$proxy_protocol_port",'
'"nginx_proxy_protocol_server_addr": "$proxy_protocol_server_addr",'
'"nginx_proxy_protocol_server_port": "$proxy_protocol_server_port",'
'"nginx_query_string": "$query_string",'
'"nginx_realip_remote_addr": "$realip_remote_addr",'
'"nginx_realip_remote_port": "$realip_remote_port",'
'"nginx_remote_addr": "$remote_addr",'
'"nginx_remote_port": "$remote_port",'
'"nginx_remote_user": "$remote_user",'
'"nginx_request": "$request",'
'"nginx_request_headers": "$request_headers",'
'"nginx_request_body": "$request_body",'
'"nginx_request_id": "$request_id",'
'"nginx_request_length": "$request_length",'
'"nginx_request_method": "$request_method",'
'"nginx_request_time": "$request_time",'
'"nginx_request_uri": "$request_uri",'
'"nginx_scheme": "$scheme",'
'"nginx_server_addr": "$server_addr",'
'"nginx_server_name": "$server_name",'
'"nginx_server_port": "$server_port",'
'"nginx_server_port": "$server_port",'
'"nginx_server_protocol": "$server_protocol",'
'"nginx_ssl_cipher": "$ssl_cipher",'
'"nginx_ssl_ciphers": "$ssl_ciphers",'
'"nginx_ssl_client_cert": "$ssl_client_cert",'
'"nginx_ssl_client_escaped_cert": "$ssl_client_escaped_cert",'
'"nginx_ssl_client_fingerprint": "$ssl_client_fingerprint",'
'"nginx_ssl_client_i_dn": "$ssl_client_i_dn",'
'"nginx_ssl_client_raw_cert": "$ssl_client_raw_cert",'
'"nginx_ssl_client_s_dn": "$ssl_client_s_dn",'
'"nginx_ssl_client_serial": "$ssl_client_serial",'
'"nginx_ssl_client_v_end": "$ssl_client_v_end",'
'"nginx_ssl_client_v_remain": "$ssl_client_v_remain",'
'"nginx_ssl_client_v_start": "$ssl_client_v_start",'
'"nginx_ssl_client_verify": "$ssl_client_verify",'
'"nginx_ssl_early_data": "$ssl_early_data",'
'"nginx_ssl_protocol": "$ssl_protocol",'
'"nginx_ssl_server_name": "$ssl_server_name",'
'"nginx_ssl_session_id": "$ssl_session_id",'
'"nginx_ssl_session_reused": "$ssl_session_reused",'
'"nginx_status": "$status",'
'"nginx_tcpinfo_rtt": "$tcpinfo_rtt",'
'"nginx_tcpinfo_rttvar": "$tcpinfo_rttvar",'
'"nginx_tcpinfo_snd_cwnd": "$tcpinfo_snd_cwnd",'
'"nginx_tcpinfo_rcv_space": "$tcpinfo_rcv_space",'
'"nginx_time_iso8601": "$time_iso8601",'
'"nginx_time_local": "$time_local",'
'"nginx_uid_got": "$uid_got",'
'"nginx_uid_reset": "$uid_reset",'
'"nginx_uid_set": "$uid_set",'
'"nginx_upstream_addr": "$upstream_addr",'
'"nginx_upstream_bytes_received": "$upstream_bytes_received",'
'"nginx_upstream_bytes_sent": "$upstream_bytes_sent",'
'"nginx_upstream_bytes_sent": "$upstream_bytes_sent",'
'"nginx_upstream_cache_status": "$upstream_cache_status",'
'"nginx_upstream_connect_time": "$upstream_connect_time",'
'"nginx_upstream_cookie_": "$upstream_cookie_",'
'"nginx_upstream_header_time": "$upstream_header_time",'
'"nginx_upstream_http_": "$upstream_http_",'
'"nginx_upstream_response_length": "$upstream_response_length",'
'"nginx_upstream_response_time": "$upstream_response_time",'
'"nginx_upstream_status": "$upstream_status",'
'"nginx_uri": "$uri",'
'"nginx_response_body": "$response_body"'
'}';
server {
listen 443 ssl;
root /var/www/backend;
server_name elk.domain.tld;
access_log /var/log/nginx/elk.domain.tld-access.log.ssl nginxlog_json;
error_log /var/log/nginx/elk.domain.tld-error.log.ssl;
client_max_body_size 500M;
keepalive_timeout 0;
ssl_certificate ...;
ssl_certificate_key ...;
lua_need_request_body on;
set $response_body "";
body_filter_by_lua '
local response_body = string.sub(ngx.arg[1], 1, 1000)
ngx.ctx.buffered = (ngx.ctx.buffered or "") .. response_body
if ngx.arg[2] then
ngx.var.response_body = ngx.ctx.buffered
end
';
set_by_lua_block $request_headers{
local h = ngx.req.get_headers()
local request_headers_all = ""
for k, v in pairs(h) do
local rowtext = ""
rowtext = string.format(" %s='%s' ", k, v)
request_headers_all = request_headers_all .. rowtext
end
return request_headers_all
}
...