web-dev-qa-db-fra.com

connexion haproxy à syslog

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

Le problème est qu'il se connecte à /var/log/syslog au lieu 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
&~
13
Petah

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

Notez le fichier dans /etc/rsyslog.d Il dit de se connecter haproxy dans /var/log/haproxy.log Mais cela ne prendra pas effet sans redémarrer rsyslog:

service rsyslog restart
21
Sam

Le défaut haproxy.conf le fichier fournit des instructions claires dans 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 
 # devrez: 
 # 
 # 1) configurer syslog pour accepter les événements du journal réseau. Cela se fait 
 # En ajoutant l'option '-r' aux SYSLOGD_OPTIONS dans 
 # /Etc/sysconfig/syslog
 # 
 # 2) configure les événements local2 pour accéder au fichier /var/log/haproxy.log
 #. 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 la réception de syslog UDP 
 $ ModLoad imudp 
 $ UDPServerRun 514 
 $ UDPServerAddress 127.0.0.1 
9
Daniel t.

Commentez cette ligne de /etc/rsyslog.d

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

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

  • 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/dev et montez /dev avec option de liaison 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

3
maxadamo