本文仅限于集成场景,非监控告警系统本身,而是如何更好地打通应用和现有的监控告警系统,简化使用。
集成场景指的是应用自身进行埋点或者使用开箱即用的库生成监控指标,将指标上报或者由监控系统主动采集(push 或 pull 方式),通过可视化系统查看监控指标,配置告警规则接收告警并进行分发。
为了实现集成,需要实现如下要点:
而在当今 prometheus + grafana 已经成为事实上的监控标准,集成场景也主要以 prometheus 为主。
应用本身需要完成指标埋点生成监控指标,通过 push 或 pull 方式使监控系统获取到监控指标。
http://${prometheus_url}/_/reload
接口触发配置加载(如果 prometheus 开启了认证,还需要加上用户名和密码。在 header 中加上:Authorization: Basic ${username}:${password}
,其中 ${username}:${password}
只是个说明,不能发送明文用户名密码,实际发送请求时需用 base64 编码一下)ServiceMonitor
和 PodMonitor
。如果是在 kubernetes 环境中,可以手动创建一个 ServiceMonitor
和 PodMonitor
即可。scrape_configs
中通过 http_sd_configs
配置采集。一次即可,后续无需变更todo。
reload
接口PrometheusRule
。在 k8s 环境中,如果使用 prometheus-operator,可以使用 PrometheusRule
。在 prometheus 中告警事件不会一致保留,如果要长期保留告警事件,需要另行存储。prometheus 提供了 alertmanager 进行告警事件通知,但是它定制起来很麻烦。
如告警事件通知,alertmanager 确实支持了多种渠道,但是很难进行个性化分发。如技术部可以提供一个告警通知群,把相关技术都拉进去,告警统一发送到群内,如果群内消息如果可以 @ 下相关责任人就更好了。或者通过邮件发送到不同的用户中。
上述情况下就会出现告警通知需要频繁变动,需频繁修改。对于告警事件的处理可以开发一个专门的告警系统,接收 alertmanager 的告警事件,在告警系统中与公司内部的组织架构进行打通,这样就可以把告警事件灵活发送到相关人员手上,毕竟想办法打通 alertmanager 和公司组织架构比另开发一个内部的告警系统难多了。
同时在告警系统中也可以加入上一步的告警规则管理,这样就可以在告警系统中统一管理告警规则、告警事件和告警通知
reload
接口进行加载。doris-manager 通过代理 grafana 可以在 doris-manager 上查看 grafana 图标ConfigMap
动态生成 grafana dashboard。monitordb
专门用于存储采集的监控指标,并生成告警。后面 ocp 对接了 prometheus 和 sls,可以通过 prometheus 采集指标和进行可视化展示,生成告警
Secret
动态修改 alertmanager 的通知渠道