新钛云服已为您服务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定位全球访客完成。
了解新钛云服
往期技术干货
点👇分享
戳👇在看
继续阅读
阅读原文