Logstash http filter调用API返回结果解析及字段添加方案咨询
解决方案
完整配置示例
filter { # 调整后的http filter配置 http { url => "rest/api/subnet/check_subnet_from_ip/" query => { "ip" => "%{[source][ip]}" } verb => GET # 指定API返回结果存储到独立字段,避免污染原有事件字段 target => "subnet_api_resp" # 可选配置:请求失败时自动删除报错字段,避免冗余数据 remove_field => ["[http_request_failure]"] } # 提取字段+兼容空返回逻辑 if [subnet_api_resp][name] { mutate { add_field => { "[subnet][name]" => "%{[subnet_api_resp][name]}" "[subnet][cidr]" => "%{[subnet_api_resp][cidr]}" } } } else { # 空返回/请求失败时填充默认值,可根据业务需求修改 mutate { add_field => { "[subnet][name]" => "N/A" "[subnet][cidr]" => "N/A" } } } # 可选配置:不需要保留原始API返回结果时可删除该字段 # mutate { # remove_field => ["subnet_api_resp"] # } }
配置说明
- http filter默认会自动解析
Content-Type为application/json的返回内容,直接转为结构化字段,无需额外加JSON解析插件。如果你的API返回头没有正确标识JSON格式,可以在http filter之后新增一行json { source => "subnet_api_resp" target => "subnet_api_resp" }手动解析返回内容。 - 分支判断逻辑自动覆盖三种场景:API正常返回子网信息、API返回空对象
{}、API请求超时/失败无返回,不会出现字段缺失的问题。 - 提取后的新字段统一存在
subnet结构下,你可以根据需求修改为自定义的字段路径。
内容的提问来源于stack exchange,提问作者EviSvil
相关产品推荐
相关产品推荐

