我是一块砖,哪里需要哪里搬!随着项目数量越来越多,总是遇到服务出现问题后都是由客户先发现问题,再一层一层的反馈到开发人员,这样不仅用户体验不好,还会出现服务挂了很长时间后才被发现,日志已经被自动清除,无法进行bug查找。基于这种情况,我们组搭建起了elk,但是仅仅有elk还是不够的,如何在故障产生后,及时的通知到相关人员这也是非常重要的。
本着开发量尽量少、功能尽量强大、对内存要求尽量低的原则,分析对比了网上多种基于日志的告警系统,大致有以下几种:
1、cat:大众点评开源的告警系统,功能强大,相对重量级;不符合需求!
2、 kafka+sparkstream:完全靠开发;不符合需求!
3、sentinl:kibana插件,友好的web ui,非常方便管理,仅支持发送邮件
安装方式非常的简单:
1)首先根据kibana的版本下载对应的版sentinl包 https://github.com/sirensolutions/sentinl/releases/tag,
./kibana-plugin install file:./sentinl-v6.0.1.zip
然后重启kibana,便可在kibana界面上看到sentinl,如下图:
image
image
sentinl的使用和安装都非常的简单,但是仅支持发送邮件,并且邮件内容中无法获取到从es上查询出的内容。不符合需求!
4、ElastAlert:无开发量;告警支持邮件、钉钉、微信、自定义等多种告警方式;能灵活从es中查询出来的内容;符合需求!
1)安装
首先在从下载源码包:网上都说master不支持es5,需要切换到es5的分支,但是并没找到es5的分支,故这里采用了es6分支,本文使用的es版本为5.4.0。ElastAlert只支持python2。上传下载后的包到服务器上,解压。
cd elastalert
pip install -r requirements.txt
python setup.py install
cp conf