作者:微信小助手
发布时间:2022-07-26T23:32:45
导语 :Prometheus是一个开源的完整监控解决方案,本文将从指标抓取到查询及可视化展示,以及最后的监控告警,对Prometheus做一个基本的认识。 Prometheus是古希腊神话里泰坦族的一名神明,名字的意思是“先见之明”,下图中是Prometheus被宙斯惩罚,饱受肝脏日食夜长之苦。 也就是说,Prometheus是一个数据监控的解决方案,让我们能随时掌握系统运行的状态,快速定位问题和排除故障。 Prometheus提供了从指标暴露,到指标抓取、存储和可视化,以及最后的监控告警等一系列组件。 每一个被Prometheus监控的服务都是一个Job,Prometheus为这些Job 提供了官方的SDK ,利用这个SDK可以自定义并导出自己的业务指标,也可以使用Prometheus官方提供的各种常用组件和中间件的Exporter(比如常用的MySQL,Consul等等)。 对于短时间执行的脚本任务或者不好直接 Pull指标的服务,Prometheus提供了PushGateWay网关给这些任务将服务指标主动推Push到网关,Prometheus再从这个网关里Pull指标。 上面提到了Push和Pull,其实这是两种指标抓取模型。 被监控服务一般通过主动暴露 指标抓取后会存储在内置的时序数据库中, 被监控服务在 静态注册: 静态的将服务的IP和抓取指标的端口号配置在
一、简介
下面就是我们CRUD Boy所了解的Prometheus,下面是其官网封面图引导语:
From metrics to insight
,从指标到洞察力,通过指标去洞察你的系统,为我们的系统提供指标收集和监控的开源解决方案。Prometheus发展速度很快,12年开发完成,16年加入CNCF,成为继K8s 之后第二个CNCF托管的项目,目前Github 42k的🌟,而且社区很活跃,维护频率很高,基本稳定在1个月1个小版本的迭代速度。
二、整体生态
(一)指标暴露
(二)指标抓取
metrics
端口或者通过Exporter
的方式暴露指标,监控服务依赖服务发现模块发现被监控服务,从而去定期的抓取指标。
对于
Prometheus
中的指标抓取,采用的是Pull模型,默认是一分钟去拉取一次指标,通过Prometheus.yaml
配置文件中的scrape_interval
配置项配置,Prometheus
对外都是用的Pull模型,一个是Pull Exporter
的暴露的指标,一个是Pull PushGateway
暴露的指标。(三)指标存储和查询
Prometheus
也提供了PromQL 查询语言给我们做指标的查询,我们可以在Prometheus
的WebUI上通过 PromQL
,可视化查询我们的指标,也可以很方便的接入第三方的可视化工具,例如grafana
。(四)监控告警
prometheus
提供了alertmanageer
基于promql来做系统的监控告警,当promql查询出来的指标超过我们定义的阈值时,prometheus
会发送一条告警信息到alertmanager
,manager会将告警下发到配置好的邮箱或者微信。三、工作原理
Prometheus
的从被监控服务的注册到指标抓取到指标查询的流程分为五个步骤:
(一)服务注册
Prometheus
中是一个Job存在,被监控服务的所有实例在 Prometheus
中是一个target的存在,所以被监控服务的注册就是在 Prometheus
中注册一个Job和其所有的target,这个注册分为:静态注册和动态注册。