博客
关于我
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 InnoDB引擎的锁机制详解
    查看>>
    Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
    查看>>
    mysql InnoDB数据存储引擎 的B+树索引原理
    查看>>
    mysql innodb通过使用mvcc来实现可重复读
    查看>>
    mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
    查看>>
    Mysql join原理
    查看>>
    mysql order by多个字段排序
    查看>>
    MySQL Order By实现原理分析和Filesort优化
    查看>>
    mysql problems
    查看>>
    mysql replace first,MySQL中处理各种重复的一些方法
    查看>>
    MySQL replace函数替换字符串语句的用法(mysql字符串替换)
    查看>>
    Mysql Row_Format 参数讲解
    查看>>
    mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
    查看>>
    MySQL Server 5.5安装记录
    查看>>
    mysql slave 停了_slave 停止。求解决方法
    查看>>
    MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
    查看>>
    mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
    查看>>
    mysql Timestamp时间隔了8小时
    查看>>
    Mysql tinyint(1)与tinyint(4)的区别
    查看>>
    mysql union orderby 无效
    查看>>