如何从Logstash HTTP Filter获取HTTP响应状态码?
Logstash HTTP Filter获取响应状态码的解决办法
默认情况下HTTP Filter的target_headers只会返回常规响应头,不会包含状态码,要拿到状态码可以试试这两种方法:
方法一:读取事件元数据
HTTP Filter会把响应的状态码这类元数据自动存在事件的[@metadata]字段里,你可以用mutate插件把它提取到自定义字段里:
filter { http { url => "someUrl" verb => "GET" target_body => "apiResponse" target_headers => "apiResponseHeader" } mutate { add_field => { "http_response_status" => "%{[@metadata][http_filter][status]}" } } }
不同版本的Logstash元数据路径可能有差异,如果上面的路径取不到,试试[@metadata][http][status]。不确定的话可以先加个stdout输出,打印整个事件的元数据确认:
output { stdout { codec => rubydebug { metadata => true } } }
方法二:用target_status参数(限新版)
如果你的Logstash版本比较新,HTTP Filter已经支持target_status参数,直接配置就能指定字段存储状态码:
filter { http { url => "someUrl" verb => "GET" target_body => "apiResponse" target_headers => "apiResponseHeader" target_status => "http_response_status" } }
配置后状态码会直接写入http_response_status字段。
内容的提问来源于stack exchange,提问作者taewonee
相关产品推荐
相关产品推荐

