Question Haproxy ne pas enregistrer les demandes?


J'ai donc configuré Haproxy pour que la journalisation passe par rsyslog et, pour le moment, soit entièrement sauvegardée dans un seul fichier.

Il enregistre définitivement, car je reçois ces messages de "démarrage" au démarrage, mais aucune demande HTTP ne se connecte du tout. Quel est le problème avec ma configuration?

haproxy.cfg:

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

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

frontend webfront
  option  forwardfor
  stats enable
  stats uri /haproxy?statis
  stats realm Haproxy\ Auth
  stats auth user:password
  bind *:80
  timeout client 86400000
  acl is_discourse  hdr_end(host) -i discourse.mydomain.com
  use_backend       discourse     if is_discourse
  use_backend       webserver     if !is_discourse

backend discourse
  balance source
  option forwardfor
  option httpclose
  server server1 127.0.0.1:3080 weight 1 maxconn 1024 check inter 10000

backend webserver
  balance source
  option forwardfor
  option httpclose
  server server2 127.0.0.1:4080 weight 1 maxconn 1024 check inter 10000

Fichier journal:

root@kayak:/var/log/haproxy# tail haproxy.log
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy discourse started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webserver started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webfront started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy discourse started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webserver started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webfront started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy discourse started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webserver started.

J'ai visité certaines des pages du serveur Web entre ces redémarrages et déclenché quelques erreurs 404. Pourquoi rien ne se présente?

Edit: fichier de configuration rsyslog.

/etc/rsyslog.d/49-haproxy.conf: 

local0.* -/var/log/haproxy_0.log
if ($programname == 'haproxy') then -/var/log/haproxy/haproxy.log
& ~

7
2017-11-26 20:42


origine


avez-vous fini par résoudre ce problème? - Terence Chow


Réponses:


Vous devez spécifier le journal dans l'interface si vous voulez vraiment que chaque demande soit journalisée. Mais généralement, cela est excessif pour le serveur et votre disque sera plein en un rien de temps.

frontend webfront
  log /dev/log local0 debug

7
2017-11-26 21:25



Ah merci. Je vais essayer cela dès que possible. Le problème est que je dois résoudre les problèmes de connexion à l’instance Discourse afin que ce ne soit que temporaire. On dirait que je ne peux pas utiliser un proxy, peu importe ce que j'essaie. (serverfault.com/questions/645031/…) - Silver Quettier
J'ai essayé d'ajouter ceci, mais il n'enregistre pas de supplément. Peut-être rsyslog n'est pas correctement configuré? Y aurait-il un moyen de le dire? - Silver Quettier
Pour moi cela a fonctionné. - Dima Medvedev
rsyslog dans Ubuntu 14.0.4 semble être configuré, bien qu'il ne se connecte pas à /var/log/haproxy.log, par défaut, mon journal d'installation se connecte à / var / log / syslog. - lee
c'est quoi /dev/log - Miranda


la journalisation via le journal de socket unix ne fonctionne pas pour moi sur mon rhel 6.7.vous pouvez essayer avec cette conf. haproxy (travaillant sur 81) transmet la demande http à httpd (travaille sur 80)

/etc/haproxy/haproxy.cfg

frontend web_front
    log         127.0.0.1    local6
    option httplog

    bind        *:81
    default_backend web_back

backend web_back
    server      web1 127.0.0.1:80

et vous devez activer le module rsyslog udp pour recevoir syslog de haproxy une conf simple comme celle-ci:

/etc/rsyslog.d/haproxy.conf

$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514
local6.* /var/log/haproxy.log

faire une demande http à 81, et vous obtenez bien des journaux comme celui-ci

# tail -n 1 /var/log/haproxy.log
May 18 13:51:07 localhost haproxy[31617]: 127.0.0.1:38074 [18/May/2016:13:51:06.999] web_front web_back/web1 0/0/0/2/2 404 466 - - ---- 1/1/0/1/0 0/0 "GET /how-are-you HTTP/1.1"

6
2018-05-18 04:52





Cela peut être causé par son exécution dans une prison chroot. Vous devez vous assurer que rsyslog crée également un socket dgram dans la prison chroot (par exemple, / var / lib / haproxy / dev / log). Pointez votre directive log sur le socket / dev / log et vous devriez être bon.

J'ai passé quelques heures à essayer de comprendre cela, car HAproxy ne vous dira pas que quelque chose ne va pas, à part la journalisation qui ne fonctionne pas.


5
2017-10-07 21:49





Ce lien l'explique parfaitement.

Si vous regardez en haut de /etc/haproxy/haproxy.cfg, vous verrez quelque chose comme:

global
log 127.0.0.1 local2 
[...]

Cela signifie que HAProxy enverra ses messages à rsyslog le   127.0.0.1. Mais par défaut, rsyslog n’écoute aucune adresse, d’où le problème.

Éditons /etc/rsyslog.conf et décommentons ces lignes:
$ModLoad imudp 
$UDPServerRun 514

Cela fera écouter rsyslog sur le port UDP 514 pour toutes les adresses IP.   Vous pouvez éventuellement limiter à 127.0.0.1 en ajoutant:
$UDPServerAddress 127.0.0.1

Créez maintenant un fichier /etc/rsyslog.d/haproxy.conf contenant:

local2.* /log/haproxy.log

Vous pouvez bien sûr être plus spécifique et créer des fichiers de log séparés   en fonction du niveau de messages:

local2.=info /log/haproxy-info.log 
local2.notice /log/haproxy-allbutinfo.log

Puis redémarrez rsyslog et vérifiez que les fichiers journaux sont créés:   
# service rsyslog restart

Si vous créez manuellement des fichiers journaux /log/haproxy-allbutinfo.log et /log/haproxy-info.log , n'oubliez pas de changer de propriétaire en syslog:adm


1
2017-11-22 17:25