本节学习Prometheus的核心,多维数据模型
 
比如要监控容器 webapp1 的内存使用情况,最传统和经典的方法是定义一个指标 container_memory_usage_bytes_webapp1 来记录webapp1的内存使用数据。假如每分钟取一次样,那么在数据库里就会有类似的记录。
 
 
现在需求变了,我们需要知道所有 webapp 容器的内存使用情况。如果还是采用前面的方法,就不得不增加新的指标 container_memory_usage_bytes_webapp2 、container_memory_usage_bytes_webapp3 。。。
 
像Graphite这类更高级的监控方案采用了更为优雅的层次化数据模型。为了满足上面的需求,Graphite会定义指标 container.memory_usage_bytes.webapp1、container.memory_usage_bytes.webapp2、container.memory_usage_bytes.webapp3。。。然后就可以用 container.memory_usage_bytes.webapp*  获取所有webapp 的内存使用数据
 
到目前为止问题处理的很好,但客户总会提出更多的需求,现在不仅要按容器的名字统计内存使用量,还要按镜像来统计,或者对比一下某一组容器在生产环境和测试环境中内存的使用情况。
 
当然我们可以这样:只要定义更多的指标就可以满足这些需求,比如 container.memory_usage_bytes.image1.webapp1 、 container.memory_usage_bytes.webapp1.prod等
 
但是我们不清楚用户什么时候会要什么数据,所以无法提前定义好用户需要的指标。下面看看Prometheus如何处理这个问题。
 
Prometheus 只需定义一个全局的指标 container_memory_usage_bytes ,然后通过添加不同的维度数据来满足不同的业务需求。
 
比如对于前面 webapp1 的三条取样数据,转换成 Prometheus多维数据如下
 
 
后面三列 container_name  、 image 、 env 就是数据的三个维度。想象一下,如果不同的env(prod、test、dev),不同的image(webapp1.2 、 webapp1.3 )的容器,他们的内存使用数据中标注了这三个维度的信息,那么将能满足很多的业务需求,比如:
 
    1、计算 webapp2 的平均内存使用情况  avg(container_memory_usage_bytes{container_name="webapp2"})
    2、计算运行 webapp1.2 镜像的所有容器内存使用情况  sum(container_memory_usage_bytes{image="webapp1.2"})
    3、统计不同运行环境中 webapp 容器内存使用总量 sum(container_memory_usage_bytes{container_name="webapp"}) by (env)
 
这里只是列举了几个例子,不过已经能够体现Prometheus数据模型的优势了。
 
    1、通过维度对数据进行说明,附加更多的业务信息,进而满足不同业务的需求。同时维度是可以动态添加的,比如再给数据加上一个user维度,就可以按用户来统计容器的内存使用量了
 
    2、Prometheus 丰富的查询语言能够灵活、充分的挖掘数据的价值。前面示例中的  avg、sum 、by 只是查询语言中很小的一部分功能,已经为我们展现了 Prometheus 对多维数据进行分片、聚合的强大能力。
 

084、Prometheus 到底NB在哪里?(2019-05-06 周一)的更多相关文章

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

    本节讨论 Prometheus 的核心,多维数据模型.我们先来看一个例子. 比如要监控容器 webapp1 的内存使用情况,最传统和典型的方法是定义一个指标 container_memory_usag ...

  2. Heartbeat took longer than "00:00:01" at "09/06/2019 05:08:08 +00:00".

    .netcore在k8s+docker+linux,部署后,偶尔会报这样的警告 Warn:Microsoft.AspNetCore.Server.KestrelHeartbeat took longe ...

  3. 2019.07.06 纪中_B

    今天的题看起来都很简单,结果就爆炸了 做题时:怎么都是图论??? 结果最后好多是DP(最恐怖的是还有我没学过的状压DP) 2019.07.06[NOIP提高组]模拟 B 组 做了两题(稍微腐败了一下) ...

  4. 2019.05.26 周日--《阿里巴巴 Java 开发手册》精华摘要

    一.写在开头 Java作为一个编程界最流行的语言之一,有着很强的生命力.代码的编写规范也是不容忽视的,今天,我就把自己阅读的国内的互联网巨头阿里巴巴的<阿里巴巴 Java 开发手册>一些精 ...

  5. 【转载】Spring Boot【快速入门】2019.05.19

    原文出处:https://www.cnblogs.com/wmyskxz/p/9010832.html   Spring Boot 概述 Build Anything with Spring Boot ...

  6. 2019/05/11 JAVA虚拟机原理

    所谓虚拟机,就是一台虚拟的机器.他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为 系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box.Vmare就属于系统虚拟机,他们完全是对物理计 ...

  7. 2019/05/13 JAVA虚拟机堆内存调优

    -Xms4000m 堆内存初始值 * -Xmx4000m 堆内存最大值 * -XX:+PrintGCDetails 打印GC信息 * -XX:+UseSerialGC 使用串行GC * -XX:+Pr ...

  8. 2019/05/11 JAVA虚拟机原理堆、栈、方法区概念区别

    Java堆 堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对 ...

  9. 2019/05/11 Java内存结构

    1.  类加载子系统:负责从文件系统或者网络加载Class信息,加载的信息存放在一块称之方法区的内存空间. 2.  方法区:就是存放类的信息.常量信息.常量池信息.包括字符串字面量和数字常量等. 3. ...

随机推荐

  1. ZooKeePer总汇

    一.什么Zookeeper Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization) ...

  2. shiro的web.xml的配置

    <servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class&g ...

  3. 选题 Scrum立会报告+燃尽图 02

    此作业要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/8683] 一.小组介绍 组长:贺敬文 组员:彭思雨 王志文 位军营 杨萍 ...

  4. LeetCode 55. 跳跃游戏(Jump Game)

    题目描述 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1: 输入: [2,3,1,1,4] 输出: ...

  5. Centos 6.5 Multipath 初始配置

    # This is a basic configuration file with some examples, for device mapper # multipath. # For a comp ...

  6. D4上午

    概率和期望DP 概率 某个事件A发生的可能性的大小,称之为事件A的概率,记作P(A). 假设某事的所有可能结果有n种,每种结果都是等概率,事件A涵盖其中的m种,那么P(A)=m/n. 例如投掷一枚骰子 ...

  7. vscode + php+ftp

    首先,php网站的文件都整理到一个文件夹中: 然后,用vscode的File.Open Folder打开刚才的文件夹: 3,Ctrl+Shift+P,输入SFTP:Config,会打开一个配置文件,编 ...

  8. linux常用命令(22)gzip命令

    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用 ...

  9. Eclipse_Package Presentation

    Package Presentation ->Flat ->Hierarchical更常用

  10. Oracle自动性能统计

    Oracle自动性能统计   高效诊断性能问题,需要提供完整可用的统计信息,好比医生给病人看病的望闻问切,才能够正确的确诊,然后再开出相应的药方.Oracle数据库为系统.会话以及单独的sql语句生成 ...