一、数据监控Prometheus
1、什么是Prometheus
Prometheus是由SoundCloud开源监控告警解决方案,从2012年开始编写代码,到2015年github上开源以来,吸引不少用户以及公司的使用。Prometheus作为新一代的开源解决方案,很多理念与Google SRE的运维之道不谋而合。
2、Prometheus特点
1.Prometheus是按照Google SRE运维之道的理念构建的,具有实用性和前瞻性的特点。
2.Prometheus一直在优化和巩固
3.Prometheus基于Go语言,性能不错,安装和部署简单,可以实现多平台部署的兼容性。
4.丰富的数据收集客户端,而且官方提供了各种常用的exporter
5.丰富强大的查询能力
3、Prometheus主要功能
1.多维数据模型
2.灵活的查询语句
3.无以来存储,支持local和remote不同类型
4.次啊用http,使用pull(拉)模式,简单移动
5.监控目标,可以采用服务发现或静态配置的方式。
6.支持多种统计数据模型,图形化友好
4、Prometheus基础架构
5、工作流程
指标采集:Prometheus server通过pull形式采集监控指标,可以直接拉取监控指标,也可以通过pushgateway作为中间环节,监控目标首先通过push操作将数据上传到pushgateway。
指标处理:Prometheus server 将次啊及到的数据存储在自身的DB或者第三方的DB上。
指标展示:Prometheus server 通过提供HTTP接口,提供自带或者第三方展示系统,例如Grafana。
指标警告:Prometheus server 通过push告警信息到AlertManager,AlertManager通过静默-抑制-整合-下发这四个阶段处理后通知观察者结果。
6、组件
- PushGateway
可选,作为数据采集的中间系统,监控木匾可以先通过push将数据上传到PushGateway,然后Prometheus server再通过pull的方式将数据采集到
- Prometheus Server
Prometheus服务器的实例
- Grafana
可选,这里建议使用,这是第三方的展示工具,可以编写Prom QL的查询语句,通过HTTP协议与Prometheus集成
- Alter Manager
prometheus的Alerting模块,负责接收告警,例如Prometheus server发送的警告信息,并且通过提供静默-抑制-整合-下发等操作。
7、重点组件介绍
7.1 pushgateway
- 拓扑图
监控目标通过脚本或者其他的程序push日志到pushgateway中,prometheus通过pull的方式拉取pushgateway的日志
- pushgateway的重要性
因为Prometheus是以pull的形式采集监控的指标,这样的话就会存在两个这样的问题:
1、每次新增监控目标就需要修改Prometheus的配置
2、如果监控目标所在网络和Prometheus所在网络不通,就无法通过Prometheus的pull形式采集指标
- Prometheus的缺点
1.pushgateway存在单点问题,如果pushgateway出现故障,所有监控目标都将失败。当然也可以借助LSB来解决单点问题
2.丢失Prometheus对实例健康状态的检查功能
3.取消监控一个服务,需要手动删除pushgateway上对应的持久化数据
- 单点故障
这里的pushgateway就是进程中的一个单点,这个点如果出现问题的话,就会引起单点问题。
- API
所有的监控指标的push都通过HTTP接口
7.2 Alert Manager
- 分组
将警告信息分组,方便应用于当大量报警信息涌入时的通知
- 静默
安装一定的规则,在一定时间内不进行通知下发,在达到一定的阈值之后,统一下发
- 抑制
一个告警信息被另一个告警信息抑制后,另一种告警发送之后,该告警不再发送
prometheus正应用于离线数仓中采集监控功能,通过与grafana联合使用,实现采集监控主要监控,通过openstry采集用户行为日志。