【普罗米修斯】完整解析基础知识
Prometheus是一款备受关注的开源工具,主要应用于SRE和运维监控领域。它基于Google内部监控服务(Borgmon)的思想,利用Docker和Kubernetes等服务的本地支持,实现了云基础架构下的容器化,并且设计面向全球使用。
在日本,很难找到有关Prometheus的日语文章,虽然有官方的Prometheus文档,但信息相对少。在这篇文章中,我们将介绍Prometheus的工作原理、监控的优点和挑战,以及Metricfire为什么有用。此外,您还可以通过MetricFire的Hosted Prometheus提供的14天免费试用来立即开始使用Hosted Prometheus,请参考。
理解 Prometheus(普罗米修斯)的结构
将终端点导入到Prometheus
应用程序可以使用不同的语言进行开发,但只要使用客户端库,就可以将几乎所有应用程序的指标终点发送到Prometheus。
可以使用特定的导出器从特定应用程序收集指标,并使其可供Prometheus使用。每个应用程序或导出器端点在Prometheus请求时都会提供指标、标签和相关元数据。官方和非官方供应商提供了数十个服务,但流行的导出器是node_exporter,它可以收集Linux和其他Unix服务器的系统指标。
数据存储
指标被存储在本地磁盘上,每个指标默认保留15天,因此它不是长期存储的解决方案,而是提供了一个滑动窗口式的数据窗口。Prometheus没有将指标保存到多个位置的功能。但是,由于请求时不会消耗指标,因此可以在同一个服务上运行多个Prometheus以实现冗余性。此外,通过联邦功能,一个Prometheus服务器可以与另一个服务器获取数据,并将相关或汇总数据整合到一个地方。
作为另一个选择,可以通过远程存储来实现,Prometheus可以配置remote_write和remote_read端点。Prometheus会定期将数据转发到remote_write端点,并通过查询时,通过remote_read端点请求数据并添加到本地数据中。这样可以生成显示更长时间范围内指标的图表。Metricfire可以提供这些远程存储端点以用于安装Prometheus,并且可以进行数年的数据存储。
使用Prometheus的好处是什么?
-
- 服务发现
-
- 在大规模部署中,服务发现可以让Prometheus轻松追踪当前的所有终端节点,因为在大规模部署中,可能会出现不断变化的情况。服务发现可以通过支持Kubernetes、Openstack、AWS EC2等多种资源管理服务来实现。DNS和基于文件的服务发现也是常见的选项。
停止检测
由于Prometheus识别监控对象,因此一旦请求失败,停止将被迅速检测到。
PromQL
PromQL是一种非常灵活和具有图灵完备性的查询语言。它可以对指标查询应用函数和操作符,通过标签进行过滤和分组,并使用正则表达式来改善匹配和过滤。
监控服务的低负载
指标在生成时存储在内存中,并且以只在请求时才可读取的格式转换。这比将所有指标转换为字符串并在创建后立即发送的服务(如Graphite)使用的资源要少。此外,指标会进行批处理,并通过HTTP一次性发送,因此即使使用UDP,指标的负载也比每个指标发送等效的负载要低。
流量量控制
推送型的指标服务可能会因大量数据点而压倒,但Prometheus只在请求时接收指标,即使服务本身非常拥挤。Jenkins用户可能会看到在批处理时,指标的数量会急剧增加,但是使用Prometheus Exporter部署后,不论生成的事件数量如何,指标都将每15秒查询一次。这样可以确保监控服务的安全性。
浏览器的指标
可以直接查看指标端点,并随时确认生成的指标。Prometheus特有的指标可以在http:// localhost:9090 / metrics上显示。
简单的重新配置
由于Prometheus负责获取指标,所以一旦有所需的配置更改,只需在Prometheus中进行更改,而无需更改所有监控对象服务的配置。
使用Prometheus时面临的挑战
-
- 存储
-
- 标准的存储方式使用服务器上的空间和资源。 这不一定是专门针对Prometheus的,并且可能会因所使用的平台而变得昂贵(AWS的高IO EBS卷似乎价格适中,但成本较高)。 实际占用的存储容量可以很容易地进行计算,并且随着监控服务数量的增加,存储的数据量也会增加。
冗余性
Prometheus只存储在一个地方。 与可以将数据存储在存储集群中的Graphite不同。 运行多个Prometheus实例以对同一指标进行处理可能是一种解决方案,但无疑会更加复杂和繁琐。
没有事件驱动的度量
每个值只能在特定时间点通过请求获取,并且度量只能在短时间内或间歇性地使用,因此不能用于短期作业或批处理。 Prometheus通过提供推送网关来解决此问题。
网络访问限制
对要监视的资源的访问限制意味着可能没有对这些资源的外部访问,因此需要运行多个Prometheus服务。 要显示不同的度量标准,必须连接到Prometheus的不同实例或使用联邦从多个Prometheus中获取度量标准到一个中央服务器上。
规则和警报 (guī zé hé ɡ
普罗米修斯支持记录规则和警报规则两种规则的配置。使用记录规则,可以通过指定PromQL样式的规则,将转换和函数应用于接收到的数据,从而创建新的度量。这在一次性显示多个度量时非常方便,如果获取它们需要时间,可以相应地创建总计()的度量。将来只需要获取一个度量即可。
当警报规则违反指定的标准时,Prometheus将检查已收集的一个或多个指标,并将其指示为警报状态。警报状态仅在Prometheus UI的警报页面上进行检查。Prometheus本身没有发送通知的功能。AlertManager是一个附加服务,为运行Prometheus服务器的平台提供单独监控警报的功能,以便在发生错误时发送通知。
MetricFire指标火
Metricfire通过提供托管版本的Prometheus来解决了现有Prometheus面临的问题,使用户使用起来更加方便。特别是在Prometheus中加入了长期可扩展的存储功能,使用了最多可保存长达2年的离线存储。
Grafana服务已附带,并可配置为使用Prometheus安装作为数据源。您还可以使用Metricfire数据源,将存储在所有Prometheus服务器上的数据汇总到一个地方进行展示。每个Prometheus服务器可能会生成具有相同名称的指标,并且通常将其自身的主机名视为localhost:9090。通过在全局配置中使用”external_labels”选项,可以确保从不同的Prometheus服务器获取相似指标时能够进行区分。
请加入MetricFire的免费试用,确认产品有多么实用。另外,您可以通过此处预约演示。
如果有任何问题,请随时联系我。祝您监督顺利!