![使用 varnish 为 statsd 规范化虚拟主机名](https://linux22.com/image/610972/%E4%BD%BF%E7%94%A8%20varnish%20%E4%B8%BA%20statsd%20%E8%A7%84%E8%8C%83%E5%8C%96%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E5%90%8D.png)
设置
我正在收集统计数据漆和Logstash,配置为增加统计信息根据服务器日志中的 vhost 和结果代码进行计数器。我也有碳创造耳语档案石墨。
我正在阅读日志清漆配置为将 vhost 和请求配置添加到标准日志中:
VARNISHNCSA_LOG_FORMAT="%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\" %{Host}i %{Varnish:hitmiss}x"
我的 logstash 发货人配置如下:
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}"
}
}
问题
数百个不同的计数器正在被创建碳由于用户浏览器中输入的域名不同,因此,例如,我有
www_mywebsite_com
WWW_MyWebsite_Com
www_mywebsite_net <-- an alias
...etc...
显然,我的图表遗漏了这些,因为我的图表只查看虚拟主机规范名称下的统计数据。
我希望事先进行一些规范化过程。我可以编写一个脚本来获取“原始”域并输出“真实”虚拟主机名,但我不确定如何集成它。我应该把它放在 logstash 配置中,还是放在 statsd 或 carbon 中?我可以使用 carbon 的存储聚合功能做些什么吗?
更新:我通过在缓存前运行 carbon 的聚合器守护程序并向 中添加规则来解决最坏的情况rewrite-rules.conf
。但是,该文件的文档很少,我无法执行更强大的操作,例如将所有内容转换为小写。
答案1
您可以使用 mutate 过滤器将字段变为小写:
filter {
mutate {
lowercase => [ "fieldname" ]
}
}
欢呼吧,Jan