Haproxy не регистрирует запросы?


11

Итак, я настроил Haproxy таким образом, чтобы регистрация проходила через rsyslog и, на данный момент, была сохранена в одном файле.

Это определенно ведение журнала, так как я получаю эти «стартовые» сообщения при запуске, но HTTP-запросы вообще не регистрируются. Что не так с моей конфигурацией?

haproxy.cfg :

global
        log /dev/log local0 debug
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend webfront
  option  forwardfor
  stats enable
  stats uri /haproxy?statis
  stats realm Haproxy\ Auth
  stats auth user:password
  bind *:80
  timeout client 86400000
  acl is_discourse  hdr_end(host) -i discourse.mydomain.com
  use_backend       discourse     if is_discourse
  use_backend       webserver     if !is_discourse

backend discourse
  balance source
  option forwardfor
  option httpclose
  server server1 127.0.0.1:3080 weight 1 maxconn 1024 check inter 10000

backend webserver
  balance source
  option forwardfor
  option httpclose
  server server2 127.0.0.1:4080 weight 1 maxconn 1024 check inter 10000

Файл журнала :

root@kayak:/var/log/haproxy# tail haproxy.log
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy discourse started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webserver started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webfront started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy discourse started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webserver started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webfront started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy discourse started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webserver started.

Я заходил на некоторые страницы веб-сервера между этими перезагрузками и вызвал несколько 404 ошибок. Почему ничего не появляется?

Редактировать: rsyslog conf файл.

/etc/rsyslog.d/49-haproxy.conf:

local0.* -/var/log/haproxy_0.log
if ($programname == 'haproxy') then -/var/log/haproxy/haproxy.log
& ~

1
ты в итоге решил эту проблему?
Теренс Чоу

Ответы:


11

Вы должны указать журнал во внешнем интерфейсе, если вы действительно хотите, чтобы каждый запрос регистрировался. Но обычно это перебор для сервера, и ваш диск будет заполнен в кратчайшие сроки.

frontend webfront
  log /dev/log local0 debug

Ах, спасибо. Я попробую это как можно скорее. Дело в том, что мне нужно устранять проблемы с подключением к экземпляру Discourse, так что это будет только временно. Кажется, я не могу прокси это независимо от того, что я пытаюсь. ( serverfault.com/questions/645031/… )
Серебряный Кветье

2
Я попытался добавить это, но он не регистрирует ничего лишнего. Возможно rsyslogне правильно настроен? Будет ли способ сказать?
Серебро Кветтье

Для меня это сработало.
Дима Медведев

rsyslog в Ubuntu 14.0.4, кажется, настроен, хотя он не регистрируется в /var/log/haproxy.log, по умолчанию мои журналы установки находятся в / var / log / syslog.
Ли

2
что такое/dev/log
Миранда

7

запись в журнал через сокет unix у меня не работает на моем rhel 6.7. Вы можете попробовать этот conf. haproxy (работает на 81) перенаправляет http-запрос на httpd (работает на 80)

/etc/haproxy/haproxy.cfg

frontend web_front
    log         127.0.0.1    local6
    option httplog

    bind        *:81
    default_backend web_back

backend web_back
    server      web1 127.0.0.1:80

и вы должны включить модуль rsyslog udp для получения syslog от haproxy простой conf вроде этого:

/etc/rsyslog.d/haproxy.conf

$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514
local6.* /var/log/haproxy.log

сделайте http запрос к 81, и вы получите несколько таких журналов

# tail -n 1 /var/log/haproxy.log
May 18 13:51:07 localhost haproxy[31617]: 127.0.0.1:38074 [18/May/2016:13:51:06.999] web_front web_back/web1 0/0/0/2/2 404 466 - - ---- 1/1/0/1/0 0/0 "GET /how-are-you HTTP/1.1"

5

Это может быть вызвано тем, что он запускается в изолированной тюрьме. Вам нужно убедиться, что rsyslog также создает сокет dgram внутри chroot-тюрьмы (например, / var / lib / haproxy / dev / log). Направьте директиву log на сокет / dev / log, и все будет хорошо.

Я потратил пару часов, пытаясь выяснить это, поскольку HAproxy не скажет вам ничего плохого, кроме того, что регистрация не работает.


3

Эта ссылка объясняет это прекрасно.

Если вы посмотрите на верхнюю часть /etc/haproxy/haproxy.cfg, вы увидите что-то вроде:

global
log 127.0.0.1 local2
[...]

Это означает, что HAProxy будет отправлять свои сообщения в rsyslog на 127.0.0.1. Но по умолчанию rsyslog не слушает ни одного адреса, отсюда и проблема.

Давайте отредактируем /etc/rsyslog.conf и раскомментируем эти строки:
$ModLoad imudp
$UDPServerRun 514

Это заставит rsyslog прослушивать UDP-порт 514 для всех IP-адресов. При желании вы можете ограничить до 127.0.0.1, добавив:
$UDPServerAddress 127.0.0.1

Теперь создайте файл /etc/rsyslog.d/haproxy.conf, содержащий:

local2.* /log/haproxy.log

Конечно, вы можете быть более конкретным и создавать отдельные файлы журнала в соответствии с уровнем сообщений:

local2.=info /log/haproxy-info.log
local2.notice /log/haproxy-allbutinfo.log

Затем перезапустите rsyslog и убедитесь, что файлы журнала созданы:
# service rsyslog restart

Если вы вручную создаете файлы журналов /log/haproxy-allbutinfo.logи /log/haproxy-info.logне забудьте сменить владельца наsyslog:adm

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.