通用技术 ELK-kibana 来源热点图

xinxi · February 05, 2020 · Last by 活着丶 replied at March 20, 2020 · 12138 hits
本帖已被设为精华帖!

介绍

通常我们拿到nignx日志里边有很多请求相关日志,比如设备、设备ip、agent等参数.

统计设备ip在全国分布次数,大致能分支大部分app应用在全国各城市及地区的使用情况.

geoip

Geolocation IP,基于IP查询的地理位置的意思

geoip数据库

https://www.maxmind.com/zh/geoip2-city

下载GeoLite2-City.mmdb内置数据,可以使用GeoLite2-City.mmdb数据库把ip换成经纬度.

python库geoip2

python也提供了geoip2库,可以快速查询一个ip的地理位置

安装

pip install geoip2

脚本

import json
import geoip2.database

reader = geoip2.database.Reader('./static/GeoLite2-City.mmdb')

response = reader.city('118.254.223.207')

print(response.country.iso_code)
print(response.city.name)
print(response.location.latitude)
print(response.location.longitude)

image

数据准备

数据是从网关日志中提取最近5分钟的请求.

json格式,其中里边包含了"client_ip"客户端ip.

通过logstash中自带的geoip插件,把ip转换成经纬度.

image

logstash配置

从本地加载一个json日志

input {

file {
path => "/Users/xinxi/Documents/sndd/crawlerfeedback/static/downloaded_data.log"
start_position => beginning
codec => "json"
}
}

filter {
geoip {
source => "client_ip"
# 指定需要的字段
# fields => ["country_name", "continent_code", "region_name", "city_name", "latitude", "longitude"]

}
}


output {
elasticsearch {
hosts => ["192.168.1.232:9200"]
index => "logstash-nginx-json-%{+YYYY.MM.dd}"
}
# 输出到elk
stdout {
codec => rubydebug
# 输出到屏幕上
}
}

执行命令

-e:在命令行执行;input输入,stdin标准输入,是一个插件;output输出,stdout:标准输出。默认输出格式是使用rubudebug显示详细输出,codec为一种编解码器

logstash -e 'input {stdin{}} output {stdout{}}'

将屏幕输入的字符串输出到elasticsearch服务中

logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["127.0.0.1:9200"] } }'

增加一个filter过滤去

logstash -e 'input { stdin {} } filter{ geoip { source=>"message" fields => ["country_name","region_name","city_name","location"] } } output { elasticsearch {  hosts => ["192.168.1.232:9200"] index => "logstash-geoip-data-%{+YYYY.MM.dd}"  } stdout { codec=>rubydebug } }'

image

执行配置文件

/data/logstash-6.5.1/bin/logstash -f logstah_agent.conf --path.data=/logstash3

这是通过geoip解析出来的位置

image

kibana中配置MAP

使用CoordinateMap

image

配置数据

使用Genhash聚合,geoiplocation作为字段

image

image

参考

Logstash Geoip 插件使用

https://www.jianshu.com/p/1b4104b28f70

logstash geoip 库测试

https://www.jianshu.com/p/4deeecd5bff8

ELK日志分析系统之logstash7.x最新版安装与配置

https://www.cnblogs.com/eeexu123/p/11607422.html

ELK-基于用户访问IP做用户热力地图展示

https://blog.51cto.com/183530300/2309898

ELK-kibana来源热点图

https://blog.csdn.net/Gmoon23/article/details/79261706

共收到 5 条回复 时间 点赞

👍🏻

恒温 将本帖设为了精华贴 06 Feb 10:59

高产王

这个技术真不错

很高大上,我也玩玩

库是收费的吗

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up