博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【大数据实践】游戏事件处理系统(1)——事件收集-filebeat
阅读量:7038 次
发布时间:2019-06-28

本文共 2296 字,大约阅读时间需要 7 分钟。

背景及目标

游戏平台每天产生上千万条牌局结算日志(包括跑得快PDK、斗地主DDZ等各种游戏),这些日志未非结构化数据。很多时候,我们需要依据这些日志制定各种业务服务,如道具、礼包等。

不同的业务服务(如只针对PDK游戏提供优惠礼包服务),需要的日志可能是不同的,如果将所有的日志全部塞给业务服务,交由业务服务区筛选,那么业务服务需要承担太多不必要的压力(一千万条日志中,需要的可能只有一千条)。

因此,想要一个实现游戏日志处理系统,实现如下功能:

  • 监控日志文件,收集日志。
  • 处理日志:非结构化转为结构化数据(如JSON)。
  • 输出结构化数据到消息中间件。
  • 业务服务可以从消息中间件中获取自己想要的消息。

技术方案

  • 游戏事件(日志)收集:(6.2.4版本)
  • 事件处理:(6.2.3版本)
  • 消息中间件:(1.1.0版本)

filebeat收集事件

虽然logstash也可以收集日志,且有很多丰富的输入、处理、输出插件,但是logstash相对于filebeat来说会消耗更多的服务器资源,这些logstash如果部署在应用服务其中,可能对应用服务带来影响(抢资源)。

filebeat则是及其轻量级的,占用资源少,适合分布在各个应用服务上收集日志,并将收集到的日志发送到logstash服务。另外,filebeat具有调节发送速度的功能,当logstash处理不过来时,filebeat会降低发送速度,因此不需要类似于中间缓冲队列等机制。

基于此,本系统中选用filebeat而不是logstash来收集日志。

filebeat安装

以mac OS 系统为例:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-darwin-x86_64.tar.gztar xzvf filebeat-6.2.4-darwin-x86_64.tar.gz

filebeat配置

filebeat的配置文件:filebeat.yml,其中主要内容为:

#============= Filebeat prospectors ===============# 探测器配置,即filebeat的输入## 配置一个探测器filebeat.prospectors:    ## 探测器类型:日志    - type: log      ## 是否启用该探测器      enabled: true      ## 日志文件路径,当前不支持递归监控某个目录及其子目录下的所有文件。      ## 要监控子目录,则可以配:/var/log/*/*.log      paths:        - /var/log/*.log      ## 去掉正则表达式列表中的行      exclude_lines: ['^DBG', '^D2']      ## 包含正则表达式列表中的行      include_lines: ['^ERR', '^E2']      ## 去掉正则表达式列表中匹配的文件      exclude_files: ['.gz$']      #============================= 其他配置(和本系统关系不大,略) ====================#================================ Outputs =====================================# 输出配置,可输出到诸如logstash,elasticsearch,kafka等服务或中间件。## 输出到logstashoutput.logstash:  # 目标logstash的服务地址及端口  hosts: ["localhost:5044"]

本系统中,暂时没有用到复杂、高阶的filebeat配置,仅简单地配置输入(日志文件)和输出(logstash)。

更详细的配置可以参见官方说明。

另外,filebeat提供了一些预定义的模组(),可快速地对诸如nginxmysql的日志进行收集。

注意:只能配置一个output

filebeat启动

以mac OS为例:

./filebeat -e -c filebeat.yml -d "publish"

logstash接收事件

filebeat收集到的事件要想推送到logstash,除了要在filebeat.yml的output中配置之外,还需要在logstashinput模块中配置beats

input {    ## 来自于filebeat的事件作为输入    beats {        ## 端口与filebeat中filebeat.yml文件output中配置的端口一致。        port => 5044    }}

启动logstash服务、filebeat服务之后,往/var/log/目录中的日志文件中写入日志,如:

echo "test info ..." >> /var/log/test.log

就能在filebeat的运行日志中,看到相关内容,也可以在logstash的输出中看到相应事件。

关于logstash的配置文件,将在后续的博客中详细介绍。

小结

filebeat 还有很多高阶特性(如一些方便的模组)可以使用,这里只是简单地介绍了一种常用的用法。

在后续的文章中,将使用logstash来处理从filebeat过来的数据。

转载地址:http://mgnal.baihongyu.com/

你可能感兴趣的文章
JIT
查看>>
巧用escalations限制Nagios报警次数 - [Nagios
查看>>
Entity SQL与LINQ TO Entity的本质区别
查看>>
python unittest 深入failfast及实际应用【示例】
查看>>
MSSQL中文排序规则设置
查看>>
30 个有关 Python 的小技巧
查看>>
CDN下nginx获取用户真实IP地址
查看>>
Jsp技术总结
查看>>
Sakai 11.x Build Failure
查看>>
面向对象+模块化设计绘制canvas星空动画
查看>>
Debian 从稳定版升级到测试版
查看>>
Elastic Search学习笔记3——集群配置
查看>>
时空表单的一些心得
查看>>
Mysql学习总结(2)——Mysql超详细Window安装教程
查看>>
gradle入门
查看>>
Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例
查看>>
HTTP简介
查看>>
static Import 的用途
查看>>
第一天
查看>>
Regex C++ : 正则表达式(2).
查看>>