昨天跟你朋友聊了下他们的日志收集及实时的触发报警,当然需要说明的是他们的环境不大,一个小创业公司,开发和运维的环境也相对的简单干练… …  他们没有用到elk这样的日志收集方案,是直接修改了在python logging模块上加了层kafka的输出。   然后他们在消费kafka写到hdfs里面,顺便做了个报警。  报警也是有些逻辑的,不是简简单单的看到Error就报警, 是在一定时间内收集到多少数目达到了先前的阈值后才报警。  有时候日志问题可能是链条性质的,举个例子 , A 导致了B,B导致了C  。  当我们看到A的错误的时候,就把B和C的错误都统统的过滤掉。

关于日志报警的优化,我以前写过相关的文章,有兴趣的朋友可以找找,明确的解释了 那些过滤和汇总的实现。 


其实以前在乐视的时候把一堆关于热门视频计算节点的logging都加了层redis输出…  但是会碰到一个问题就是,如果因为某种问题导致python疯狂的向redis写入数据,会造成redis的卡顿,因为是根别的业务混布的,又因为我的其他的管理平台也用这台redis…..  所以时不时的会有些影响… 不扯淡了,kafka在mq的功能和性能上要比redis强的,毕竟redis不只是消息队列.   

通过在O(1)的磁盘数据结构上提供消息持久化,对于即使数以TB的消息存储也能够保持长时间的稳定性能。在商用机器上可以提供每秒数十万条的消息,redis的测试结果一般是在2w左右就有些吃力了…. 

支持在Kafaka服务器集群上进行messages分片,并在把messages在消费集群的机器上分配的同时维护每个分片的顺序信息。kafka配合zookeeper特么很容易实现分布式,他有topic的概念,可以把点击事件的日志推倒topic1,nginx日志推倒topic2 等。 每个topic对应的物理的parition分组,kafka把parition大文件切成一个个的小文件,这样容易做日志的过期删除。

 

安装很是简单… 

$ git clone https://github.com/taykey/python-kafka-logging/

$ sudo apt-get install python-virtualenv

$ virtualenv python-kafka-logging-ve

$ python-kafka-logging-ve/bin/pip install -r requirements.txt

我们看看他的实现逻辑,没啥东西,只是个干净的功能类而已。 

这是logging.conf的配置



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

1则回应给“使用kafka扩展python logging集中式日志收集”

  1. feifeiiiiiiiiiii说道:

    哥 你太nb了

发表评论