我使用Logstash从Varnish收集统计信息, Logstashconfiguration为根据服务器日志中的虚拟主机和结果代码来增加statsd计数器。 我也有碳为石墨创造耳语档案。
我正在从varnishncsa读取日志,该日志configuration为向标准日志添加虚拟主机和请求处置:
VARNISHNCSA_LOG_FORMAT="%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\" %{Host}i %{Varnish:hitmiss}x"
我的logstash托运人configuration如下所示:
input { file { path => "/var/log/varnish/varnishncsa.log" type => varnish } } filter { grok { type => varnish pattern => "%{COMBINEDAPACHELOG} %{NOTSPACE:vhost} %{WORD:varnish_handling}" pattern => "%{COMBINEDAPACHELOG}" } mutate { rename => [ 'response', 'status' ] } } output { statsd { type => varnish host => "my-statsd-host" port => 8125 sender => "%{@fields.vhost}" increment => "varnish.response.%{@fields.status}" increment => "varnish.handling.%{@fields.varnish_handling}" } }
由于进入用户浏览器的域名有所不同,因此正在创build数百个不同的计数器。 所以,例如,我有
www_mywebsite_com WWW_MyWebsite_Com www_mywebsite_net <-- an alias ...etc...
很明显,这些图表被我的图表所忽略,图表只查看了vhost规范名称下的统计信息。
我希望事先进行一些规范化的过程。 我可以编写一个脚本来取一个“原始”域名,并吐出一个“真实的”虚拟主机名称,但是我不确定如何整合它。 我把它放在logstashconfiguration,或statsd,或碳? 我可以使用碳的存储聚合function吗?
更新 :我在caching之前运行carbon的aggregator守护进程,并在rewrite-rules.conf添加了规则,从而解决了最糟糕的情况。 然而,这个文件只有很less的文档,我不能做更强大的事情,比如把所有东西压缩成小写。
你可以使用mutatefilter小写字段:
filter { mutate { lowercase => [ "fieldname" ] } }
Logstash 1.1.13文档
干杯,1月