首页 > 其他分享 >使用 promethus 指标在 grafana 上创建 dashboard 的一些疑问记录

使用 promethus 指标在 grafana 上创建 dashboard 的一些疑问记录

时间:2023-11-15 15:00:44浏览次数:30  
标签:5m promethus 标签 namespace grafana increase cluster dashboard total

我用一个例子一步一步拆解一些常用的写法和指标。

这里我有一个需求是计算我的程序,每处理 1Gb 数据需要使用多少 CPU 时间。

(increase(container_cpu_usage_seconds_total{cluster="$cluster", namespace="$namespace"}[5m]) / on(pod, container, namespace) increase(enrich_event_bytes_total{cluster="$cluster", namespace="$namespace"}[5m])) * (1024 * 1024 * 1024)

 

increase/rate:

我们除了 increase 还经常使用 rate.

在Prometheus中,rateincrease函数都是用来处理计数器类型的时间序列数据。计数器是一种只增不减的指标,它常用来表示累积值,例如累计使用的CPU时间。然而,rateincrease在它们处理和计算这些数据方面存在一些关键的区别:

  1. rate():

    • rate()函数计算在给定时间范围内的平均增长率。
    • 它是一个瞬时的概念,通常用来了解“每秒”这样的速率。
    • rate()会处理计数器重置(例如,由于容器重启)和抓取间隔的影响,尝试提供一个平滑的估计。
    • 适用于计算指标的瞬时变化,如每秒请求数。
  2. increase():

    • increase()函数计算在给定时间范围内计数器增加的总量。
    • 它会考虑整个时间范围,并给出开始和结束时刻之间的增量值。
    • rate()一样,increase()也会处理计数器的重置情况。
    • 通常用于计算在某个具体时间范围内的总变化量,如在过去5分钟内接收到的总数据字节数。

简单理解,一个是算平均值的,一个是算总值的。在这里因为我最终要做一个除法,所以我打算获取一个增量的值,

 

[1m]/[5m]/[10m]:

在Prometheus查询语言中,[5m]是一个时间范围选择器,它指定了查询应该考虑的历史时间窗口大小。在这个上下文中,increase(enrich_event_bytes_total[5m])的意思是计算指标enrich_event_bytes_total在过去5分钟内的增加量。

这是如何工作的:

  • enrich_event_bytes_total 是一个计数器,它不断增加,每次处理事件时都会增加表示该事件大小的值。
  • 当您对这个指标应用increase()函数时,Prometheus会查看5分钟前该计数器的值和现在的值。
  • 然后,它计算两个值之间的差异,这就是在5分钟内的“增加量”。
  • 如果在这5分钟内有任何计数器重置(例如,由于容器重启),Prometheus也会正确处理这种情况,确保提供一个准确的增加量。

时间范围选择器[5m]是可配置的,您可以根据需要设置不同的时间长度,比如[1h]表示1小时,[10s]表示10秒等。选择合适的时间范围对于准确反映指标的实际变化非常关键。

总的来说这个可以帮我们划定一个区间数据,以让我们得到这个量。比如这里我使用 5m,5分钟。我只需要同样获取 5m 内增量的 cpu 使用时间 / 5m 内增量的 数据处理总量,理论上就可以计算出 处理 1单位数据(默认单位数据是 1kb,取决于你的上报单位) 需要的 CPU 时间。

 

On (pod, container, namespace):

这个可以理解为一个 SQL join 操作上的 on,他可以作为拼接条件帮助我们处理的数据。

在Prometheus中,当您尝试对两个指标进行操作时,如果这两个指标的标签集不匹配,那么在进行除法操作时可能会得到空结果。这是因为Prometheus在执行二元操作符(如除法/)时,默认执行的是标签的精确匹配(也称为内部连接)。

这意味着,只有当两个指标拥有完全相同的标签和相对应的值时,操作才会产生结果。

所以手动指定正确的条件,可以帮助我们计算拥有同样条件的数据。

 

同样的我们还可以指定别的条件,获取选择忽略一些条件。

  1. 忽略不匹配的标签: 使用ignore关键字来忽略不需要的标签,这样可以在执行操作时排除这些标签:

    increase(container_cpu_usage_seconds_total{cluster="$cluster", namespace="$namespace"}[5m]) / ignoring(cluster, namespace) increase(enrich_event_bytes_total[5m])
  2. 使用on关键字: 指定哪些标签必须匹配,这通常是两个指标共有的一组标签,例如podcontainer

    increase(container_cpu_usage_seconds_total{cluster="$cluster", namespace="$namespace"}[5m]) / on(pod, container) increase(enrich_event_bytes_total[5m])

    请根据实际情况替换podcontainer为您的指标实际有的共同标签。

  3. 添加缺失的标签: 如果enrich_event_bytes_total指标确实应该有clusternamespace这些标签,您可能需要调整收集这些指标的配置,确保标签的一致性。

  4. 使用group_leftgroup_right: 这些操作允许您在操作不同的向量时保留一个向量的所有标签。这在您希望保持其中一个指标的标签集时非常有用:

    increase(container_cpu_usage_seconds_total{cluster="$cluster", namespace="$namespace"}[5m]) / on() group_left increase(enrich_event_bytes_total[5m])

    group_left表示保持左侧指标的标签,group_right则相反。

 

 在这里记录一下。

标签:5m,promethus,标签,namespace,grafana,increase,cluster,dashboard,total
From: https://www.cnblogs.com/piperck/p/17833875.html

相关文章

  • Grafana新手教程-实现仪表盘创建和告警推送
    前言最近在使用Grafana的时候,发现Grafana功能比想象中要强大,除了配合Prometheus使用之外,他自身都可以做很多事情,可视化和监控平台,还可以直接根据用户自定义的告警规则完成告警和进行各种通知。于是在深入学习了一段时间之后,整理成此博文。温馨提示,本文约1.3w字,几十张示例图片并......
  • Centos7 nginx反向代理gitea和grafana&钉钉告警
    1安装nginxyuminstall-ygccmakepcre-develzlib-developenssl-develwgethttps://nginx.org/download/nginx-1.20.1.tar.gztar-zxvfnginx-1.20.1.tar.gzcdnginx-1.20.1./configure--prefix=/usr/local/nginx--with-http_ssl_modulemakemakeinstallvi/etc/system......
  • 基于Grafana+Flowcharting的基础设施监控可视化实践
    一概述基础设施监控对于确保系统的稳定性和性能至关重要。而要有效地监控和管理基础设施,可视化是一种强大的工具。本文将介绍如何使用Grafana和Flowcharting来实现基础设施监控的可视化,包括监控指标的收集、数据展示和报警通知等方面。通过合理的设计和配置,我们可以快速建立起一个......
  • Grafana监控Oracle数据库的表大小等信息
    Grafana监控Oracle数据库的表大小等信息方案oracledb_exporter以及prometheusgrafana使用的SQL以及配置文件[[metric]]context="table_sizeinfo"labels=["table_nameinfo","table_tablespace"]metricsdesc={table_rownum="tablerownum&q......
  • Grafana Error database is locked
    目录......
  • Linux环境Prometheus接入(二、Grafana安装)
    环境CentOS7.9安装1、命令下载yuminstall-yhttps://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.0-1.x86_64.rpm2、启动、查看状态systemctlstartgrafana-serversystemctlstatusgrafana-server-l3、修改启动端口cd/etc/grafanavigrafa......
  • Centos7部署grafana
     #修改主机名(可选)hostnamectlset-hostnamegrafanabashhostnamectl 显示:Statichostname:grafana#关闭防火墙和SElinux安全模式:systemctlstopfirewalldsystemctldisablefirewalld[root@grafana~]#setenforce0[root@grafana~]#getenforcePermissive#配置网卡信息(可......
  • Prometheus+Grafana实现服务性能监控:windows主机监控、Spring Boot监控、Spring Cloud
    1、Prometheus介绍Prometheus使用Go语言开发,中文名称叫:普罗米修斯。Prometheus是一个开源系统最初在SoundCloud构建的监控和警报工具包。自2012年成立以来,许多公司和组织已经采用了Prometheus,它现在是一个独立的开源项目并独立于任何公司进行维护。Prometheus于2016年加入云......
  • Prometheus+Node_exporter+Grafana监控
    Prometheus+Node_exporter+Grafana监控 1.Prometheus+Grafana环境搭建Prometheus1、在官⽹下载Prometheus:https://prometheus.io/download/2、选择prometheus-2.33.0-rc.0.linux-amd64.tar.gz下载 3、上传prometheus-2.33.0-rc.0.linu4.解压安......
  • Sentinel-dashboard安装(k8s部署)
    目录Sentinel-dashboard安装(k8s部署)一.拉取镜像并推送到私库二.准备sentinelstatefulset部署配置文件三.部署并访问sentinelSentinel-dashboard安装(k8s部署)一.拉取镜像并推送到私库这里选择的是dockerhub已经有人制作好的Sentinel镜像dockerpullbladex/sentinel-dashboard......