我们的ELK架构如下图所示,各个应用节点日志直接通过rsyslog实时传输到Logstash节点,Logstash对生成的各节点日志文件做处理后传输到Elashticsearch。

#geiop配置部分使用add_field添加了一个坐标字段,使用remove_field删除了多余的经度、纬度坐标。
#第一个mutate配置使用convert转换了部分字段的类型,使用remove_filed删除了message字段,message字段是原日志内容,已经分配到了各个字段,所以是多余的直接删除。
#GeoIP 库数据较多,如果你不需要这么多内容,可以通过 fields 选项指定自己所需要的。下例为全部可选内容:
#注意:index索引的名称要以logstash开头,否则kibana在生成地图选择field类型时会报“No Compatible Fields: The “[*****]YYYY-MM” index pattern does not contain any of the following field types: geo_point”的错误。
#根据日志格式形成正则表达式,logstash有大量的内置变量,直接套用即可,如果某些字段不能正确匹配,可以使用DATA变量(代表任意字符)。
#logstash默认pattern目录为/usr/local/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.0/patterns,在里面也可找到logstash自带的正则表达式。
Elashticsearch不需要其他额外配置,重启Logstash后,Kibana中便可发现日志,利用以上配置文件,得到的字段包括:
例1:统计日访排名前5的城市
例2:统计排名前5的城市访问对多的URI
例3:访问排名前10位外国国家以及对应IP
最后,将绘制的visualize都添加到dashboard中,做统一展示:
参考:
Kibana的图形化-Tile
logstash-patterns-core