Я только что установил haproxy на моем тестовом сервере.
Есть ли способ заставить его записывать свои журналы в локальный файл, а не в системный журнал?
Это только для тестирования, поэтому я не хочу начинать открывать порты / загромождать системный журнал всеми моими тестовыми данными.
К сожалению, единственная информация, которую я могу найти, связана с регистрацией на сервере системного журнала.
Я пытался с помощью:
log /home/user/ha.log local0
в моем конфиге. Но это сказало мне:
[ALERT] 039/095022 (9528) : sendto logger #1 failed: No such file or directory (errno=2)
Когда я перезапустил. Итак, я создал файл touch /home/user/ha.log
и перезапустил его, и в этот момент я получил:
[ALERT] 039/095055 (9593) : sendto logger #1 failed: Connection refused (errno=111)
Возможно ли это, или мне придется настроить системный журнал и т. Д., Чтобы увидеть мои тестовые данные?
Ответы:
Haproxy просто не поддерживает запись в файлы. Как указано в документации ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ), оператор "log" принимает в качестве первого параметра адрес. Если это файл, это сокет unix, и HAProxy будет говорить в формате syslog с этим сокетом. Haproxy спроектирован так, потому что он отвечает за запросы прокси, а не за запись файлов, он делегирует запись файлов журнала в syslog. Если вы не хотите связываться с вашим компьютером, вы можете, например, установить logstash и запустить:
logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }'
and add:log /tmp/haprxoy_log.sock
в своем haproxy.cfg, чтобы протестировать его.источник
Вы можете изменить конфигурационный файл журнала haproxy,
/etc/rsyslog.d/
чтобы указать путь к файлу, который вам нравится. Не уверен насчет другого распределения. Для меня я использую Debian. Я изменил,/etc/rsyslog.d/49-haproxy.conf
чтобы указать на/var/log/haproxy/haproxy.log
,Вам также следует обновить путь
/etc/logrotate.d/haproxy
к журналу до нового. Так что он будет вращать и сжимать файл журнала по вновь настроенному пути, используяgzip
.Затем перезапустите rsyslog.service.
Теперь
haproxy.log.*
файл будет в/var/log/haproxy/
каталоге.источник
Вы попытались настроить в домашнем каталоге пользователя, haproxy не имеет разрешения на доступ к домашнему каталогу пользователя, поэтому возникает проблема.
Вместо этого попробуйте в другом месте, создайте каталог в
/var/<directory>
источник
sudo touch /var/log/ha.log
и добавилlog /var/log/ha.log local0
к моей конфигурации, но получил ту же ошибку, что и вышеconnection refused
.'log' expects <address> and <facility> as arguments.
поэтому потребовал что-то там. Согласно инструкции<facility> must be one of the 24 standard syslog facilities
(которая, я думаю, может быть частью проблемы)