日志分析告警平台:ELK+ZABBIX的组合实践

一、前言

最近在给公司用elk搭建日志分析平台,搭建成功之后,发现elk 缺少一个重要功能模块,即告警功能。于是乎有寻觅到了与elk 无缝集成的插件x-pack ,但是,但是,但是它是收费的。为了将开源到底,于是乎我们想了很多办法:

1. 寻找x-pack 替代插件,例如KAAE或者sentinl,发现这两款插件弊端就是告警策略太少并且缺少有效的告警配置方式

2. 基于elasticsearch 强大的api 以及elasticsearch-jdbc 提供的sql查询,自己开发一套告警策略,调用基于业务的api进行告警。但是自己开发告警策略谈何简单,需要考虑各种场景,且时间有限,需要投入较多人力。

3. 找到了大众点评之前开源的一款产品cat,这款产品网上介绍较多,这里不做详细介绍。基于elk日志采集处的埋点,进行告警。(我们这里日志采集的方式不是通过 官方提供的插件file-beat,因为这款插件是基于jdk1.8 的,因此我们这里采用jsch连接读写日志流传输,在写文件处埋点。)考虑到cat 较完备的告警策略,以及较简单的配置,因此我们尝试去熟悉cat 里的源码,后来还是因为时间问题(熟悉源码、改造、页面改动量较大),因此放弃。

最后,运维小伙伴提供了一个思路,zabbix具有强大的告警策略,同时具有针对业务api 自定义配置告警触发器配置功能。结合已经部署的zabbix告警系统(硬件监控以及自带的zabbix api),因此采用该elk+zabbix 告警策略。

二、ELK+ZABBIX 组合架构

该平台可以实现日志实时和离线分析、业务和硬件指标告警以及服务器性能指标查看等功能。架构如下图所示:

日志分析告警平台:ELK+ZABBIX的组合实践_第1张图片

如上图所示,通过调度读写日志流可以做到采集与清洗,进而被logstash传输写入elasticsearch,基于elasticsearch 提供的api 我们封装自定义业务接口(监控探测接口、业务指标分析接口);zabbix一方面通过zabbix agent 提供硬件指标检测功能,

另一方面通过配置自定义触发器去探测业务监控接口。同时,基于zabbix 提供的zabbix api 我们也可以封装zabbix 用以监控硬件指标结果。

最后我们可以在webserver app 上展现各种业务指标分析以及基于zabbixapi 封装的硬件指标,这样做的好处是你可以自由定制化,在大屏上展现炫酷的效果。当然平常开发用,kibana 和 zabbix 做扮演的图形化展示功能,倒也够用了。

这里多说一句,kibana 自定义的图形化展现配置方式功能的设计方案很赞,你可以在上面自定义数据源、自定义图形化展现方式,自定义维度与度量、自定义图形化属性,自定义配置仪表盘等等。这对于做olap 的同学大有益处。

三、日志采集

上文提到,因为应用服务器jdk 版本不同,因此采用jsch 建立连接,读写日志流。

代码详情请见附件链接:

https://download.csdn.net/download/xuyuanshu100/10464359





你可能感兴趣的:(架构)