我正在使用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调试输出中的。有什么想法吗?
答案 0 :(得分:1)
我目前遇到了类似的问题。作为一种解决方法,我添加了我想要的仪表定义模式。
meter => [ "mymetric.%{host}.http.%{response}" ]
要测试石墨的输出,您可以使用带有石墨编解码器的输出。
stdout {
codec => graphite {
fields_are_metrics => true
}
}