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.