页面日志采集:ngix+logstash+kafka

        页面日志采集是指从页面上采集用户行为,将用户行为信息记录成日志,并将日志信息读取到消息队列的过程。一种比较常用的日志采集技术工具是:ngix+logstash+kafka。

       进行页面日志的采集,需要在页面的最下端埋一个js代码片段。这个js代码片段通常在</body>的前面。这个js代码片段中有一行核心的代码:“src=XXXX/track.js”。当访问这个页面的时候,会从数据采集服务器上下载track.js。当页面渲染完成之后,会执行这个js,js就会采集到想要的数据,在track.js的最后会向数据采集服务器发送一个请求log.gif?args=……,数据采集服务器会立即返回一个“1*1”像素的图片,又来有回,意味着这次请求结束。在数据采集服务器的内部,会有一个内部的请求,相当于开了一个线程,这个线程专门用于记录log,将track.js发送过来的请求参数用log的形式写到日志文件里面。

       可以通过修改ngix的配置(log_format tick{}),来定义log的形式。当log文件产生之后,可以通过flume、logstash等实时采集工具将数据写到消息队列中。这里使用kafka作为消息队列。

       使用logstash将log文件的内容写到kafka里面,主要是配置logstash的配置文件,例如下面编写的logstash的配置文件(flow-kafka.conf),用于将log数据写到kafka中。

input{
        file{
          path=>"/home/hadoop/logs/ngix_logs/dir01/*.log"
          discover_interval=>5
          start_position=>"beginning"
        }
}
output{
   kafka{
         topic_id=>"ngixGamelog02"
         codec=>plain{
                format=>"%{message}"
                charset=>"UTF-8"
         }
         bootstrap_servers=>"mini02:9092,mini03:9092,mini04:9092"
   }
}

         接下来就是在集群上,启动kafka、logstash,进行页面数据采集:

//启动kafka
//1、需要先启动zookeeper
zkServer.sh start
//2、检查zookeeper是否启动成功
zkServer.sh status
//3、在集群上启动kafka
kafka-server-start.sh export/servers/kafka/config/server.properties &
#启动logstash进行数据采集
./export/servers/logstash/bin/logstash agent -f ./export/servers/logstash/config/flow-kafka.conf

猜你喜欢

转载自blog.csdn.net/hefrankeleyn/article/details/79953118