普罗米修斯的架构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了普罗米修斯的架构相关的知识,希望对你有一定的参考价值。
参考技术A 以上展示了普罗米修斯的整体架构。 普罗米修斯通过服务发现发现要抓取的目标。 这些目标可以是你自己写好的可以被抓取数据的应用程序,或者是第三方应用程序,你可以通过exporter来抓取它们的数据。 抓取的数据被存储。你可以使用PromQL查询这些存储的数据,并在仪表盘中展示它们,或者向Alertmanager发送警报,Altermanager会将警报转换为页面,电子邮件或者其他通知。Prometheus(普罗米修斯)监控架构简介
最近在了解一些云原生相关的内容,其中就涉及到Prometheus这一个监控框架,下面就简要介绍一下这一个监控框架。
1. 架构图
下面是官方给出的架构图:
可以看到,普罗米修斯是基于pull-push即拉取和推送模型,(其实这样的说法太抽象了,简而言之就是获取监控指标metrics和发出告警信息alert以及进行可视化)
2. 各个组件介绍
下面是对于里面主要的组件的介绍:
- 用于采集和存取时间序列数据的 Prometheus server
- 用于监测应用的客户端库 (client lib,在客户端这里,图中没有标出)
- 用于支持短期的作业(Short-lived jobs)的 push gateway(下面有Short-lived jobs和push gateway的定义)
- 诸如 HAProxy,StatsD,Graphite 等服务的专用 exporter (下面有他的定义)
- 用于处理告警的 alertmanager
- PromQL是Prometheus内置了一个强大的数据查询语言。
- Grafana是可视化的工具。
- docker镜像是有Prometheus的,所以Prometheus能够在K8s上迅速的部署
- Exporters/Jobs:Prometheus的数据采集组件,负责收集目标对象(host, container…)的性能数据,并通过HTTP接口提供给Prometheus Server。支持数据库、硬件、消息中间件、存储系统、http服务器、jmx等。
- Short-lived jobs:瞬时任务的场景,无法通过pull方式拉取,需要使用push方式,与PushGateway搭配使用
- PushGateway:应对部分push场景的组件可选组件,这部分监控数据先推送到Push Gateway上,然后再由Prometheus Server端拉取 。用于存在时间较短,可能在Prometheus来拉取之前就消失了的 jobs
由于Prometheus基于Golang编写,所以是原生支持go的。
此外还有以下特点:
- 定义了开放指标数据标准:支持pull和push两种方式的数据采集,以基于HTTP的Pull方式采集时序数据,只有实现了prometheus监控数据格式才可以被prometheus采集;以Push方式向中间网关(Gateway)推送时序数据,能更灵活地应对各种监控场景。
- 支持通过静态文件配置和动态发现机制发现监控对象,自动完成数据采集。prometheus目前已经支持Kubernetes、Consul等多种服务发现机制,可以减少运维人员的手动配置环节。
所以,如果你是在k8s(Kubernetes)上面部署Prometheus监控,**可以通过对外暴露服务(service的方式,利用Prometheus进行监控。**可以参考资料一最后一节的内容。
3. 官方给出的特点
下面是官方文档上说的Prometheus的特点:
- 具有由指标名称和键/值对标识的时间序列数据的多维数据模型
- PromQL,一种灵活的查询语言
- 不依赖分布式存储(指的是普罗米修斯监控应用本身,不是说它不支持对分布式场景进行监控)
- 时间序列收集通过HTTP上的拉取模型(就是前面的 pull)进行
- 通过中间网关(就是前面的gateway)支持推送时间序列(就是前面的 push)
- 通过服务发现或静态配置发现目标
- 多种图形和仪表板支持模式
也就是实际上Prometheus本身并不做直接监控,只是做了一个监控整合,把监控信息获取,数据分析,告警,前端界面等整合到一起了。
参考资料
- https://hulining.gitbook.io/prometheus/introduction/overview 这是一个对于Prometheus的入门的介绍,如果有时间,很推荐跟着教程完整的走一遍
- https://www.modb.pro/db/45956
以上是关于普罗米修斯的架构的主要内容,如果未能解决你的问题,请参考以下文章