ELS-logstash的geoip使用

logstash得grok可以对收集得数据进行过滤,geoip可以对过滤后得数据字段再进行细分,然后根据内建得geoip库来得知访问得ip来自于哪个城市了。官方文档详解地址https://www.elastic.co/guide/en/logstash/current/logstash-config-for-filebeat-modules.html#parsing-nginx
首先我们需要去下载地址库,可以自行选择城市还是国家。https://dev.maxmind.com/geoip/geoip2/geolite2/
这个数据库因该放在logstash主机上,能够被过滤器插件访问和使用。

首先将数据库下载至logstash目录并解压
 wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
tar -xvf GeoLite2-City.tar.gz
将GeoLite2-City.mmdb移动到目录下,然后将目录删了即可

然后我们修改logstash的配置文件

vim /etc/logstash/conf.d/ceshi.conf

input {
                redis {
                        key => "filebeat"
                        data_type => "list"
                        password => "lvqing"
                }
}


filter {
      grok {
        match => { "message" => ["%{IPORHOST:[nginx][access][remote_ip]} - %{DATA:[nginx][access][user_name]} \[%{HTTPDATE:[nginx][access][time]}\] \"%{WORD:[nginx][access][method]} %{DATA:[nginx][access][url]} HTTP/%{NUMBER:[nginx][access][http_version]}\" %{NUMBER:[nginx][access][response_code]} %{NUMBER:[nginx][access][body_sent][bytes]} \"%{DATA:[nginx][access][referrer]}\" \"%{DATA:[nginx][access][agent]}\""] }
        remove_field => "message"
      }
      mutate {
        add_field => { "read_timestamp" => "%{@timestamp}" }
      }
      date {
        match => [ "[nginx][access][time]", "dd/MMM/YYYY:H:m:s Z" ]
        remove_field => "[nginx][access][time]"
      }
      useragent {
        source => "[nginx][access][agent]"
       target => "geoip"
        remove_field => "[nginx][access][agent]"
      }
      geoip {
        source => "[nginx][access][remote_ip]"
        target => "[nginx][access][geoip]"
        database => "/etc/logstash/GeoLite2-City.mmdb"
      }
}

output {
        elasticsearch {
                hosts => ["192.168.31.200:9200", "192.168.31.201:9200", "192.168.31.203:9200"]
                index => "logstatsh-ngxaccesslog-%{+YYYY.MM.dd}"
        }
}

注意:
    1、输出的日志文件名必须以“logstash-”开头,方可将geoip.location的type自动设定为"geo_point";
    2、target => "geoip"

可以看到日志已经被成功分切了


image.png

既然geoip可以基于remoteip来分析访问的客户端来自于哪个城市,接下来我们测试一下这个场景
用echo命令将自己编写的日志信息追加到日志文件中

 echo '136.11.65.68 - - [17/Jan/2019:11:19:46 +0800] "GET / HTTP/1.1" 404 3650 "-" "curl/7.29.0" "121.1.17.2"' >> /var/log/nginx/access.log

image.png

然后可以用geoip插件展示地图热力图
https://elasticsearch.cn/article/494

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 搜索引擎介绍Elasticsearch的使用Logstash的使用Filebeat的使用Kibana的使用Elas...
    哈喽别样阅读 946评论 1 4
  • 本文作者:罗海鹏,叩丁狼高级讲师。原创文章,转载请注明出处。 前言 在第九章节中,我们已经安装好Logstash组...
    叩丁狼教育阅读 2,612评论 0 3
  • 前言 在第九章节中,我们已经安装好Logstash组件了,并且启动实例测试它的数据输入和输出,但是用的是最简单的控...
    LuoHaiPeng阅读 2,611评论 0 9
  • 简介 ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。后文...
    mysia阅读 3,643评论 1 14
  • 相遇总是来得很慢,离别总是常事, 一直未结束的异地恋,开始结束都是相隔两地, 从未能熟悉彼此,也许,现在的想法是对...
    泡饭泡菜阅读 204评论 0 0