监控平台搭建-总纲
监控平台搭建-总纲
【TODO】
- 环境搭建:缺少 AlertManager集群搭建
- 可视化:未填写
- 告警配置:HTTP待改写 应用未填写
- 日志告警:配置与使用 未填写
目录
监控平台的搭建较为繁琐,下面分为一下几个部分进行讲解:
- 基础知识
- 环境搭建
- springboot埋点
- 可视化
- 告警配置
- 日志告警
监控平台结构
- Prometheus
- Exporter
- mysql - mysqld exporter
- 主机 - node exporter
- Java应用
Springboot Actuator
上报JVM信息- 自行实现HTTP相关埋点(AOP)
- mtail监控日志
- AlertManager(集群 - Gossip协议 告警去重)
- Prometheus
- 主机
- mysql
- http
- 日志(mtail)
- Grafana
- 能用模板用模板
- 用不了自己配吧
Q&A
Pushgateway
Q1:需要使用Pushgateway吗?
不使用,也不需要使用。
首先来举个使用Pushgateway场景的例子:
我现在有一个临时任务脚本或批处理脚本,如果要上报Prometheus则需要开启对应http接口,按照对应格式编写,持续等待,直到Prometheus将该数据拉取才能停止
当然我们可以直接使用Pushgateway,任务完成后将要上报的数据主动上报给Pushgateway,也就是从拉模式变成了推模式,实现则更为简单了一些
同时注意,Pushgateway并不会将我们上推的数据按照时间序列的形式保存,同一个指标在不同时间上传多次会被覆盖,只留下最新的
对于当前的需求来说,完全不需要使用Pushgateway
拉取时间间隔
Q2:假设Prometheus拉取时间是15s一次,而应用的数据是每秒计算一次,这样会导致中间14s的数据丢失吗,例如max、平均响应时长、TP90
A2:并不会,首先需要明确下面几点:
- 不管是 摘要 还是 直方图,它们都会累计的去记录max、count、sum
- 直方图 中的桶是累计的,并不是每秒之类的
下面分类型讨论一下,同样我们假设Prometheus每隔15s拉取一次
- 最大响应时长:max是累计更新的,肯定是准确的,不需要考虑
- 平均响应时长:计算方式为 选定一段区间,总时长的差值/这段时间的响应数量,得到的就是这个时间段的平均响应时长,并且上报的数据中 总时长和总共数量也都有
最后则是分位点:
- 摘要:摘要计算分位点有一个滑动窗口,默认的滑动窗口时间长度是 2 分钟,滑动时间间隔是 1 秒。分位点计算基于最近 2 分钟内收集的数据,并且每秒钟更新一次,如果出现极端数据,还是会反映到Prometheus中的,除非拉取时间比滑动窗口时间还长
- 直方图:它的桶是累积的,Prometheus是根据桶来估算出分位点的,所以也没有影响。但是需要注意,计算一段时间内的TP90时,指定的时间窗口要大于向Prometheus上报的时间间隔
评论
评论插件加载失败
正在加载评论插件