api 及时监控告警+定点发送监控日报
必看
我们有个需求:
1、就是api 监控,出现问题及时告警
2、每天6点定时发送今天,最高延迟的 api链接(相当于是一个日报)
方法一
我们可以通过监控nginx-log ,可以获取到 api 响应延迟
这是第一版,没有优化,其实可以实现过滤只发送需要的关键信息,被公司否定掉了
方法二
监控nignx 程序
prometheus 监控 nginx 对域名 各种状态 比如 1xxx 2xxx 3xxx 比如 图同的 4开头的错误被记录 4次,也有延迟响应,可以实现告警
因为所有流量都有走的nginx 所以nginx 能看到很多信息,比第一个 监控 日志跟好用,
也被公司否认了
方法3 被公司认可
还记得 我之前讲过的 blackbox 吗 不记得可以回去看看
通过 blackbox 进行监控
想看成果
我个人认为这种方法并不友好,公司认可就行,开搞
1、首先确保你们的 blackbox 已经正常运行并且监控,不会的这部分自己看看我过去的博客
probe_duration_seconds 这个是 promQL 语句哦,
用于记录各个目标的探测时间,即探测请求从发送到接收的时间间隔。这个指标通常用于计算目标的可用性和响应时间。通过Prometheus来查询来分析和监控该服务的性能。
是不是 可以看到对应的 api 和 响应时间,
第一点达到公司要求
第二点 查看今天 最高的 延迟时间
这里一个API 记录了每一秒的响应时间,我们需要做个优化 对比最大值
这里最大值,对比出来了,但是还有一个一个问题,太多了,发送到群里 没必要全部看,值看关键的,比如 大于 5秒的
这里就展示了 api 一天的 最大链接时间,并显示 > 5秒的
然后就是 配置 定时告警就可以了
这里+8 是因为是 UTC 时间,+8 到我们中国本地时间
- name: API 定时日报
rules:
- alert: pod-memory
expr: topk(50,max_over_time(probe_duration_seconds[1d])) %(3600*24)/3600+8)==6 and %(3600*24)/60%60)<10
for: 30s
labels:
severity: 警告
annotations:
description: "{{ $value }})"
-----------------------------------
prometheus定时定点发送告警