摘要:背景及目标游戏平台每天产生上千万条牌局结算日志包括跑得快斗地主等各种游戏,这些日志未非结构化数据。因此,想要一个实现游戏日志处理系统,实现如下功能监控日志文件,收集日志。处理日志非结构化转为结构化数据如。输出结构化数据到消息中间件。
背景及目标
游戏平台每天产生上千万条牌局结算日志(包括跑得快PDK、斗地主DDZ等各种游戏),这些日志未非结构化数据。很多时候,我们需要依据这些日志制定各种业务服务,如道具、礼包等。
不同的业务服务(如只针对PDK游戏提供优惠礼包服务),需要的日志可能是不同的,如果将所有的日志全部塞给业务服务,交由业务服务区筛选,那么业务服务需要承担太多不必要的压力(一千万条日志中,需要的可能只有一千条)。
因此,想要一个实现游戏日志处理系统,实现如下功能:
监控日志文件,收集日志。
处理日志:非结构化转为结构化数据(如JSON)。
输出结构化数据到消息中间件。
业务服务可以从消息中间件中获取自己想要的消息。
技术方案游戏事件(日志)收集:filebeat(6.2.4版本)
事件处理:logstash(6.2.3版本)
消息中间件:kafka(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.gz tar xzvf filebeat-6.2.4-darwin-x86_64.tar.gzfilebeat配置
官方配置说明
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等服务或中间件。 ## 输出到logstash output.logstash: # 目标logstash的服务地址及端口 hosts: ["localhost:5044"]
本系统中,暂时没有用到复杂、高阶的filebeat配置,仅简单地配置输入(日志文件)和输出(logstash)。
更详细的配置可以参见官方说明。
另外,filebeat提供了一些预定义的模组(module),可快速地对诸如nginx,mysql的日志进行收集。
注意:只能配置一个output。
filebeat启动官方文档
以mac OS为例:
./filebeat -e -c filebeat.yml -d "publish"logstash接收事件
filebeat收集到的事件要想推送到logstash,除了要在filebeat.yml的output中配置之外,还需要在logstash的input模块中配置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过来的数据。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/8407.html
摘要:表示事件处理过程。表示在事件进入前要使用的编码处理。示例如下将非结构化数据转为结构化数据自定义匹配模式文件地址。添加字段将非结构化数据中的内容提取出来,转为结构化数据,并对加入到结构中。将处理后的事件输出到消息中间件。 前言 在之前的文章【大数据实践】游戏事件处理系统(1)——事件收集-filebeat中,对本系统的背景、目标及技术方案进行了概述,并利用filebeat收集到日志,发送...
摘要:表示事件处理过程。表示在事件进入前要使用的编码处理。示例如下将非结构化数据转为结构化数据自定义匹配模式文件地址。添加字段将非结构化数据中的内容提取出来,转为结构化数据,并对加入到结构中。将处理后的事件输出到消息中间件。 前言 在之前的文章【大数据实践】游戏事件处理系统(1)——事件收集-filebeat中,对本系统的背景、目标及技术方案进行了概述,并利用filebeat收集到日志,发送...
摘要:从上述构造函数可以看出,可以通过和两种形式传递配置信息,用于构造对象,配置信息均为对。获取内部的和,用于后续该产生的事务性消息。该方法的返回值为该被发送到的分区的元数据,如偏移量,创建时间等。 前言 在文章【大数据实践】游戏事件处理系统系列文章中中,我们已经做到使用filebeat收集日志事件、logstash处理日志事件、发送日志事件到kafka集群,并在消费者中消费的过程。其中,为...
摘要:从上述构造函数可以看出,可以通过和两种形式传递配置信息,用于构造对象,配置信息均为对。获取内部的和,用于后续该产生的事务性消息。该方法的返回值为该被发送到的分区的元数据,如偏移量,创建时间等。 前言 在文章【大数据实践】游戏事件处理系统系列文章中中,我们已经做到使用filebeat收集日志事件、logstash处理日志事件、发送日志事件到kafka集群,并在消费者中消费的过程。其中,为...
摘要:前言上一篇文章大数据实践游戏事件处理系统事件处理中,对日志的处理进行了讲解,其事件最终要输出到集群中。大数据实践游戏事件处理系统系列文章主要更倾向于试验,因此对深一层的理论研究和介绍不是很多,后面可能开另外的系列来讲。 前言 上一篇文章【大数据实践】游戏事件处理系统(2)——事件处理-logstash中,对日志的处理进行了讲解,其事件最终要输出到kafka集群中。因此,在本文章中,将介...
阅读 294·2023-04-25 17:26
阅读 837·2021-11-11 16:54
阅读 1380·2021-08-05 09:58
阅读 1817·2019-08-30 13:17
阅读 824·2019-08-28 17:52
阅读 943·2019-08-26 18:27
阅读 1295·2019-08-26 14:05
阅读 3430·2019-08-26 14:05