HAProxy会截断某些日志消息的host_header部分

我有一个HAProxy实例configuration为login到一个特殊的本地守护进程,将日志文件夹入数据库。 我看到一些日志消息的一些问题,其中host_header字段由于特定的原因被截断。 例如,而不是:

 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" 

我懂了:

 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" 

请注意,host_header已从application.example.com截断为application.examp

这是在试图通过这些日志农场的工作投掷几个扳手,所以有什么理由为什么发生这种情况?

HAProxy版本是在Ubuntu 12.04上运行的1.4.18-0ubuntu1

由于这些具有完全相同的时间戳和时间,所以我猜你不包括实际的例子。

没有这些例子,我能想到的最好的办法就是尝试手动设置这些头域的长度,如下所示:

捕获请求头主机len 50

还要注意的是,由于系统日志stream量是UDP,所以预计会有一定程度的损坏(虽然这听起来比这更具体)。 HAProxy中还有一个最大长度设置。 我从来没有跟着增加这个,但如果你想在这里尝试是我与HAProxy作者的通信:

 >我可以增加由HAProxy发出的系统日志消息的长度吗?
 >
 >它会像改变一样简单:
 > #define MAX_SYSLOG_LEN 1024
 >在
 > include / types / log.h
 >
 >还是有更多的呢?

你可以尝试,但它可能会做任何事情取决于你的系统日志服务器。
有些人接受这些信息,有些人会截断YMMV。“

从我看到的代码中,这应该是不可能的(检查proto_http.c中的capture_headers())。 标题被截断到请求的长度。 因为这个原因,如果你确定你看到这个行为是通过同一个主机通过同一个前端的请求的话,我能想到的唯一可能性是你有时有两个头字段,一个是缩短的值,另一个是正常的,haproxy只logging第一个,而服务器使用最后一个。