美文网首页
ELS-logstash的geoip使用

ELS-logstash的geoip使用

作者: N33_LvQing | 来源:发表于2019-01-17 13:17 被阅读0次

    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

    相关文章

      网友评论

          本文标题:ELS-logstash的geoip使用

          本文链接:https://www.haomeiwen.com/subject/ykvudqtx.html