0x01 背景
面对与日俱增的日志信息,最传统的日志收集方式已难以满足运维人员的基本需求。So,我们何不利用如今丰富的开源工具来打造一款高效实用的运维日志收集分析平台呢。以下就我们目前尝试在做的运维日志平台进行简要介绍,希望能与各位交流心得经验。
0x02 平台架构
我们并没有采用ELK的架构进行日志收集,而是采用了多款日志收集工具结合的方式,即EKF(K/Z),
elasticsearch + kafka-zookeeper + Flume + kibana/zabbix。
0x03 简要介绍
针对flume进行适当改写,将Java环境加入到flume程序中,使flume服务启动时即可拥有Java环境,免除在每台主机上还需单独部署jdk的困扰。同时,针对不同日志的不同特点,采取不同的收集方式,规范日志的格式,适当对采集的日志进行压缩,可有效减少日志采集量。
针对kafka-zookeeper集群,尝试采用docker容器的方式进行部署。Docker以实现快速部署而称著,因此,如果要部署较多量的kafka-zookeeper集群,倒不如尝试一下采用docker的部署方式。首先,我们制作一个dockerfile,将dockerfile生成镜像文件,启动后即可使用。在使用docker部署kafka-zookeeper集群的时候,我们也遇到了很多问题。比如较为突出的是端口问题,最后我们采用的是docker容器与宿主机端口映射这样一种较为简单的方式解决的。
将kafka数据写入elasticsearch,我们采用的是自己写的一个中间件程序来实现的。之前原本是想采用第三方插件之类的东西,但发现适合自己的确实是没有,于是乎,同事自己动手写了一个,目前验证来看,效果和性能还是不错的。
针对elasticsearch集群,目前的关注点主要围绕在如何优化上;
此外,我们还将elasticsearch中的数据进行提取,在zabbix上进行展示。目前在zabbix上展示的参数主要是对pv值和http状态码进行统计和监控。
zabbix效果图:
针对运维日志收集与分析平台,要做的还有很多。目前只是刚刚开始,前面还有无数个坑在等着,希望能够打造成真正的日志收集分析平台,简化运维日常工作量,为日常工作提供决策与处理依据。
(by secscorpio)