HAProxy trunca a parte host_header de algumas mensagens de log

3

Eu tenho uma instância HAProxy configurada para fazer logon em um daemon especial que envia os arquivos de log para um banco de dados. Vi alguns problemas em algumas mensagens de log em que o campo host_header está truncado por nenhum motivo específico. Por exemplo, em vez de:

56:34 haproxy[892]: 1.2.3.4:17907 [14/May/2012:13:56:33.999] app.prod app.prod/webp01 0/0/0/161/524 200 33627 - - --NI 0/0/0/0/0 0/0 {application.example.com} "GET /?feed=rss2 HTTP/1.0"

Eu vejo:

56:34 haproxy[892]: 1.2.3.4:17907 [14/May/2012:13:56:33.999] app.prod app.prod/webp01 0/0/0/161/524 200 33627 - - --NI 0/0/0/0/0 0/0 {application.examp} "GET /?feed=rss2 HTTP/1.0"

Observe que o host_header foi truncado de application.example.com para application.examp .

Isso está jogando algumas chaves em tentativas de farm através desses logs, então, há alguma razão para isso acontecer?

A versão do HAProxy é 1.4.18-0ubuntu1 em execução no Ubuntu 12.04.

    
por growse 14.05.2012 / 15:04

2 respostas

4

Como esses têm os mesmos carimbos de tempo e intervalos de tempo, acredito que você não esteja incluindo exemplos reais.

Sem esses exemplos, o melhor que posso pensar é tentar definir manualmente o comprimento desses campos de cabeçalho com algo como:

capture request header Host len 50

Observe também que, como o tráfego do syslog é UDP, uma certa quantidade de corrupção é esperada (embora isso pareça mais específico do que isso). Há também uma configuração de tamanho máximo no HAProxy. Eu nunca segui com o aumento deste, mas se você quiser tentar aqui é a minha correspondência com o autor HAProxy:

> Can I increase the length of syslog messages sent out by HAProxy?
>
> Would it be as simple as changing:
> #define MAX_SYSLOG_LEN          1024
> In
> include/types/log.h
>
> Or is there more to it than that?

You can try, but it may do anything depending on your syslog server.
Some accept those messages, some do truncate the lines, YMMV."
    
por 14.05.2012 / 16:01
3

Pelo que estou vendo no código, isso não deve ser possível (verifique capture_headers () em proto_http.c). Os cabeçalhos são truncados para o comprimento que foi solicitado. Por esse motivo, se você tiver certeza de que está vendo esse comportamento em solicitações de um mesmo host que passa pelo mesmo frontend, a única possibilidade em que consigo pensar é que às vezes você tem dois campos de cabeçalho, um com o valor encurtado e outro com o normal, e que haproxy registra apenas o primeiro enquanto o servidor usa o último.

    
por 18.05.2012 / 08:01