HAProxy prend-il en charge la journalisation dans un fichier?

14

Je viens d'installer haproxy sur mon serveur de test.

Existe-t-il un moyen de lui faire écrire ses journaux dans un fichier local, plutôt que syslog?

C'est uniquement pour les tests, donc je ne veux pas commencer à ouvrir les ports / encombrer syslog avec toutes mes données de test.

Malheureusement, les seules informations que je peux trouver tournent autour de la connexion à un serveur syslog.

J'ai essayé d'utiliser:

log /home/user/ha.log local0

dans ma config. Mais cela m'a dit:

[ALERT] 039/095022 (9528) : sendto logger #1 failed: No such file or directory (errno=2)

Quand j'ai redémarré. J'ai donc créé le fichier avec touch /home/user/ha.loget redémarré à quel point j'ai obtenu:

[ALERT] 039/095055 (9593) : sendto logger #1 failed: Connection refused (errno=111)

Est-ce possible, ou vais-je devoir configurer syslog, etc. pour voir mes données de test?

IGGt
la source
2
Je ne pense pas que HAProxy puisse se connecter à un fichier, et je soupçonne que la raison en est que les écritures sur disque sont une opération de blocage. Pourquoi ne voulez-vous vraiment pas utiliser syslog? La configuration n'est pas si compliquée. Vous pouvez affecter une installation locale à HAProxy et configurer votre démon syslog pour écrire ces entrées dans un fichier différent, et non dans d'autres fichiers syslog (ou flux réseau), si vous ne voulez pas que les journaux HAProxy ne soient pas mélangés avec tout autre.
Michael - sqlbot

Réponses:

14

Haproxy ne prend tout simplement pas en charge la journalisation dans des fichiers. Comme indiqué dans la documentation ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ), l'instruction "log" prend comme premier paramètre une adresse. Si c'est un fichier, c'est un socket Unix et HAProxy parlera au format syslog à ce socket. Haproxy est conçu comme ceci car sa responsabilité est de traiter les requêtes par proxy, pas d'écrire des fichiers, il délègue l'écriture des fichiers journaux à syslog. Si vous ne voulez pas jouer avec votre machine, vous pouvez par exemple installer logstash et exécuter: logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }' et ajouter: log /tmp/haprxoy_log.sock dans votre haproxy.cfg pour le tester.

user801247
la source
J'obtiens "E: Impossible de localiser le journal des paquets". Le journal de connexion a-t-il été supprimé d'ubuntu?
user568021
@ user568021 semble que logstash n'est pas fourni dans ubuntu, mais élastique (le responsable de logstash) fournit une source appropriée. En outre, logstash est un logiciel java, vous pouvez donc l'exécuter en téléchargeant un fichier jar en l'exécutant avec un JRE (fourni par ubuntu)
user801247
7

Vous pouvez modifier le fichier de configuration du journal haproxy sous /etc/rsyslog.d/pour pointer le fichier vers le chemin que vous souhaitez. Pas sûr de l'autre distribution. Pour moi, j'utilise Debian. J'ai changé /etc/rsyslog.d/49-haproxy.confpour pointer vers /var/log/haproxy/haproxy.log,

# Create an additional socket in haproxy's chroot in order to allow logging via
# /dev/log to chroot'ed HAProxy processes
$AddUnixListenSocket /var/lib/haproxy/dev/log

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

Vous devez également mettre à jour le chemin d'accès /etc/logrotate.d/haproxyau nouveau chemin d'accès. Pour qu'il tourne et comprime le fichier journal dans le chemin nouvellement configuré à l'aide de gzip.

Redémarrez ensuite rsyslog.service.

sudo systemctl restart rsyslog.service

Le haproxy.log.*fichier sera maintenant dans le /var/log/haproxy/répertoire.

Fonzie
la source
Comment créer un journal séparé pour les erreurs comme /var/log/haproxy-errors.log sans affecter le haproxy.log d'origine?
Khurshid Alam du
0

Vous avez essayé de configurer dans le répertoire de base de l'utilisateur, haproxy n'a pas l'autorisation d'accéder au répertoire de base de l'utilisateur, ce qui cause un problème.

Essayez à la place dans un autre emplacement, créez un répertoire dans /var/<directory>

log /var/<directory>/ha.log
KKD
la source
2
J'ai essayé sudo touch /var/log/ha.loget ajouté log /var/log/ha.log local0à ma configuration, mais j'ai eu la même erreur que ci-dessus connection refused.
IGGt
Dans le journal pourquoi vous donnez local0 à la fin?
KKD
1
J'ai essayé de le laisser de côté, mais lorsque j'ai redémarré, j'ai eu l'erreur, alors j'avais 'log' expects <address> and <facility> as arguments.besoin de quelque chose. Selon les instructions <facility> must be one of the 24 standard syslog facilities(qui, je pense, peuvent faire partie du problème)
IGGt