Formato personalizado de log Haproxy para GoAccess

3

Eu quero usar o GoAccess com o Haproxy, que funciona como proxy reverso e balanceador de carga.

Meu objetivo é criar um formato de log personalizado que seja exatamente semelhante ao apache2 (compatível com as configurações padrão do goaccess).

até agora eu fiz

capture request header Referrer len 64

capture request header Content-Length len 10

capture request header User-Agent len 64

log-format %si:%sp\ %ci\ -\ -\ [%t]\ "%r"\ %ST\ %B\ "%%Referrer"\ "%%User-Agent"

Minha versão haproxy é HA-Proxy versão 1.5.14 2015/07/02

Eu não sei como extrair o referenciador e o agente do usuário da solicitação capturada. Não consigo encontrar nada de útil sobre o formato de registro personalizado no manual.

EDITAR

Eu entendo que% hrl é uma lista de strings dos cabeçalhos de solicitação capturados. É possível extrair valores por chave ou índice?

    
por daredesm 16.03.2016 / 14:14

1 resposta

3

Resolvi isso criando meu próprio formato de registro:

GoAccess

time-format %H:%M:%S

date-format %d/%b/%Y

log-format %^ %^ %^ %^ %^ %^ %h [%d:%t.%^] "%r" %s %b "{%R|%u}"

# %^ - skipped token
# %h - user ip
# %d - date-format
# %t - time-format
# %r - request e.g. GET /something
# %s - server status code
# %b - data response length
# %R - referer - very important if you want to know where your users come from
# %u - user agent

# There is so many skipped tokens because my haproxy put some extra information in every line or rsyslog(?)
# Sample line:
#
# Mar 22 09:09:06 server haproxy[PID]: 10.60.10.50:80 1.2.3.4 [22/Mar/2016:09:08:56.989] "POST /UIDL/?v-uiId=0 HTTP/1.1" 200 334 "{https://www.referer.com/|Mozilla/5.0 (Linux; Android 4.4.4; GT-I9060I Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Saf}"

Haproxy

capture request header Referer len 128
capture request header User-Agent len 128

log-format %si:%sp\ %ci\ [%t]\ "%r"\ %ST\ %B\ "%hr"

# %si - your server ip - very usefull if you have multiple application
# %sp - your server port
# %ci - user ip
# %t  - datetime in haproxy format
# %r  - request
# %ST - status code
# %B  - data reponse length
# %hr - captured headers separated by "|" (Referer|User-Agent)
    
por 22.03.2016 / 09:29