摘要
在平常使用时,利用logstash
获取日志信息,有时需要将日志中的IP地址转换成坐标或是实际的位置,这里提供一种可行的解决方案。(笔者实际生产环境中使用这种方案,仅供参考)
解决方案
将原始IP,利用Maxmind GeoLite2 databases
数据库转换成geoip
。可以参考官方文档
这里利用两种过滤器,首先利用dissect
解析日志,其次利用geoip
将IP转换成坐标地址。
input {
file {
path => "/home/server/logs/web_log.log*" #要监听的日志文件路径
type => web_log #TODO 日志类型
exclude => "*.gz" #不想监听的文件规则,基于glob匹配语法
start_position => "end" #第一次丛头开始读取文件 beginning or end
stat_interval => "3" #定时检查文件是否更新,默认1s
}
}
filter {
dissect {
mapping => {
message => "%{username}###%{url}###%{method}###%{start_time}###%{ip}"
}
}
geoip {
source => "ip"
target => "geoip"
# 可以指定IP数据库 database => "/server/Ge