天天看点

Plog —— 新浪的处理日志流框架

plog 是 "parse log" 的缩写,是一套处理日志流的框架,日志流格式可以是apache,nginx等常规意义的日志格式,也可以是自定义格式

受flumeng的启发,我把整个工程分成了三个部分:source,channel ,sink,已经完成了主体的共有的可以抽象出来的功能,比如线程的同步互斥,消息的生产消费,处理时间间隔的控制,还有一些简单的source,channel and sink函数

下面是一个简单的配置文件:

source部分的设计思路

在这一部分,我们需要处理的是数据流的来源,他可能是file,可能是socket,可能是管道,但是我不关注你的数据来源格式是什么样的,因为我无法满足这些需要各式各样的数据来源需求,而你的需要是什么样的,你最清楚,那么你只要写一个source的插件就可以了,名字随意你定,你需要的是把你写的那个插件的名字,写到plog.conf里面,默认有读取文件的file_source模块,读取管道的read_from_pipeline模块,可以直接使用。

具体实例如下:

自定义source的具体实现,参看source module下的plog/source/youself_define_source.py

channel部分

在这个部分,主要是对数据流的处理,你同样需要写一个 python的脚本,名字随意你定,但是你需要写到 plog.conf 中,默认有解析python正则的模块可以直接使用,类似下方:

同样的你需要实现的channel可以参见 plog/channel/youself_define_channel.py

sink 部分

在这个部分,你同样需要写一个python脚本,他的名字同样取决于你的个人喜好,你需要的是把你写的那个插件的名字写到plog.conf,例如下方:

同样的你需要完成的脚本可以参见plog/sink/youself_define_sink.py

如何跑一个测试

下面的测试是读取一个本地本件,解析,计算自己要想的结果发送到zabbix监控系统。