争取最小篇幅说明prometheus的全部内容,方便读者了解prometheus的整体概念
概念
定义
开源的监控、告警解决方案
何时使用
时序化的指标监控,如系统性能指标、请求耗时、时间区间的请求数等等
主要特性
- 时序数据存储
- PromQL强大的查询功能
- 强大的可视化工具
- 开箱自带浏览器可视化工具
- 可与grafana集成,利用grafana强大的可视化能力
- 高效的存储
- 自带的时序数据库
- 通过adapter与第三方存储集成,如influxdb
- 操作简单、精准告警、多客户端、多种导入数据工具便于导入数据到prometheus中
架构
工作流程
- 指标采集:prometheus server 通过pull 形式采集监控指标,可以直接拉取监控指标,也可以通过pushgateway做中间环节,监控目标先push形式上报数据到pushgateway
- 指标处理:prometheus server 将采集的数据存储在自身db或者第三方db
- 指标展示:prometheus server 通过提供http接口,提供自带或者第三方展示系统
- 指标告警:prometheus server 通过push告警信息到alert-manager,alert-manager通过 静默-抑制-整合-下发 4个阶段处理通知到观察者
组件
- pushgateway
可选,数据采集的中间系统,监控目标先将指标上报到pushgateway,prometheus再通过pull方式采集监控数据
- prometheus server
prometheus服务器实例
- grafana
可选,当然也是建议采用,第三方展示工具,可以编写PromQL查询语句,通过http协议与prometheus集成
- alert manager
prometheus的alerting 模块 ,负责接收告警,例如prometheus server发送的告警信息,并且提供 分组、静默、抑制、下发等功能
重点组件介绍
pushgateway
- 拓扑
监控目标通过脚本或者其他程序push指标到pushgateway中,prometheus通过pull方式拉取pushgateway上的指标
- 为啥需要?
prometheus以pull形式采集监控指标,这样存在2个问题:
- 每次新增监控目标,就需要修改prometheus的配置文件
- 如果监控目标所在网络和prometheus所在网络不通,就无法通过prometheus的pull形式采集指标
- 有啥缺点?
- pushgateway存在单点问题,如果pushgateway出现故障,所有监控目标都将监控失败。当然可以借助lsb解决单点问题https://github.com/prometheus/pushgateway/issues/241
- 丢失了prometheus对实例健康状态检查功能
- 取消监控一个服务,需要手动删除pushgateway上对应的持久化数据
- API
所有监控指标的push都通过http接口
/metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>}
- 管理API
HTTP_METHOD | PATH | DESCRIPTION |
---|---|---|
GET | /-/healthy | Returns 200 whenever the Pushgateway is healthy. |
GET | /-/ready | Returns 200 whenever the Pushgateway is ready to serve traffic. |
PUT | /-/quit | Triggers a graceful shutdown of Pushgateway. |
Alert Manager
- 分组
将告警消息分组,便于大量告警 涌入时带来 通知过多问题
- 静默
按照一定规则,在一定时间内不进行通知下发,在时间阈值达到后,进行下发
- 抑制
一个告警消息被另一种告警消息抑制,另一种告警发送后,该告警不下发
- 管理API
HTTP_METHOD | PATH | DESCRIPTION |
---|---|---|
GET | /-/healthy | Returns 200 whenever the Alert manager is healthy. |
GET | /-/ready | Returns 200 whenever the Alert manager is ready to serve traffic. |
PUT | /-/reload | triggers a reload of the Alertmanager configuration file. |
具体使用这里不做过多介绍,详情参考官网
服务发现
https://blog.csdn.net/weixin_37512224/article/details/104311486
参考
https://aq.qq.com/v2/uv_aq/html/reset_pwd/pc_reset_pwd_set_new_pwd.html
https://github.com/prometheus/pushgateway