目录
- 1.Prometheus
- 1.1.什么是Prometheus
- 1.2.Prometheus的工作流程
- 1.3.Prometheus的组件有哪些
- 1.4.Prometheus有什么特点
- 1.5.Metric的几种类型?分别是什么?
- 1.6.Prometheus的优点和缺点
- 1.7.Prometheus怎么采集数据
- 1.8.Prometheus怎么获取采集对象
- 1.9.Prometheus的配置文件组成
- 1.10.Prometheus有什么高可用方案
- 1.11.Prometheus有哪几种服务发现
- 1.12.Prometheus怎么监控k8s
- 2.alertmanager
- 2.1.alertmanager是什么
- 2.2.alertmanager处理告警的流程
- 2.3.alertmanager怎么实现高可用
- 3.exporter
- 3.1.exporter的类型
- 3.2.什么是白盒监控
- 3.3.什么是黑盒监控
- 4.pushgateway
- 4.1.pushgateway是什么
- 4.2.pushgateway能做什么
- 4.2.pushgateway有什么缺点
架构图:
1.Prometheus
1.1.什么是Prometheus
Prometheus是一款开源的监控系统,由SoundCloud开发,用于收集、存储和查询时间序列数据
,其数据模型是基于键-值对的时序数据
。
1.2.Prometheus的工作流程
- Prometheus server 定期从配置的targets中拉取metrics数据,并存储在本地的时间序列数据库中。
- Prometheus会根据用户定义的规则对这些时间序列进行计算、聚合,并触发警报通知用户。
- Prometheus收集的数据回在其内置的web UI中或grafana中提供可视化功能。
1.3.Prometheus的组件有哪些
- Prometheus Server:Prometheus服务器
- Client Libraries:检测应用程序代码的客户端库
- Push Gateway:用于支持短期临时或批量计划任务工作的数据汇聚节点
- Alertmanager:用于告警
- Exporter:收集监控样本数据
1.4.Prometheus有什么特点
- 通过PromQL实现多维度数据模型的灵活查询。
- 定义了开放指标数据的标准,自定义探针(如Exporter等),编写简单方便。
- PushGateway组件让这款监控系统可以接收监控数据。
- 提供了VM和容器化的版本。
1.5.Metric的几种类型?分别是什么?
有四种
- counter:其值从0开始只能增加,不会减少;重启进程后,会被重置;适用于跟踪事件的数量或大小,可以用来记录服务的请求次数、任务完成数、错误发生次数。
- gauge:是一种常规指标,反映系统当前状态的快照,是对一个值的瞬时测量。
- histogram:用于表示在一段时间范围内对数据进行采样,对指定区间以及总数进行分组统计。
- summary:常用于跟踪与时间相关的数据。
1.6.Prometheus的优点和缺点
- 优点:支持多语言客户端;支持本地和第三方远程存储,单机性能强劲;高效存储,平均一个采样数据占用3.5B左右;可扩展性强;精确告警;支持静态文件配置和动态发现等自动发现机制等
- 缺点:不适合存储事件或者日志;不会针对大量的历史数据进行存储等
1.7.Prometheus怎么采集数据
Prometheus调用HTTP GET请求或metrics数据接口获取数据。
1.8.Prometheus怎么获取采集对象
通过静态和动态两种方式;静态配置是一种传统的服务发现方式,适用于固定的监控环境、IP地址和统一服务接口场景;动态发现方式适用于云环境使用。
1.9.Prometheus的配置文件组成
Prometheus配置文件由以下几部分组成:
- global:用于定义全局变量和设置相关参数
- rule:用于定义报警规则和报警条件
- alertmanager:用于定义报警器的配置信息
- scrape:用于定义收集数据的配置信息
1.10.Prometheus有什么高可用方案
- 多实例Prometheus:相同的配置,共同接收处理数据,可搭配负载均衡使用
- 多实例+远程存储:解决了上条架构存在的数据一致性、持久化、迁移性、扩展性等问题
- 联邦集群:可以将监控采集任务以分治法的形式划分给不同的Prometheus实例分别进行处理,以实现功能分区,这种架构有利于水平扩展
- thanos集群:Thanos和 Prometheus无缝集成,并为 Prometheus带来了全局视图和不受限制的历史数据存储能力
1.11.Prometheus有哪几种服务发现
- 基于文件服务发现
- 基于consul服务发现
- 基于DNS的服务发现
1.12.Prometheus怎么监控k8s
通过kubernetes API来监控k8s集群,可以监控k8s组件和应用程序运行状态,收集k8s集群指标存储在prometheus服务器中。
2.alertmanager
2.1.alertmanager是什么
alertmanager是一款开源的告警管理工具,可以聚合来自Prometheus服务器的告警,并将其发送到用户指定的接收者。
2.2.alertmanager处理告警的流程
从源接收告警然后将其聚合为单个通知,接着对告警进行路由,将其发送到配置的通知目标,还可以对告警进行处理,例如抑制和延迟。
2.3.alertmanager怎么实现高可用
通过Gssip机制为多个alertmanager之间提供了信息传递的机制,确保及时在多个Alertmanager分别接收到相同告警信息的情况下,也只有一个告警通知被发送给Receiver。
实现方式是通过配置启动参数。
3.exporter
3.1.exporter的类型
- 直接采集型:这类Exporter直接内置了相应的应用程序,用于向Prometheus直接提供Target数据支持,例如cAdvisor、Kubernetes等
- 间接采集型:原始监控目标并不直接支持Prometheus,需要我们使用Prometheus提供的Client Library编写该监控目标的监控采集程序,如:Node exporter
3.2.什么是白盒监控
需要把对应的Exporter程序安装到被监控的目标主机上,从而实现对主机各种资源及其状态的数据采集工作的方式叫做白盒监控。
3.3.什么是黑盒监控
无法直接通过安装exporter监控到目标,Blackbox Exporter无须安装在被监控的目标环境中,用户只需要将其安装在与Prometheus和被监控目标互通的环境中,通过HTTP、HTTPS、DNS、TCP、ICMP等方式对网络进行探测监控,还可以探测SSL证书过期时间。
4.pushgateway
4.1.pushgateway是什么
Pushgateway是一个独立的服务组件,可在HTTP REST API上接收Prometheus指标,位于发送指标的应用服务程序和Prometheus服务器之间。Pushgateway接收指标,然后将其作为目标进行抓取,以便将指标提供给Prometheus服务器。
4.2.pushgateway能做什么
用于处理Prometheus无法直接去拉取各个目标的监控数据,目标资源的生命周期太短,目标资源没有可以抓取的端点等情况
4.2.pushgateway有什么缺点
- 单点故障,可能出现性能瓶颈
- 会丧失Prometheus通过UP监控指标检查实例健康状况的功能
- Pushgateway会对推送给它的所有监控数据进行持久化,即使被监控服务已经下线销毁了,Prometheus还是会获取到过期的历史监控数据