connexion haproxy à syslog


13

J'ai installé haproxy 1.5 via apt-get sur ubuntu 14.04 via ppa:vbernat/haproxy-1.5selon http://haproxy.debian.net/

Le problème est qu'il se connecte à la /var/log/syslogplace de/var/log/haproxy.log

La configuration est fondamentalement la valeur par défaut:

/etc/haproxy/haproxy.cfg

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

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL).
    ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
        ssl-default-bind-options no-sslv3

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

/etc/rsyslog.d

# 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.log
&~

peut-être que ce lien vous aide: kvz.io/blog/2010/08/11/haproxy-logging
— Federico Sierra

Réponses:


21

Très délicat. :-) Et voici la réponse:

Remarquez le fichier dans /etc/rsyslog.dIl dit de se connecter à haproxy, /var/log/haproxy.logmais cela ne prendra pas effet sans redémarrer rsyslog:

service rsyslog restart

9

Le défaut haproxy.conf fichier fournit des instructions claires sous les paramètres globaux - global. Ici, je suis en train de le coller pour vous -

# ------------------------------------------------- --------------------
# Paramètres globaux
# ------------------------------------------------- --------------------
global
    # pour que ces messages finissent dans /var/log/haproxy.log, vous
    # besoin de:
    #
    # 1) configurez syslog pour accepter les événements du journal réseau. C'est fait
    # en ajoutant l'option '-r' aux SYSLOGD_OPTIONS dans
    # / etc / sysconfig / syslog
    #
    # 2) Configurez les événements local2 pour aller dans /var/log/haproxy.log
    # fichier. Une ligne comme la suivante peut être ajoutée à
    # / etc / sysconfig / syslog
    #
    #

Dans mon cas, par exemple, j'utilise haproxy dans CentOS 6.6, le même serveur syslogd et j'ai dû faire ce qui suit pour me connecter à /var/log/haproxy.log:

  1. Ajouter la ligne ci-dessous à /etc/rsyslog.d/haproxy.conf-

    local2. * /var/log/haproxy.log
  2. Activer la journalisation syslogd sur le serveur -

# Fournit une réception syslog UDP
$ ModLoad imudp
$ UDPServerRun 514
$ UDPServerAddress 127.0.0.1

2
Dans la dernière partie, dans la deuxième étape (Activer la journalisation syslogd sur le serveur); vous modifiez ces paramètres dans le fichier /etc/rsyslog.conf. Après cela, redémarrez le service rsyslog: service rsyslog restart
— Edenshaw

6

Commentez cette ligne de /etc/rsyslog.d

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

1
/etc/rsyslog.dest un répertoire, pas un fichier. Je ne suis pas sûr des différences de 1,5 vs 1,6 sur Ubuntu, mais le fichier /etc/rsyslog.d/49-haproxy.confexiste après l'installation de 1.6. Cela a les 3 lignes suivantes: $AddUnixListenSocket /var/lib/haproxy/dev/log \n if $programname startswith 'haproxy' then /var/log/haproxy.log \n &~(J'ai ajouté "\ n" pour désigner les nouvelles lignes)
— fideloper

3

le principal problème est que l'haproxy chrooté ne pourra pas accéder /dev/loget afin de contourner le problème, vous pouvez soit:

  • Activez syslog pour écouter sur le socket UDP (généralement sur le port 514) comme décrit dans les autres messages
  • Créez le répertoire /var/lib/haproxy/devet montez /devavec l'option bind sur/var/lib/haproxy/dev

Cela fonctionne dans les deux sens.

[Éditer]

Après 3 ans, quelque chose a changé. Haproxy crée maintenant un fichier appelé /etc/rsyslog.d/49-haproxy. L'une des lignes du fichier est:

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

Dans ce cas, l'environnement chroot peut utiliser /dev/log


vous pouvez également simplement ajouter un socket de journal dans le chroot. rsyslog peut en avoir plusieurs. (je donnerais un exemple mais ça fait des années)
— Florian Heigl

Ce n'est plus le cas pour les nouvelles versions de HAProxy, j'utilise la version 1.5.4 avec une configuration chrootée mais je me connecte /dev/log.
— Overbryd

@Overbryd oui et non. Le haproxy plus récent ajoute un fichier dans /etc/rsyslog.d, avec la déclaration suivante à l'intérieur: $ AddUnixListenSocket / var / lib / haproxy / dev / log Je vais modifier mon commentaire en conséquence.
— maxadamo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.