Prometheus -- 简介篇
写在前面
软件介绍目前全部来源于官方网站,以学习为主。列表中重点部分为每段重点知识,可直接查看快速学习。
什么是Prometheus?
普罗米修斯是一个开源的系统监控和警报工具包,最初在SoundCloud建立。自2012年成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有一个非常活跃的开发者和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,并明确项目的治理结构,普罗米修斯在2016年加入了云原生计算基金会,成为继Kubernetes之后第二个托管项目。
普罗米修斯以时间序列数据的形式收集和存储其指标,也就是说,指标信息与记录的时间戳一起存储,同时还有被称为标签的可选键值对。
focus
- Prometheus 开源的系统监控和警报工具包。
- Prometheus 以时间序列数据的形式收集和存储其指标,存在标签的可选键值对。
特点
focus
- 一个多维数据模型,其中的时间序列数据由指标名称和键/值对识别
- PromQL是一种灵活的查询语言
- 不依赖分布式存储;单个服务器节点是自主的
- 时间序列的收集是通过HTTP模式拉动的
- 通过一个中间网关支持推送时间序列
- 通过服务发现或静态配置来发现目标
- 支持多种模式的图表和仪表盘制作
什么是度量衡?
通俗地说,度量衡是数字性的测量。时间序列是指随着时间的推移记录变化。用户想要测量的东西因应用不同而不同。对于网络服务器来说,可能是请求时间,对于数据库来说,可能是活动连接数或活动查询数等等。
在理解你的应用程序为什么以某种方式工作时,指标起着重要作用。让我们假设你正在运行一个网络应用程序,并发现该程序很慢。你将需要一些信息来找出你的应用程序正在发生的事情。例如,当请求的数量很高时,应用程序会变得很慢。如果你有请求数指标,你可以发现原因,并增加服务器的数量来处理负载。
focus
- 度量衡是数字性的测量
- 时间序列是指随着时间的推移记录变化
- 指标参数为Prometheus关注的重点
组成部分
大多数Prometheus组件都是用Go编写的,这使得它们很容易作为静态二进制文件进行构建和部署 普罗米修斯生态系统由多个组件组成,其中许多是可选的:
focus
- 普罗米修斯的主服务器,用于刮取和存储时间序列数据
- 用于检测应用程序代码的客户库
- 一个支持短期工作的推送网关
- HAProxy、StatsD、Graphite等服务的特殊用途出口
- 一个处理警报的警报管理器
- 各种支持工具
结构层次
这张图说明了Prometheus的架构和它的一些生态系统组件:
普罗米修斯通过中间的推送网关从短期的被检测作业中收集指标,或直接用于作业(适合普罗米修斯的作业)。它在本地存储所有收集的样本,并在这些数据上运行规则,以便从现有数据中聚合和记录新的时间序列,或生成警报。
Grafana或其他API消费者可用于可视化收集的数据。
focus
- Prometheus Server: 用数据的采集和存储,PromQL查询,报警配置。
- Push gateway: 用于批量,短期的监控数据的汇报总节点。
- Exporters: 各种汇报数据的exporter,例如汇报机器数据的node_exporter,汇报MondogDB信息的 MongoDB_exporter 等等。
- Alertmanager: 用于高级通知管理。
--- 来源接近完美的监控系统—普罗米修斯 - 知乎 (zhihu.com)
什么时候适用?
普罗米修斯对于记录任何纯数字的时间序列都很有效。它既适合以机器为中心的监测,也适合监测高度动态的面向服务的架构。在微服务的世界里,它对多维数据收集和查询的支持是一个特别的优势。Prometheus是为了可靠性而设计的,是您在中断期间进入的系统,以便您快速诊断问题。 每个Prometheus服务器都是独立的,不是取决于网络存储或其他远程服务。 当基础架构的其他部分破裂时,您可以依靠它,并且您无需设置广泛的基础架构即可使用它。
foucs
- 记录任何纯数字的时间序列都很有效
- 硬件监测,服务监测,微服务,多维度监测
- 可靠性高
- Prometheus服务独立,使用简单
什么时候不适用?
Prometheus值可靠性。 即使在故障条件下,您始终可以查看有关系统可用的统计信息。 如果您需要100%的准确性,例如每次要求计费,Prometheus不是一个不错的选择,因为收集的数据可能不会详细且完整。 在这种情况下,最好使用其他一些系统来收集和分析数据以进行计费,并在其余的监视中进行Prometheus。
focus
- 需求100%准确性时,收集的数据可能不会详细且完整
总结
focus
总结来看,Prometheus作为开源的产品,在运维方面占据了极大的优势,以时间序列为基础的参数值对运维提升非常大,大多数服务器状态监测指标都与时间参数有关。同时PromQL查询语言也非常容易做集成,再外配置各种运维工具,可视化工具等,都对运维提升行之有效。