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.