Haproxy-Protokollierung in Syslog


13

Ich habe haproxy 1.5 via apt-get auf ubuntu 14.04 via ppa:vbernat/haproxy-1.5per http://haproxy.debian.net/ installiert

Das Problem ist, dass es sich an /var/log/syslogstatt anmeldet/var/log/haproxy.log

Das Setup ist im Grunde die Standardeinstellung:

/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
&~

Vielleicht hilft Ihnen dieser Link: kvz.io/blog/2010/08/11/haproxy-logging
Federico Sierra

Antworten:


21

Sehr trickreich. :-) Und hier ist die Trickantwort:

Beachten Sie die Datei in /etc/rsyslog.dEs heißt, sich bei Haproxy anzumelden. /var/log/haproxy.logDies wird jedoch nicht wirksam, ohne rsyslog neu zu starten:

service rsyslog restart

9

Die Standarddatei haproxy.confenthält klare Anweisungen unter den globalen Einstellungen - global. Hier kopiere ich es für Sie einzufügen -

# ------------------------------------------------- --------------------
# Globale Einstellungen
# ------------------------------------------------- --------------------
global
    # Damit diese Nachrichten in /var/log/haproxy.log landen, werden Sie
    # müssen:
    #
    1) Konfigurieren Sie Syslog so, dass es Netzwerkprotokollereignisse akzeptiert. Das ist fertig
    # durch Hinzufügen der Option '-r' zu SYSLOGD_OPTIONS in
    # / etc / sysconfig / syslog
    #
    # 2) Konfigurieren Sie local2-Ereignisse, um zur Datei /var/log/haproxy.log zu gelangen
    # Datei. Eine Zeile wie die folgende kann hinzugefügt werden
    # / etc / sysconfig / syslog
    #
    #

In meinem Fall, zum Beispiel, führe ich Haproxy in CentOS 6.6, dem gleichen Syslogd-Server, aus und musste Folgendes tun, um mich in /var/log/haproxy.log einzuloggen:

  1. Untere Zeile zu /etc/rsyslog.d/haproxy.conf- hinzufügen

    local2. * /var/log/haproxy.log
  2. Aktivieren Sie die Syslogd-Protokollierung auf dem Server -

# Bietet UDP-Syslog-Empfang
$ ModLoad imudp
$ UDPServerRun 514
$ UDPServerAddress 127.0.0.1

2
Im letzten Teil, im zweiten Schritt (Syslogd-Protokollierung auf dem Server aktivieren); Sie ändern diese Einstellungen in der Datei /etc/rsyslog.conf. Starten Sie danach den rsyslog-Dienst neu:service rsyslog restart
Edenshaw

6

Kommentieren Sie diese Zeile aus /etc/rsyslog.d

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

1
/etc/rsyslog.dist ein Verzeichnis, keine Datei. Ich bin mir nicht sicher, ob es Unterschiede zwischen 1.5 und 1.6 unter Ubuntu gibt, aber die Datei /etc/rsyslog.d/49-haproxy.confexistiert nach der Installation von 1.6. Dies hat die folgenden 3 Zeilen: $AddUnixListenSocket /var/lib/haproxy/dev/log \n if $programname startswith 'haproxy' then /var/log/haproxy.log \n &~(Ich fügte "\ n" hinzu, um die neuen Zeilen zu kennzeichnen)
Fideloper

3

Das Hauptproblem besteht darin, dass der chrooted-Haproxy nicht darauf zugreifen kann. /dev/logUm dieses Problem zu umgehen, haben Sie folgende Möglichkeiten :

  • Aktivieren Sie syslog, um den UDP-Socket abzuhören (normalerweise auf Port 514), wie in den anderen Nachrichten beschrieben
  • Erstellen Sie das Verzeichnis /var/lib/haproxy/devund hängen Sie es /devmit der Bindeoption an/var/lib/haproxy/dev

Es funktioniert so oder so.

[bearbeiten]

Nach 3 Jahren hat sich etwas geändert. Haproxy erstellt jetzt eine Datei mit dem Namen /etc/rsyslog.d/49-haproxy. Eine der Zeilen in der Datei lautet:

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

In diesem Fall kann die Chroot-Umgebung verwenden /dev/log


Sie können der Chroot auch einfach einen Log-Socket hinzufügen. rsyslog kann mehrere haben. (Ich würde ein Beispiel geben, aber es ist Jahre her)
Florian Heigl

Dies ist nicht mehr der Fall für neuere Versionen von HAProxy. Ich führe Version 1.5.4 mit einer Chroot-Konfiguration aus, melde mich jedoch an /dev/log.
Overbryd

@ Overbryd ja und nein. Der neuere Haproxy fügt eine Datei in /etc/rsyslog.d hinzu, die die folgende Anweisung enthält: $ AddUnixListenSocket / var / lib / haproxy / dev / log Ich werde meinen Kommentar entsprechend bearbeiten.
Maxadamo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.