【Prometheus】了解你的Prometheus指标

简单Prometheus查询用于指标检查
作者:Michal Kazmierczak
来源:mkaz.me

基数是关键。 它很容易失控,就像任何组合爆炸的实例一样。

这,再加上90%的指标从未被访问过的说法,创造了一个值得探索的领域。

观察性云供应商 已经提供了允许检查未使用数据并最终降低成本的工具。但是,当你没有访问这些工具的时候(即当你运行自己的Prometheus服务器时),你如何了解你的指标?

本文提出了一组简单的查询,允许检测到重指标。为了更好地说明结果,还有Grafana仪表板的提议。仪表板可以在下面的截图中看到。

在这里插入图片描述


目录

  1. 简短的理论介绍
  2. 查询
    • 2.1. 所有系列的计数
    • 2.2. 所有指标的计数
    • 2.3. 所有工作的计数
    • 2.4. 每个指标的系列计数
    • 2.5. 每个工作的系列计数
  3. Grafana仪表板

1. 简短的理论介绍

简而言之,标签的基数是观察到的不同值的数量。一个指标的基数是观察到的所有标签值组合的数量。在最坏的情况下,它是所有标签基数的乘积。

一个很好的例子是一个计数HTTP请求的指标,具有pathmethodresponse_code标签。让我们考虑一个场景,观察到五个路径,三种方法和三种响应代码。然后,基数是5 * 3 * 3 = 45

如果我们决定做一个微妙的改变,将这个计数器变成直方图(有12个桶),不久我们的指标基数可能会增长到45 * 12 = 540

注意,在运行查询时,重要的是运行一个即时查询,而不是范围查询,因为对于本文的目的,最后一个记录的值就足够了 - 我们对随时间的变化不感兴趣。查询范围查询可能会非常慢。

让我们不再赘述,深入细节。

在这里插入图片描述

2.1. 所有系列的计数

首先,让我们获取总的系列数。这是所有唯一标签组合的计数(包括__name__标签)。

count({__name__!=""})

这个查询依赖于一个简单的规则:Prometheus查询语言(PromQL)要求提供一个指标名称或至少一个标签匹配器。__name__是添加到每个指标的内部标签,其值为指标名称。由于指标名称不能为空,所以!=""表达式选择了所有指标。

这个强大的概念将在后续查询中重复使用。

2.2. 所有指标的计数

现在,让我们检查我们的Prometheus实例维护了多少指标。

count(count({__name__!=""}) by (__name__))

没什么不寻常的,这只是将前面的查询按__name__分组并计数。

2.3. 所有工作的计数

类似地,让我们检查产生指标的工作数量。

count(count({__name__!=""}) by (job))

这是前一个查询的相同角度 - 按job标签分组。

2.4. 每个指标的系列计数

现在让我们更深入一些,查看更详细的数据。

sort_desc(count({__name__!=""}) by (__name__)
)

这个查询输出每个指标的系列数。它有助于发现具有高基数的指标。使用sort_desc我们可以在顶部看到最有趣的结果。

2.5. 每个工作的系列计数

同样,让我们将分组更改为job

sort_desc(count({__name__!=""}) by (job)
)

输出显示每个工作的工作数。它可能揭示出某个工作(非常经常代表一个单独的抓取目标)正在产生不成比例的多的系列。

3. Grafana仪表板

盯着仪表板看是有趣的。因此,我忍不住基于上述查询构建了一个仪表板。除了上述数字,它还有更多的伴随计算,比如一个指标在所有系列中所占的百分比。在这里查看。


  1. “Lightstep已经研究了客户,特别是对于指标(…) - 每十个指标中就有一个被查询过任何目的。” Ben Sigelman,Lightstep的CEO,在OpenObservability Talks上说,链接。
  2. 如果你是Grafana Cloud的满意用户,请查看基数管理仪表板。
  3. 也有仪表板的Gist作为备份,链接。

请注意,以上翻译可能不完全精确,因为专业术语和上下文的准确性需要专业知识。如果你需要更专业的翻译或对某些术语有特定疑问,请咨询相关领域的专家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/4571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复杂Python代码看不懂,分享两个工具!

复杂Python代码看不懂,分享两个工具,事半功倍! Ryven Ryven是一个Python代码可视化工具! 精进地址:https://github.com/leon-thomm/Ryven 一些案例, Ryven可视化操作矩阵 Ryven可视化冒泡排序算法 Ryv…

Three.js和Cesium.js中坐标

在了解Three.js和Cesium.js前先了解并弄清楚图形学关于空间的基本概念流程: 计算机图形学 图形学中涉及到多个坐标空间,这些空间之间的变换是图形渲染中的核心部分。下面是一些常见的图形学空间及其变换顺序: 对象空间(Object Sp…

Python快速入门1数据类型(需要具有编程基础)

数据类型: Python 3.0版本中常见的数据类型有六种: 不可变数据类型可变数据类型Number(数字)List(列表)String(字符串)Dictionary(字典)Tuple(元…

【InternLM】基于弱智吧数据的微调数据构造实验

1. 数据处理流程 在AI领域有句名言:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。可见数据对整个AI的决定性影响,在模型开源化的今天,很多厂商的模型结构都大同小异,那影响最终模型的一大决定因…

4.28java项目小结

这几天完成了用户修改资料模块的功能,实现了修改用户头像,昵称等信息,并且对数据库进行了操作,大致画了好友资料的页面的内容,这两天尽量完成表的创建,建立多对多的关系,实现好友的添加功能。

.DevicData-P-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复

引言: 随着信息技术的飞速发展,网络安全问题日益凸显,其中勒索病毒以其独特的攻击方式和巨大的破坏性引起了广泛关注。.DevicData-P-XXXXXXXX勒索病毒就是近期出现的一种新型勒索病毒,它利用强大的加密算法和巧妙的传播手段&…

HNCTF 2022 week1 题解

自由才是生活主旋律。 [HNCTF 2022 Week1] Interesting_include <?php //WEB手要懂得搜索 //flag in ./flag.phpif(isset($_GET[filter])){$file $_GET[filter];if(!preg_match("/flag/i", $file)){die("error");}include($file); }else{highlight_…

求解素数环问题

注&#xff1a;这里我的代码是以第一位为最大数n为首元素不动的 思路&#xff1a; 首先我们分析问题要以较小规模的样例进行分析&#xff0c;例如n3时 第一步&#xff1a;深入搜索 我们先不管后面怎么样&#xff0c;当前的首要目标是先确定第一个元素的值&#xff0c;可知有…

windows电脑改造为linux

有个大学用的旧笔记本电脑没啥用了&#xff0c;决定把它改成linux搭一个服务器&#xff1b; 一、linux安装盘制作 首先要有一个大于8G的U盘&#xff0c;然后去下载需要的linux系统镜像&#xff0c;我下的是ubuntu&#xff0c;这里自选版本 https://cn.ubuntu.com/download/d…

今日arXiv最热NLP大模型论文:韩国团队提出ResearchAgent系统,模仿人类产出论文idea

你是否还在苦于想发论文却没有idea&#xff1f; 在浩瀚无边的文献中苦苦寻找却又无从下手&#xff1f; 那些看似与你研究相关的文章&#xff0c;要么已经被人研究得透彻无比&#xff0c;要么与你的方向南辕北辙&#xff0c;让你倍感挫败。 不要慌&#xff0c;让AI来助你一臂之…

日期类的实现,const成员

目录 一&#xff1a;日期类实现 二&#xff1a;const成员 三&#xff1a;取地址及const取地址操作符重载 一&#xff1a;日期类实现 //头文件#include <iostream> using namespace std;class Date {friend ostream& operator<<(ostream& out, const Dat…

C语言中的三大循环

C语言中为我们提供了三种循环语句&#xff0c;今天我就来与诸君细谈其中之奥妙。循环这一板块总结的内容较多&#xff0c;而且&#xff0c;很重要&#xff01;&#xff08;敲黑板&#xff01;&#xff01;&#xff01;)&#xff0c;所以诸君一定要对此上心&#xff0c;耐住性子…

系统服务(22年国赛)—— nmcli命令部署VXLAN

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; 系统服务&#xff08;22年国赛&#xff09;—— VXLAN服务部署https://myweb.myskillstree.cn/118.html 目录 题目&#xff1a; AppSrv 关闭防火墙和SEli…

Linux 双击sh脚本运行无反应或一闪而退【已解决】

这里写目录标题 一、问题描述二、解决思路1. 开启终端&#xff0c;使用命令行运行.sh脚本文件2. 终端中运行可以&#xff0c;但双击之后运行闪退 (遇到了个这个奇奇怪怪的问题) 三、分析记录3.1 .bashrc设置变量的作用域3.2 环境变量冲突覆盖问题. 四、相关知识点4.1 环境变量配…

CSS详解(一)

1、css工作中使用场景 美化网页&#xff08;文字样式、背景样式、边框样式、盒子模型、定位、动画、&#xff09;&#xff0c;布局页面&#xff08;flex布局、响应式布局、媒体查询&#xff09; 2、CSS 规则 通常由两个主要部分组成选择器和样式声明 2.1选择器 选择器指定了…

C语言-用二分法在一个有序数组中查找某个数字

1.题目描述 有15个数按由大到小顺序放在一个数组中&#xff0c;输入一个数&#xff0c;要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中&#xff0c;则输出“无此数” 二.思路分析 记录数组中左边第一个元素的下标为left&#xff0c;记录数组右边第一个…

Spring AI聊天功能开发

一、引入依赖 继承父版本的springboot依赖&#xff0c;最好是比较新的依赖。 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version><relativePat…

【JavaScript】转化为布尔值boolean的几种情况

1 转化为布尔值boolean时为false的6种情况 下面6种值转化为布尔值时为false&#xff0c;其他转化都为true&#xff1a; 1、undefined2、null&#xff08;代表空值&#xff09;3、0&#xff08;数字0布尔值为false&#xff0c;字符串"0"布尔值为true) (数字0转布尔类…

C++笔试强训day10

目录 1.最长回文字符串 2.买卖股票的最好时机(一) 3.过河卒 1.最长回文字符串 链接 一开始没认真看题目&#xff0c;直到提交了好几遍没过还是没去检查题目&#xff0c;一直检查代码逻辑&#xff0c;哎呦&#xff0c;难受了。 我以为是收尾字母相同就行了。 错误代码&…

为什么二维数组初始化第一维数组长度可以为空,第二维不可以为空呢?

注意&#xff0c;数组第二维的长度声明永远不能省略。这是因为C语言中的二维数组元素在c编译程序为其分配的连续存储空间中是按行存放的&#xff0c;即存在完整第一行后存第二行&#xff0c;然后再第三行&#xff0c;以此类推。存放时系统必须知道每一行有多少个元素才能正确计…