使用logstash6 的 grok 插件分析IIS日志,并创建Kibana6图形化看板

1.添加filter grok plugin 处理IIS 日志

logstash能成功收集IIS日志后,根据日志的格式,再次编辑前端logstash 的shipper.conf 文件,添加filter。
日志的格式为默认的IIS日志:

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2018-03-24 01:00:15 xx.xx.xxx.xxx HEAD / - 80 182.92.69.212 Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+Win64;+x64;+Trident/5.0) 200 0 0 169
2018-03-24 01:00:20 xx.xx.xx.xxx HEAD /download/index - 80 115.28.203.70 Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+Win64;+x64;+Trident/5.0) 200 0 0 102

根据格式,对应编辑 grok 中的规则 ,另外这边也加入了geoip的插件,让我们可以在KIBANA中获取到客户端IP的地理位置信息,用的都是默认的数据库

grok plugin 介绍
geoip plugin 介绍
date 插件介绍

filter{
    if "iislog2" in [tags]{   #匹配对应filebeat配置文件 filebeat.yml 的tags配置
        grok {
        match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} (%{IPORHOST:s-ip}|-) (%{WORD:cs-method}|-) %{NOTSPACE:cs-uri-stem} %{NOTSPACE:cs-uri-query} (%{NUMBER:s-port}|-) (%{IPORHOST:c-ip}|-) %{NOTSPACE:cs-useragent} (%{NUMBER:sc-status}|-) (%{NUMBER:sc-substatus}|-) (%{NUMBER:sc-win32-status}|-) (%{NUMBER:time-taken}|-)"]
        }
        date {    #修改@timestamp的时间为当前时区,如果你觉得使用UTC时间来做日志的操作没问题,查询,可以去掉这个date的配置
            match => [ "log_timestamp", "YYYY-MM-dd HH:mm:ss" ]
            timezone => "+00:00" #因为kibana显示日志的时候,会加上当前浏览器时区的时差,所以这边只需要+0000 就可以
        }
        geoip {
            source => "c-ip"      ##过滤内容来源
            target => "geoip"     ##属性设定值
        }

    }
}

2.修改后端logstash的indexer 配置

根据 前文 的配置,从redis读取数据,输出到elasticsearch 的时候,所用的索引名称是 iislog2-%{+YYYY.MM.dd}" ,这样的配置会造成一个问题,就是当我们创建kibana 的坐标图
coordinate map 的时候
这里写图片描述
会报一个错误:

No Compatible Fields: The “xxx-xxx*” index pattern does not contain any of the following field types: geo_point

kibana找不到一个类型是geo_point 的字段,所以没办法去创建这个坐标图,但是我们的确是使用了geoip插件,加入了对应地址位置的字段的,但是类型不对。
这里要说明一下elasticsearch的模板,由于我们创建索引的时候,名称是 iislog2-%{+YYYY.MM.dd} 并没有应用elasticsearch的模板,geoip插件创建的geoip.location字段的类型不是geo_point,所以生成坐标图的时候,kibana找不到我们的type 是geo_point 的字段,会创建失败。
如下图,我们创建索引的时候必须是 logstash-*,当然我们也可以添加模板,自定义哪些索引应用模板 。
ps:改变一个模板将不会影响在已经存在的索引上。
es的默认模板设置

这样我们的geo_ip.location的type就是geo_point 了,在创建kibana的坐标图的时候不会因为找不到type是geo_point的字段而报错
这里写图片描述
后端lostash indexer.conf配置修改,调整index的名称为logstash-开头

output{
    if [type] == "iislog2" {      #写入system 日志到 es
         elasticsearch{
          hosts => ["172.16.1.176:9200"]
          index => "logstash-iislog2-%{+YYYY.MM.dd}"  #使用system+ 日期,这个格式的索引
        }
    }
}

启动前端以及后端的logstash

3.验证日志

启动ELK ,grok 帮我们分拆好字段,同样geoip插件帮我们创建了地理位置的一些字段

这里写图片描述

4.创建Kibana看板

打开kibana ,点击Visualize 创建新的坐标地图,选择lostash-iis* 日志

这里写图片描述
选择使用geoip.location字段生成
这里写图片描述
点击上方保存后,可以将图形添加到Dashboard 看板中
这里写图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值