目前市场上基于ELK的日志系统,其中数据采集、数据过滤、数据存储可以采用Filebeat、Logstash、Elasticsearch进行实现。采集数据固然重要且是一个不能忽略的过程,但是数据落盘存储之后,我们还需要关注两件事情:
1.针对数据的展示和分析我们可以采用Kibana进行可视化分析,同时也可以对接Grafana进行数据分析。
2.可以针对日志进行关键词设置告警
但是日志告警相关工具较少,要么购买Elastic的付费服务可以使用日志告警功能,要么我们只能选择一些相对靠谱的开源方案例如Elastalert。Elastalert基于Python开源的一套Elasticsearch日志告警开源工具。
早期我们也是使用Elastalert这个开源方案,数据量少的时候,其实也没什么问题。但是数据量大了以后,会出现告警延迟、告警重复、资源占用高、性能较低等相关问题。所以后来,我自己花了点时间造轮子在Github进行了开源,解决了我们使用Elastalert过程中的一些问题。
项目地址: prom-elastic-alert
1.使用Golang编写,跨平台、体积小、性能有足够的优势
2.自身不实现告警聚合、收敛、分组等,这是alertmanager的优势所在,没必要自己再造轮子.引入PrometheusAlert实现多类型告警(例如钉钉、企业微信、飞书等等)
3.内置exporter,可以接入Prometheus监控体系,查看当前组件运行状态、数据等
4.支持Elasticsearch7、Elasticsearch8
5.提供现成的Grafana面板json文件
感兴趣的小伙伴可以给个Star⭐支持一下,我们在线上已经跑了几个月,能够基本满足我们平常的告警需求。如果满足不了需求可以fork自己在进行一下二次开发,自定义功能模块。