Haproxy: нет журналов только для ошибочных запросов, но нормально для 200s

У меня есть машина с Ubuntu 16.04.6 + Haproxy 1.6.3 (я знаю, что он старый, но это то, что есть), который отправляет трафик на внутренние серверы.

Когда я открываю страницу статистики /haproxy?abc, я вижу постоянно растущее количество Error > Req & это ~10-15% всех запросов. 7 389 на скриншоте: haproxy stats

Но я не могу найти никаких ошибок в логах!
И я определенно вижу много запросов со статусом 200 в /var/log/haproxy.log

У меня следующий /etc/haproxy/haproxy.conf

global
  maxconn 100000
  user haproxy
  group haproxy
  stats socket /run/haproxy/haproxy1.sock mode 660 level admin process 1
  stats socket /run/haproxy/haproxy2.sock mode 660 level admin process 2
  nbproc 2
  cpu-map 1 0
  cpu-map 2 1
  log /dev/log local0
  tune.maxrewrite  16384
  tune.bufsize     32768

defaults
  log global
  mode http
  option dontlognull
  option httplog
  option http-keep-alive
  option forwardfor
  option http-buffer-request
  retries 3
  option redispatch
  timeout http-request 30s
  timeout queue 1m
  timeout connect 10s
  timeout client 30s
  timeout server 30s
  timeout http-keep-alive 31s
  timeout check 10s
  maxconn 300000

frontend main
  bind *:80
  bind *:443 ssl crt /etc/haproxy/certs/ no-sslv3
  log-format "%ci:%cp [%tr] %HM %ST %HU body:%[capture.req.hdr(0)]"
  mode http
  option http-keep-alive
  stats enable
  stats uri /haproxy?abc
  stats realm Strictly\ Private
  stats auth xxxxx:yyyyyyyy
  declare capture request len 40000
  http-request add-header X-Forwarded-Proto https if { ssl_fc }
  http-request capture req.body id 0
  http-response set-log-level err if { status 400:499 }
  acl  is_backend1  dst_port      80
  acl  is_backend1  dst_port      443
  use_backend     backend1    if  is_backend1
  default_backend   backend1

backend backend1
  mode http
  option forwardfor
  option httpchk HEAD /api/monitor
  http-check expect status 200
  http-request add-header X-Forwarded-For %[src]
  http-request add-header X-Real-Ip %[src]
  balance roundrobin
  maxconn 300000
  server xxxxxxxx 10.x.x.x:80 maxconn 100000 check inter 5000
  server yyyyyyyy 10.y.y.y:80 maxconn 100000 check inter 5000

Также у меня следующий /etc/rsyslog.d/49-haproxy.conf

$AddUnixListenSocket /var/lib/haproxy/dev/log

# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy.log
&~

Логи в /var/log/haproxy.log выглядят примерно так:

May 18 19:50:34 xxxxxxxx haproxy[4912]: xx.xxx.xx.x:32985 [] POST 200 /url/5a9ea5a0225f7d0004c70045/5ae0a5c0da5fdd00042f78f5/json body:{"url":"https://.............................................:[{".........................."}
May 18 19:50:08 xxxxxxxx haproxy[4913]: zz.zz.zzz.zzz:1802 [] OPTIONS 200 /url/5a9ea5a0225f7d0004c70045/5ae0a5c0da5fdd00042f78f5/json body:-
May 18 19:50:37 yyyyyyyy haproxy[4912]: yyy.yy.yy.yyy:21554 [] POST 200 /url/5a9ea5a0225f7d0004c70045/5ae0a5c0da5fdd00042f78f5/json body:{"url":"https://.............................................:[{".........................."}

Пожалуйста, помогите мне найти эти запросы с ошибками :)

Спасибо!

0
задан 18 May 2021 в 23:31
1 ответ

Дополнительная диагностика показала, что ошибки исчезают, если я отключаю проверку здоровья. Я выяснил, что для просмотра журналов проверок здоровья нужно включить эту функцию отдельно:

option log-health-checks

Я попробую это и еще пару трюков и отредактирую этот ответ, но с большой долей вероятности проблемы с проверками здоровья - это то, что мне нужно рассмотреть.

0
ответ дан 28 July 2021 в 14:41

Теги

Похожие вопросы