Filebeat nginx определяет имя приложения через корневой контекст
В настоящее время у меня есть filebeat, читающий журналы nginx и помещающий их в logstash, я пытаюсь определить, из какого приложения поступает журнал, просматривая корневой каталог контекста URI (не уверен, что это правильный способ сделать это), но проблема это когда нет контекста root. Logstash проанализирует значение сразу после хоста.
Вот мой конфиг nginx.
server {
listen 443;
server_name MyServer.com;
access_log /var/log/nginx/access_dev.log main if=$loggable;
error_log /var/log/nginx/error_dev.log;
ssl on;
ssl_certificate ssl/bundle.pem;
ssl_certificate_key ssl/wildcard.key;
ssl_session_timeout 5m;
proxy_ssl_verify off;
ssl_protocols TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:!aNULL;
ssl_prefer_server_ciphers on;
add_header X-Forwarded-For $host;
add_header X-Forwarded-Proto $scheme;
add_header Host $host;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
location / {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header Host $host;
proxy_pass https://app01.domain.local:443/;
}
location /applicationOne {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header Host $host;
proxy_read_timeout 120s;
proxy_pass https://app02.domain.local:443;
}
}
Можно ли добавить переменные в определенное место и сказать, как называется приложение? Таким образом, для местоположения / я бы добавил, скажем, "Портал", а затем в журнале nginx будет журнал "Портал" в конце?
Вот мой текущий nginx.conf
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" --
$sent_http_x_username';
map $request_uri $loggable {
default 1;
~*\.(ico|css|js|gif|jpg|jpeg|png|svg|woff|woff2|ttf|eot)$ 0;
}
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
Пример того, что я прошу с портала в конце журнала.
198.143.37.12 - - [31 / Jul / 2019: 10: 44: 13 -0400] "GET / nosession HTTP / 1.1" 200 3890 "-" "Safari / 14607.2.6.1.1 CFNetwork / 978.0.7 Darwin / 18.6. 0 (x86_64) "" 199.83.71.22 "" Портал "
И если это невозможно, есть ли другие идеи о том, как решить эту проблему?
1 ответ
Я использовал подход, чтобы добавить заголовок, а затем записать этот заголовок.
В моем
location / {
add_header x-application "App Name";
}
В nginx.conf
$sent_http_x_application
был добавлен в log_fromat