Haproxy не записує запити?


13

Отже, я налаштував 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.

Я відвідав деякі сторінки веб-сервера між перезавантаженнями thsoe і викликав кілька 404 помилок. Чому нічого не з’являється?

Редагувати: конф-файл rsyslog.

/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/… )
Silver Quettier

2
Я спробував додати це, але це не записує жодного додаткового знака. Можливо rsyslog, не налаштовано належним чином? Чи був би спосіб сказати?
Silver Quettier

Для мене це спрацювало.
Діма Медведєв,

rsyslog в ubuntu 14.0.4, здається, налаштований, хоча він не входить у /var/log/haproxy.log, за замовчуванням мої журнали встановлення до / var / log / syslog.
lee

2
що/dev/log
Міранда

7

реєстрація через unix socket журнал не працює для мене на моїй версії 6.7. Ви можете спробувати з цією конф. 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 простої конф

/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

Це може бути спричинено тим, що він біжить у в'язниці Chroot. Вам потрібно буде переконатися, що rsyslog також створює dgram-сокет всередині в'язниці chroot (наприклад, / var / lib / haproxy / dev / log). Вкажіть свою директиву журналу на гніздо / dev / log, і ви повинні бути хорошими.

Я провів пару годин, намагаючись розібратися в цьому, оскільки HAproxy не скаже тобі нічого поганого, окрім того, що журнал не працює.


5

Це посилання пояснює це чудово.

Якщо ви подивитесь на верхню частину /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.