下图是我利用 ELK 和 SpringBoot 搭的一个指标监控架构,这块内容包括实现的源码可以看我的 Github,如果对你有帮助可以点个 Star 支持一下。下面主要说明一下 SpringBoot 如何和 ELK 对接,这么做的目的是什么呢?我们知道 ELK 可以做到监控报警的功能,但如果你自己想扩展,比如想用钉钉的方式去报警,就必须自己扩展。下面解释一下处理的逻辑。
后台处理的流程为首先运维人员需在目标服务器上安装Beats,也就是在目标服务器上安装上Agent,并做好对应配置,将日志信息能够发送到Kafka;
Kafka 收到日志后能够缓解流量峰值,之后再将日志传递给Logstash,完成日志信息的清洗,这样就可以存入ElasticSearch 存储;
接下来运维人员按照自己的需求进行ElastAlert 的配置,配置好报警规则,ElastAlert会根据你的规则定期去 ElasticSearch 进行搜索,如有匹配,会通过 Webhook 的方式发送给Alertmanager,Alertmanager 作为一个中转站,统一了后端接受报警的格式。
之后继续传递给SpringBoot 后端,在由SpringBoot 通过钉钉、邮箱、短信的方式通知对应的人,还会根据传来的报警信息的Label,进行数据的写入,以及相关操作,为之后的业务提供基础。
下图为该流程的时序图。