暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

EFK实现GeoIP定位全球访客

新钛云服 2021-10-19
972

新钛云服已为您服务1289



IP地理位置用于确定IP地址的物理位置,可被用于多种实际场景,包括内容个性化与流量分析等等。根据地理位置进行流量分析可帮助大家有效分析自己的用户群体,从而了解用户来自哪里、决定应用服务器的理想地理位置并明确掌握用户定位

本教程中,我们将共同了解如何利用Fluentd、Kafka、Logstash、Elasticsearch与Kibana配合GeoIP数据库,从而建立应用用户IP地址的可视化地理位置映射目的效果图如下图所示:
访问IP地图


第一步:Fluentd收集nginx日志

#配置fluentd

[root@fluent ~]# vim etc/td-agent/td-agent.conf

<source>

  @type tail

  path var/log/nginx/access_json.log

  pos_file var/log/nginx/access_json.log.pos

  tag nginx_json.access

  format json

  time_format %d/%b/%Y:%H:%M:%S %z

</source>

 

第二步:将Fluentd收集到的日志存放到kafka
使用kafka集群做缓存层,而不是直接将agent收集到的日志信息写入logstash节点,让整体结构更健壮。agent负责将收集到的数据写入kafka,logstash取出数据并处理。

#配置fluentd
[root@fluent ~]# vim etc/td-agent/td-agent.conf
<match nginx_json.access>
  @type kafka2
  brokers 10.0.0.54:9092
  use_event_time true
  <buffer topic>
    @type file
    path var/log/td-agent/buffer/td
    flush_interval 1s
  </buffer>
  <format>
    @type json
  </format>
  topic_key topic
  default_topic wordsendertest2
  required_acks -1
  compression_codec gzip
</match>
 

第三步:logstash从kafka中取出日志
Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。

[root@logstash ~]# vim etc/logstash/conf.d/kafka_log_es.conf
input {
    kafka{
        bootstrap_servers => ["10.0.0.55:9092"]
        group_id => "test-consumer-group"
        topics => ["wordsendertest2"]
        codec => json {
                 charset => "UTF-8"
        }}}
 

第四步:logstash中配置GeoIP解析地理信息
geoip主要用于kibana绘制地理区域图时使用,原理就是通过一个IP库,根据IP直接获取对应的地理坐标等信息,从而在地图上进行展示。

[root@logstash ~]# yum install GeoIP-data -y

[root@logstash ~]# vim etc/logstash/conf.d/kafka_log_es.conf

filter{

        if [remote] != "-" {

                geoip {

                        source => "remote"

                        target => "geoip"

                        # database => "/usr/share/GeoIP/GeoIPCity.dat"

                        add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]

                        add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]

                        }

                mutate {

                        convert => [ "[geoip][coordinates]", "float"]

                }

        }

}

 

第五步:Logstash将处理后的日志传输给es
Logstash是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch (如下图所示)进行下一步处理。

[root@logstash ~]# vim etc/logstash/conf.d/kafka_log_es.conf

output {

   elasticsearch {

        hosts => ["http://node1.elastic.test.com:9200","http://node2.elastic.test.com:9200"]

        index => "logstash-nginx-log-%{+YYYY.MM}"

        codec => "json"

   }

}


△elasticsearch web界面

第六步:kibana展示访问IP地图
Kibana是一个可视化工具,可以为 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
kibana配置索引 kibana配置map kibana配置map

至此,EFK实现GeoIP定位全球访客完成。


了解新钛云服

新钛云服荣膺第四届FMCG零售消费品行业CIO年会「年度数字化服务最值得信赖品牌奖」

新钛云服三周岁,公司月营收超600万元,定下百年新钛的发展目标

当IPFS遇见云服务|新钛云服与冰河分布式实验室达成战略协议

新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照

深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资

新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁

新钛云服一周年,完成两轮融资,服务五十多家客户

上海某仓储物流电子商务公司混合云解决方案


往期技术干货

Kubernetes扩容到7,500节点的历程

低代码开发,全民开发,淘汰职业程序员!

国内主流公有云VPC使用对比及总结

万字长文:云架构设计原则|附PDF下载

刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!

Ceph OSD故障排除|万字经验总结

七个用于Docker和Kubernetes防护的安全工具

运维人的终身成长,从清单管理开始|万字长文!

OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

什么是云原生?

IT混合云战略:是什么、为什么,如何构建?



点👇分享

戳👇在看

文章转载自新钛云服,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论