Prometheus 到底 NB 在哪里?- 每天5分钟玩转 Docker 容器技术(84)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介:

本节讨论 Prometheus 的核心,多维数据模型我们先来看一个例子。

比如要监控容器 webapp1 的内存使用情况,最传统和典型的方法是定义一个指标 container_memory_usage_bytes_webapp1 来记录 webapp1 的内存使用数据。假如每1分钟取一次样,那么在数据库里就会有类似下面的记录。

好,现在需求发生了点变化,我们需要知道所有 webapp 容器的内存使用情况。如果还是采用前面的方法,就不得不增加新的指标 container_memory_usage_bytes_webapp2container_memory_usage_bytes_webapp3

像 Graphite 这类更高级的监控方案采用了更为优雅的层次化数据模型。为了满足上面的需求,Graphite 会定义指标 container.memory_usage_bytes.webapp1container.memory_usage_bytes.webapp2container.memory_usage_bytes.webapp3

然后就可以用 container.memory_usage_bytes.webapp* 获取所有的 webapp 的内存使用数据。

此外,Graphite 还支持 sum() 等函数对指标进行计算和处理,比如 sum(container.memory_usage_bytes.webapp*) 可以得到所有 webapp 容器占用的总内存量。

目前为止问题处理得都很好。但客户总是会提出更多的需求:现在不仅要按容器名字统计内存使用量,还要按镜像来统计;或者想对比一下某一组容器在生产环境和测试环境中对内存使用的不同情况。

当然你可以说:只要定义更多的指标就能满足这些需求。比如 container.memory_usage_bytes.image1.webapp1container.memory_usage_bytes.webapp1.prod等。

但问题在于我们没办法提前预知客户要用这些数据回答怎样的问题,所以我们没办法提前定义好所有的指标。

下面来看看 Prometheus 的解决方案。

Prometheus 只需要定义一个全局的指标 container_memory_usage_bytes,然后通过添加不同的维度数据来满足不同的业务需求。

比如对于前面 webapp1 的三条取样数据,转换成 Prometheus 多维数据将变成:

后面三列 container_nameimageenv 就是数据的三个维度。想象一下,如果不同 env(prod、test、dev),不同 image(mycom/webapp:1.2、mycom/webapp:1.3)的容器,它们的内存使用数据中标注了这三个维度信息,那么将能满足很多业务需求,比如:

  1. 计算 webapp2 的平均内存使用情况:avg(container_memory_usage_bytes{container_name=“webapp2”})

  2. 计算运行 mycom/webapp:1.3 镜像的所有容器内存使用总量:sum(container_memory_usage_bytes{image=“mycom/webapp:1.3”})

  3. 统计不同运行环境中 webapp 容器内存使用总量:sum(container_memory_usage_bytes{container_name=~“webapp”}) by (env)

这里只列了几个例子,不过已经能够说明 Prometheus 数据模型的优势了:

  1. 通过维度对数据进行说明,附加更多的业务信息,进而满足不同业务的需求。同时维度是可以动态添加的,比如再给数据加上一个 user 维度,就可以按用户来统计容器内存使用量了。

  2. Prometheus 丰富的查询语言能够灵活、充分地挖掘数据的价值。前面示例中的 avg、sum、by 只是查询语言中很小的一部分功能,已经为我们展现了 Prometheus 对多维数据进行分片、聚合的强大能力。

现在我们已经知道 Prometheus 的强大之处了,再 NB 的东西也得落地,下一节就开始实践。

书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html



本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/1975138

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
4天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
6天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
4天前
|
安全 持续交付 云计算
揭秘云计算中的容器化技术及其优势
揭秘云计算中的容器化技术及其优势
10 1
|
5天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
6天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
6天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
17天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
96 3
|
3月前
|
Prometheus 监控 Cloud Native
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
|
8天前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 监控关注的核心指标包括 Master 和 RegionServer 的进程存在性、RPC 请求数、JVM 内存使用率、磁盘和网络错误、延迟和吞吐量、资源利用率及 JVM 使用信息。通过 Grafana 可视化和告警规则,帮助管理员实时监控集群性能和健康状况。
|
16天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
82 0