【发布时间】:2018-03-22 17:02:36
【问题描述】:
我正在尝试在 fluentd 中使用 geoip 和 nginx 日志。 至于 nginx,我使用的是以下过滤器:
<filter *.nginx>
@type record_transformer
enable_ruby
<record>
log ${ if ( !record['log'].match(/"upstream_cache_status": "HIT"/).nil? ) then record['log'].gsub(',"upstream_response_time ":','') else record['log'] end }
@timestamp ${require 'time'; a=record['log'].match( /\"time_local\": \"([0-9.]*)\"/); if !a.nil? then Time.at(a[1].to_f).utc.iso8601(3) else record['@timestamp'] end }
</record>
</filter>
<filter *.nginx>
@type parser
format json
key_name log
reserve_data true
</filter>
至于 fluentd 中的 geoip,我用的是:
<filter *.nginx>
@type geoip
geoip_lookup_key true_client_ip
enable_key_country_code geoip_country
enable_key_city geoip_city
enable_key_latitude geoip_lat
enable_key_longitude geoip_lon
flush_interval 5s
</filter>
结果我得到以下输出:
{
"_index": ".hicham",
"_type": "forever",
"_id": "AWJOoZ1cPXjXRJAPgU2P",
"_version": 1,
"_score": null,
"_source": {
"log": "IP - - [22/Mar/2018:16:53:54 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"curl/7.47.0\" \"-\"\n",
"stream": "stdout",
"container_name": "nginx",
"@service": "nginxService",
"@timestamp": "2018-03-22T16:53:54.939Z",
},
"fields": {
"@timestamp": [
1521737634939
]
}
}
所以输出中没有 geoip 字段。
有什么解决办法吗?
【问题讨论】: