使用 varnish 为 statsd 规范化虚拟主机名

使用 varnish 为 statsd 规范化虚拟主机名

设置

我正在收集统计数据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" ]
  }
}

Logstash 1.1.13 文档

欢呼吧,Jan

相关内容