监控平台搭建-总纲
tbghg

监控平台搭建-总纲

【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上报的时间间隔
 评论
评论插件加载失败
正在加载评论插件