普罗米修斯采用的三个阶段

在协助数百家企业发展到Kubernetes的过程中,他们制定了新的可视性策略之后,我了解了一些有关组织如何学习,发展和采用新的应用程序可观察性方法的知识。 开源通常对于发展这种理解至关重要。

在云原生监视世界中,普罗米修斯被广泛认为是起点。 就像Kubernetes是云原生世界中领先的开源容器协调器一样,Prometheus是开源云原生监控的领先软件选择。 如果您想了解有关Prometheus是什么以及它如何工作的更多详细信息,请阅读这份不错的Prometheus监视摘要 。 尽管大多数组织最终在生产中不使用不受支持的开源,但许多组织还是从这里开始。 最终的位置取决于您自己的业务需求。 让我简要介绍一下我通常看到的企业进入生产就绪战略的三个阶段。

1.实验

就像采用容器或Kubernetes并不是一overnight而就的,随之而来的可见性策略也不会一overnight而就。 好消息是,借助Prometheus,您的开发人员可以在不受时间或预算限制的情况下进行探索。

在此阶段,您正在寻找:

  • 基本仪器安装到位需要什么?
  • 它适用于我们自己的软件吗?
  • 我可以创建什么样的警报?
  • 它为根本原因分析提供了多少细节?

Prometheus可能需要在其仪器模型或查询语言方面进行一些设置,但这是为探索自由付出的低成本。 替代地,商业产品可以提供对时间或功能有更多限制的免费套餐或试用版,但是没有管理开销。

2.仪器

进行一些基本的实验后,是时候将更多数据输入系统并了解稍微扩展一点的部署后的情况了。 为此,请考虑两种形式的检测:

  • 使用出口商 。 Prometheus社区中有数十个出口商,旨在简化从通用软件组件中抓取的指标,这些组件已经通过端点公开了指标。 它们可以轻松地通过Kubernetes进行系统地部署。 这些出口商使用推送模型,根据生产环境的复杂性,在安全性方面可能会出现问题。
  • 使用Prometheus指标格式 。 Prometheus指定了一种容器和微服务友好格式,允许您直接从应用程序中发出自定义指标。 这实质上是使您能够深入观察自己的代码。 请注意,如果您的开发团队已经使用了StatsD或JMX之类的指标格式,则您可能已经可以使用它,但是这可能需要更多的操作工作并减少功能。 下一节将对此进行更多介绍。

好的,现在您的团队越来越有信心,您已经有了想要的实际指标,我们做对了吗? 不完全的。 是时候投入生产了。

3.运作化

这可能会令人震惊,但您的实验可能看起来与您未来12个月的实际生产环境完全不同。 在实施新的监视策略之前,让我先解决一些关键问题,以供您考虑,以免以后出现失误:

  • 解决方案是否满足扩展要求? 有多少数据输入,您想存储多长时间? 您是否愿意管理许多数据库,还是希望全部集中管理?
  • 您将如何控制对数据的访问? 您是否会通过要求开发团队满足安全性和合规性要求来限制数据?
  • 非Prometheus格式的指标会怎样? 您是否会找到一种支持它们的方法,尤其是当旧版应用程序迁移到容器时?
  • 查询语言模型会随着您的成长而工作吗? PromQL功能强大且灵活,随着时间的流逝,它很容易在您的开发人员中采用。 但是您的平台运营和支持团队具有这些技能吗? 您会努力教给他们他们需要知道什么吗?
  • 最后,您愿意在正在进行的维护中花费多少资源? 每个系统都需要一些。 您需要决定是否要通过人力资源,普罗米修斯支持形式的资本资源或通过许可商业产品来支付这笔费用。

在此过程中,您总是要回答经典的“生成-购买”问题:您应该使用开源构建内容并自己进行维护,还是购买可以轻松迁移实验并简化未来生活的内容?

这些问题将有助于成功定义下一代容器平台的监视策略。 使用经过仔细衡量的方法,您将能够成长为成功的Prometheus部署,并且还能找出为您的组织构建的正确支持模型。

From: https://www.infoworld.com/article/3275887/3-phases-of-prometheus-adoption.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 普罗米修斯监控代码:#include <stdio.h>int main(void) { int prometheus_value = 0; while (1) { printf("Prometheus value: %d\n", prometheus_value); prometheus_value++; } return 0; } ### 回答2: 普罗米修斯(Prometheus)是一款开源的监控和警报工具,可以帮助系统管理员实时监测服务和应用程序的性能指标。编写普罗米修斯监控代码的主要目的是收集并暴露关键指标以供监控和运维团队使用。 以下是一个简单的普罗米修斯监控代码示例: ```python from prometheus_client import start_http_server, Gauge import random import time # 创建一个Gauge类型的指标对象 cpu_usage = Gauge('cpu_usage', 'CPU使用率') # 启动一个HTTP服务,暴露Prometheus指标 start_http_server(8000) while True: # 模拟获取CPU使用率 current_cpu_usage = random.uniform(0, 100) # 使用set()方法设置指标的值,作为当前时间戳,普罗米修斯将自动记录该时间戳和值 cpu_usage.set(current_cpu_usage) # 暂停1秒钟 time.sleep(1) ``` 上述代码使用Python编写,并使用prometheus_client库连接到普罗米修斯服务。首先,我们创建一个Gauge对象作为指标。然后,我们在一个无限循环中模拟获取CPU使用率,并通过`set()`方法设置指标的值。整个过程每秒钟执行一次,并将指标暴露在普罗米修斯服务的8000端口上。 通过访问`http://localhost:8000`,您可以查看普罗米修斯服务上此指标的当前值。可以使用普罗米修斯提供的PromQL查询语言对指标执行更复杂的操作和聚合。 需要注意的是,在实际使用中,通常不会手动编写监控代码。而是将不同应用程序的普罗米修斯指标集成到预先定义的统一监控配置文件中,使其自动收集和暴露指标。 ### 回答3: 普罗米修斯是一个开源的系统监控和警报工具,用于实时监控应用程序和系统的性能指标。下面是一个示例的普罗米修斯监控代码,其中监控一个虚构的电子商务网站的请求响应时间和数据库连接数。 首先,我们需要引入普罗米修斯的客户端库和必要的依赖项: ```python from prometheus_client import start_http_server, Summary, Gauge import random import time ``` 然后,我们创建一个Summary对象,用于记录请求响应时间的分布情况。这里使用Gauge对象记录数据库连接数的当前值: ```python REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request') DB_CONNECTIONS = Gauge('db_connections', 'Current number of database connections') ``` 接下来,我们编写一个模拟的请求处理函数,使用Python的装饰将该函数与Summary对象关联起来: ```python @REQUEST_TIME.time() def process_request(): # 模拟请求处理 time.sleep(random.uniform(0.1, 0.5)) # 模拟数据库连接数增加 DB_CONNECTIONS.inc() # 模拟请求处理完成后的清理工作 time.sleep(random.uniform(0.2, 0.4)) # 模拟数据库连接数减少 DB_CONNECTIONS.dec() ``` 最后,我们启动一个简单的HTTP服务,并在其中暴露普罗米修斯指标: ```python if __name__ == '__main__': # 启动HTTP服务,在8080端口上暴露普罗米修斯指标 start_http_server(8080) # 模拟每秒处理10个请求,持续运行 while True: for _ in range(10): process_request() time.sleep(1) ``` 这样,我们就创建了一个简单的普罗米修斯监控代码。它会统计每个请求的处理时间,并记录数据库连接数的变化。你可以通过访问http://localhost:8080获取监控指标,进而进行性能分析和故障排查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值