logstash graphite输出使用变量度量标准名称

时间:2014-10-17 15:17:22

标签: variables filter logstash metrics graphite

我正在使用logstash(在centos上为1.4.2),使用指标过滤器和石墨输出来绘制访问日志HTTP响应代码。

基本配置有效。这是我的工作配置文件。

input {
  file {
     path => "/var/log/nginx/access.log"
  }
}
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
  metrics {
    meter => [ "http.%{response}" ]
    add_tag => "metrics" 
  }
}
output {
  if "metrics" in [tags] {
    graphite {
      host => "localhost"
      port => "2003"
      metrics => [ "mymetric.http.200", "%{http.200.rate_1m}"]
    }
  }
}

输出正确显示,例如

mymetric.http.200 0.8430647815095349 1413557739

但是,我想在多个服务器(主机)上安装相同配置文件,并在主题名称中包含主机名。

我尝试在指标定义中使用%{host}变量,例如

metrics => [ "mymetric.%{host}.http.200", "%{http.200.rate_1m}" ]

但这并没有向石墨发送任何东西

 "Message is empty..." 
logstash调试输出中的

。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我目前遇到了类似的问题。作为一种解决方法,我添加了我想要的仪表定义模式。

meter => [ "mymetric.%{host}.http.%{response}" ]

要测试石墨的输出,您可以使用带有石墨编解码器的输出。

stdout {
    codec => graphite {
        fields_are_metrics => true
    } 
}