热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELK图示nginx中ip的地理位置

一、环境准备:1.ELKstack环境一套2.geolite数据库文件二、下载geolite数据库(logstash机器上解压,logstash需调用):geolite官网:&a

一、环境准备:

  1. ELK stack 环境一套
  2. geolite数据库文件

二、下载geolite数据库(logstash机器上解压,logstash需调用):

geolite官网:https://dev.maxmind.com

[root@localhost local]# tar xf GeoLite2-City_20181211.tar.gz
[root@localhost local]# ll GeoLite2-City_20181211
total 60604
-rw-r--r-- 1 es es       55 Dec 13 03:56 COPYRIGHT.txt
-rw-r--r-- 1 es es 62044006 Dec 13 03:56 GeoLite2-City.mmdb  //数据库文件,logstash配置文件中直接引用即可
-rw-r--r-- 1 es es      433 Dec 13 03:56 LICENSE.txt
-rw-r--r-- 1 es es      116 Dec 13 03:56 README.txt

三、编辑logstash配置文件

[root@localhost logstash]# cat conf.d/logstash-sample.conf 
input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => {
      patterns_dir => ["/usr/local/logstash/patterns"]
      "message" => "%{COMMONNGINXLOG}"
    }
    overwrite => "message"
  }
  geoip {
    source => "clientip"
    target => "geoip"
    database => "/usr/local/GeoLite2-City_20181211/GeoLite2-City.mmdb"
    add_field => ["[geoip][coordinates]", "%{[geoip][longitude]}" ]
    add_field => ["[geoip][coordinates]", "%{[geoip][latitude]}"  ]
  }
  mutate {
    cOnvert=> [ "[request_time]","float" ]
  }
}


output {
  elasticsearch {
    hosts => ["http://192.168.20.4:9200"]
    index => "logstash-kibana_nginx"   //这里之前还有一个logstash_kibana_nginx。注意这里是_与-的区别。
  }
}

配置解释

  • geoip:IP查询插件,默认安装
  • source: 需要通过geoip插件处理的filed,根据实际情况中nginx日志ip的field_name来修改。
  • target: 解析后的geoip地址数据,存放在定义的字段中,默认geoip这个字段
  • database: 指定下载的数据库文件
  • add_field: 添加经纬度,地图的定位显示是依靠经纬度来实别的

四、展示

打开kibana访问界面:

上图elasticsearch中存储了两个index

如上图,使用logstash_kibana_nginx索引添加地图展示时,无法选择相应field,并提示No Compatible Fields: The "logstash_kibana_nginx" index pattern does not contain any of the following field types: geo_point。提示没有相应"geo_point"类型,可是我的配置文件中根本就没有定义相应类型的啊!那只可能是程序自带的问题了。正好我又上网查阅别人的教程中发现似乎只有index不一致,于是便照着修改了一个一模一样的配置把index修改成logstash-kibana_nginx。等几秒logstash自动reload后,如下图就可以选择展示了:


![](https://img2018.cnblogs.com/blog/1202606/201812/1202606-20181219173919870-1697487056.png)

参考博客地址:https://www.jianshu.com/p/07b82092d4af

五、修改kibana默认地图为国内高德地图

[root@localhost kibana]# echo "tilemap.url: \'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&" >> config/kibana.yml

添加完成后重启生效:

Question

为什么得使用logstash-开头的index可以有geo_point类型?在网上和文档中一番查找,最后发现logstash默认自带的template是以template" : "logstash-*

[root@localhost logstash]# cat vendor/bundle/jruby/2.3.0/gems/logstash-output-elasticsearch-9.2.4-java/lib/logstash/outputs/elasticsearch/elasticsearch-template-es6x.json  //6版本elasticsearch默认上传模版
{
  "template" : "logstash-*",     //模版名称,即index名匹配规则
  "version" : 60001,
  "settings" : {
    "index.refresh_interval" : "5s"
  },
  "mappings" : {
    "_default_" : {
      "dynamic_templates" : [ {
        "message_field" : {
          "path_match" : "message",      
          "match_mapping_type" : "string",
          "mapping" : {
            "type" : "text",
            "norms" : false
          }
        }
      }, {
        "string_fields" : {
          "match" : "*",
          "match_mapping_type" : "string",
          "mapping" : {
            "type" : "text", "norms" : false,
            "fields" : {
              "keyword" : { "type": "keyword", "ignore_above": 256 }
            }
          }
        }
      } ],
      "properties" : {
        "@timestamp": { "type": "date"},
        "@version": { "type": "keyword"},
        "geoip"  : {
          "dynamic": true,
          "properties" : {
            "ip": { "type": "ip" },
            "location" : { "type" : "geo_point" },
            "latitude" : { "type" : "half_float" },   
            "longitude" : { "type" : "half_float" }   
          }
        }
      }
    }
  }
}
[root@localhost logstash]# 

下一章会专门写一篇关于template,敬请期待。


推荐阅读
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • logstash处理[2020121208:08:08.888][RROR][example][rce]数据[elk@node2conf]$catlogstash04.confi ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 在尝试通过自定义端口部署Spring Cloud Eureka时遇到了连接失败的问题。本文详细描述了问题的现象,并提供了有效的解决方案,以帮助遇到类似情况的开发者。 ... [详细]
  • 本文详细介绍了Elasticsearch中的分页查询机制,包括基本的分页查询流程、'from-size'浅分页与'scroll'深分页的区别及应用场景,以及两者在性能上的对比。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了实时流协议(RTSP)的基本概念、组成部分及其与RTCP的交互过程,详细解析了客户端请求格式、服务器响应格式、常用方法分类及协议流程,并提供了SDP格式的深入解析。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http:blog.csdn.netjiangjunshow也欢迎大家转载本篇文章。分 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
author-avatar
王慧1019
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有