У нас есть следующая конфигурация:
fluentd (td-agent) для анализа и пересылки журналов из файла журнала
nginx для загрузкисбалансировать эти журналы по 3 узлам
GrayLog веб-приложение для отображения журналов, оно работает на этих 3 узлах
Мы обнаружили, что некоторые сообщения нене попасть в серый журнал.Исследуя, мы обнаружили, что проблема заключается в nginx.Если мы отправляем напрямую в graylog или используем только один вышестоящий узел, это работает как шарм.Эти сообщения имеют размер 3-5 символов JSON.
Путем дополнительных исследований и попыток я отметил, что перевод imum_conn; в исходную конфигурацию, это работает, то есть от 3 до6 сообщений из 10, которые отправляются, поступают в graylog, и без него они НИКОГДА не получаются.
Я попытался поместить ip_hash, но я получаю сообщение об ошибке, которое не может быть помещено туда, что странно.
Так что, если мы исключим nginx или настроим его на использование одного узла, он будет работать нормально.На любом из 3 узлов.Когда мы включаем второй узел, проблема возвращается.
Я также пытался поместить большие значения в nginx.conf, в 4 раза больше (4k -> 16k и т. Д.).
Есть идеи, что делатьпопробуйте следующий?
Это один исходный файл конфигурации, у нас около 20 таких на порт
upstream graylog_hosts_14099 {
least_conn;
server 10.138.65.213:14099;
server 10.138.65.64:14099;
server 10.138.65.81:14099;
}
Это nginx.conf
user nginx;
worker_processes auto;
worker_rlimit_nofile 49152;
pid /var/run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
accept_mutex on;
accept_mutex_delay 500ms;
worker_connections 49152;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log error;
sendfile on;
server_tokens on;
types_hash_max_size 2048;
types_hash_bucket_size 1024;
server_names_hash_bucket_size 128;
server_names_hash_max_size 1024;
keepalive_timeout 65s;
keepalive_requests 100;
client_body_timeout 60s;
send_timeout 60s;
lingering_timeout 5s;
tcp_nodelay on;
client_body_temp_path /var/nginx/client_body_temp;
client_max_body_size 10m;
client_body_buffer_size 512k;
proxy_temp_path /var/nginx/proxy_temp;
proxy_connect_timeout 90s;
proxy_send_timeout 90s;
proxy_read_timeout 90s;
proxy_buffers 32 16k;
proxy_buffer_size 32k;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Proxy "";
proxy_headers_hash_bucket_size 256;
proxy_headers_hash_max_size 4096;
proxy_intercept_errors on;
proxy_request_buffering off;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
stream {
include /etc/nginx/conf.stream.d/*.conf;
include /etc/nginx/streams-enabled/*;
}
Этоэто файл конфигурации с поддержкой потоков, для каждого порта также
server {
listen *:14080 udp;
proxy_timeout 1;
proxy_connect_timeout 1;
proxy_pass graylog_hosts_14080;
}