博客
关于我
084、Prometheus 到底NB在哪里?(2019-05-06 周一)
阅读量:798 次
发布时间:2023-04-16

本文共 1155 字,大约阅读时间需要 3 分钟。

Prometheus的多维数据模型:灵活满足监控需求

Prometheus作为一款优秀的开源监控工具,其核心优势在于其强大的多维数据模型。传统的监控方法往往面临着数据过于单一化的困扰,而Prometheus通过层次化的数据模型,能够更灵活地满足各种监控需求。

以内存使用情况监控为例,传统方法通常需要为每个容器定义独立的指标。比如,为了监控容器webapp1的内存使用情况,需要定义指标container_memory_usage_bytes_webapp1,并定期采集数据。然而,当需求扩展到监控所有webapp容器时,就需要定义大量类似的指标(如container_memory_usage_bytes_webapp2、container_memory_usage_bytes_webapp3等),这显然不够高效。

Graphite等更高级的监控方案提出了更优雅的层次化数据模型。通过在指标名称中引入多个维度(dimension),可以一次定义多个指标。例如,定义container.memory_usage_bytes.webapp1、container.memory_usage_bytes.webapp2等指标后,就可以通过container.memory_usage_bytes.webapp*的过滤方式,轻松获取所有webapp容器的内存使用数据。

随着监控需求的不断扩展,用户可能会提出更复杂的查询需求。例如,监控所有镜像版本的webapp容器内存使用情况,或者按运行环境(如生产环境、测试环境)对比某一组容器的内存使用趋势。Prometheus的多维数据模型能够轻松应对这些复杂需求。通过在原始数据中引入更多维度(如image、env等),可以在查询时灵活组合满足不同业务需求。

例如:

  • 获取webapp2的平均内存使用量:avg(container_memory_usage_bytes{container_name="webapp2"})

  • 获取运行镜像webapp1.2的所有容器内存使用总量:sum(container_memory_usage_bytes{image="webapp1.2"})

  • 按运行环境统计webapp容器内存使用总量:sum(container_memory_usage_bytes{container_name="webapp"} by (env))

  • 这种灵活的数据模型不仅能够满足当前业务需求,还能通过引入更多维度(如user等),支持未来可能出现的新查询场景。

    Prometheus的查询语言功能强大,仅仅是avg、sum、by这几个基本聚合函数,便能展示其对多维数据进行分片、聚合的强大能力。这种灵活性使得Prometheus成为现代监控系统的理想选择。

    转载地址:http://tugfk.baihongyu.com/

    你可能感兴趣的文章
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>
    mysql中实现rownum,对结果进行排序
    查看>>
    mysql中对于数据库的基本操作
    查看>>
    Mysql中常用函数的使用示例
    查看>>
    MySql中怎样使用case-when实现判断查询结果返回
    查看>>
    Mysql中怎样使用update更新某列的数据减去指定值
    查看>>
    Mysql中怎样设置指定ip远程访问连接
    查看>>
    mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
    查看>>