ELK7.x 收集nginx日志支持地图显示Kibana 地标图可视化

一 下载geoip

官网 地址 https://dev.maxmind.com/geoip/geoip2/geolite2/
我下的是这个包
 GeoLite2-City 不知道别的有什么区别 
下载 然后解压到 /usr/share/logstash/  这个目录
yum install geoipupdate
 vim  /etc/GeoIP.conf
添加
ProductIds GeoLite2-City
ll /usr/share/GeoIP

二 更改nginx配置文件,设置nginx日志格式

log_format  main  '{"@source":"$server_addr",'
                  '"hostname":"$hostname",'
                  '"ip":"$remote_addr",'
                  '"client":"$remote_addr",'
                  '"request_method":"$request_method",'
                  '"scheme":"$scheme",'
                  '"domain":"$server_name",'
                  '"referer":"$http_referer",'
                  '"request":"$request_uri",'
                  '"args":"$args",'
                  '"size":$body_bytes_sent,'
                  '"status": $status,'
                  '"responsetime":$request_time,'
                  '"upstreamtime":"$upstream_response_time",'
                  '"upstreamaddr":"$upstream_addr",'
                  '"http_user_agent":"$http_user_agent",'
                  '"https":"$https"'
                  '}';


这个按自己的nginx日志修改就行了

回到顶部

三 logstash配置文件


input {
   beats {
     port => 5045
  }
}

filter {
    #if [type] == "nginx_log"{
        mutate {
          convert => [ "status","integer" ]
          convert => [ "size","integer" ]
          convert => [ "upstreatime","float" ]
          convert => ["[geoip][coordinates]", "float"]
          remove_field => "message"
        }

        date {
            match => [ "timestamp" ,"dd/MMM/YYYY:HH:mm:ss Z" ]
        }
        geoip {
          source => "client"  ##日志格式里的ip来源,这里是client这个字段(client":"$remote_addr")
          target => "geoip"
          database =>"/usr/share/logstash/GeoLite2-City.mmdb"   ##### 下载GeoIP库
          add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
          add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
        }
        mutate {
          remove_field => "timestamp"
        }
   # }
}

output {
        if [type] == "nginx_logs"{
          elasticsearch {
          hosts => ["http://172.1.1.1:9200"]
          index => "logstash-nginx-%{+YYYY-MM}"
        }
    }
    stdout { codec => rubydebug }
}


注意index必须以logstash开头 不然无法识别为地理位置

启动logstash

四 设置filebeat

filebeat.inputs:
# 收集 nginx 日志
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log
  tags: ["nginx_logs"]
 # 日志是json开启这个
  json.keys_under_root: true
  json.overwrite_keys: true
  json.add_error_key: true
  # 如果值为ture,那么fields存储在输出文档的顶级位置
  fields_under_root: true
  fields:
    app: sanwenqian
    type: nginx_logs


filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
setup.kibana:
output.logstash:
  hosts: ["172.1.1.1:5045"]
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  

启动filebeat

 

五 kibana设置

期间遇到的问题:field字段是灰色的无法选择,解决办法,第一个你的索引必须以logstash开头,第二找到managerment-index patterns-找到对应的索引点进去,去刷新如下所示:

现在你应该可以在地图页面上看到你的访问记录 了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值