作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 NGINX 日志格式为 JSON:
log_format le_json '{ "@timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"response_time": $upstream_response_time, '
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
我的日志被 filebeat 拾取并发送到具有以下配置的 Logstash:
input {
beats {
port => 5044
codec => "json"
}
}
filter {
geoip {
database => "C:/GeoLiteCity.dat"
source => "[remote_addr]"
}
}
output {
elasticsearch {
template => "C:/ELK/logstash-2.2.2/templates/elasticsearch-template.json"
template_overwrite => true
hosts => ["127.0.0.1"]
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
我遇到的问题是$upstream_response_time。当没有回复时,NGINX 会在此帖子上添加“-”。正如你所看到的,我没有在 $upstream_response_time 周围放置“”,因为我希望它作为一个数字,这样我就可以在 Kibana 中使用它执行计算并显示。当发送“-”时,我在 Logstash 中收到 jsonparsefailure,因为它不是数字。
我想将所有“-”设置为 0。执行此操作的最佳方法是什么?我尝试在 nginx-config 中过滤它没有成功。我认为这需要在发送到 Logstash 之前完成,因为这就是解析失败发生的地方。
有什么想法吗?
最佳答案
试试这个:
map $upstream_response_time $temprt {
default $upstream_response_time;
"" 0;
}
$upstream_response_time
可以是数字,也可以未设置。 Nginx 将未设置的变量记录为破折号 (-
),但 map
将它们视为空字符串。
关于json - NGINX 日志过滤器 $upstream_response_time JSON ELK "-"parsefailure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36788856/
我的 NGINX 日志格式为 JSON: log_format le_json '{ "@timestamp": "$time_iso8601", ' '"rem
我是一名优秀的程序员,十分优秀!