问题标签 [promql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1734 浏览

prometheus - 为什么在没有匹配原始数据的情况下`count_over_time`会增加?

...或“如何count_over_time工作?”

给定以下向量和值:

计算整个向量返回1

结果:

现在,count_over_time它根据范围矢量选择器而有所不同:

1米:

结果是“2”:

  • 1h 返回 120
  • 24小时返回2880

随着时间的推移,它到底在计算什么?

0 投票
1 回答
3305 浏览

grafana - 在 Group By 语句中计算值

用例:

我有 10 个 Kubernetes 节点(将它们视为 VM),它们具有 7 到 14 个可分配的 CPU 内核,这些内核可以由 Kubernetes pod 请求。因此,我想展示一张表格,其中显示

  1. 可分配的 CPU 内核
  2. 请求的 CPU 内核
  3. 请求/可分配 CPU 核心的比率

按节点分组。

问题

为前 2 个需求创建表很容易。我只是在 Grafana 中创建了一个表并添加了这两个指标:

然而,我正在为第三个而苦苦挣扎。我试过这个查询,但它显然没有返回任何数据:

问题

在我给定的示例中,如何在 group by 语句中计算两个不同的指标?

0 投票
1 回答
6143 浏览

grafana - Grafana 变量和 Prometheus 查询

我在尝试query使用此公式创建类型的自定义变量时遇到问题:

当我对普罗米修斯服务器播放此查询时(没有“label_values”,这是一个 grafan 模板函数),它工作正常。

我有以下吐司错误:

此变量的目的是仅列出在过去 10m 期间有活动的 Ingress 标签。

0 投票
1 回答
1934 浏览

kubernetes - Prometheus OR 使用 rate() 时

概括

我试图弄清楚如何|在 Prometheus 查询中正确使用 OR 运算符,因为我导入的 Grafana 仪表板不起作用。

长版

我正在尝试根据从运行AppMetrics/Prometheus的 Kubernetes pod 中抓取的一些数据来调试 Grafana 仪表板;仪表板在这里。基本上发生的情况是,当在serverGrafana 仪表板上选择“全部”的值时(server在这种情况下是单个 pod),不会出现任何数据。但是,当我选择一个单独的 pod 时,确实会出现数据。

这是从两个 pod 中抓取的相同指标的示例:

我在 Grafana 中运行查询检查器以找出它正在调用的查询,然后在 Prometheus 本身中运行 PromQL 查询。基本上,当我单独执行以下 PromQL 查询时,它们会返回数据:

但是,当我尝试使用 PromQL 的|运算符来组合它们时,我没有取回数据:

这是 Grafana 查询检查器的原始输出:

我也为此打开了一个 GitHub 问题;它有一个快速的 GIF 屏幕录制显示我的意思:AppMetrics/Prometheus#43

0 投票
1 回答
47 浏览

prometheus - 在时间序列之间聚合标签

我的指标如下所示:

我试图找到这些数据:

这甚至可能吗?数据在那里,我只是不知道如何编写查询。

0 投票
1 回答
5382 浏览

prometheus - 普罗米修斯缺席函数

我想检查某个指标是否在 5 分钟内在普罗米修斯中不可用。

我正在使用缺席(K_KA_GCPP)并给出 5 分钟的阈值。但似乎我无法在某些标签(如站点 ID)上对缺少的功能进行分组。

如果指标不适用于所有 4 个站点 ID,则 Absent 有效。我想了解所有 4 个站点 ID 中的 1 个站点 ID 的指标是否不可用或不存在,并且我不想在查询中对站点 ID 标签进行硬编码,它应该是通用的。有什么办法可以做到吗?

0 投票
1 回答
6607 浏览

prometheus - Prometheus 查询和区分大小写

我有一个查询,我试图在一个标签上加入两个指标。K_Status_Value == 5 和 ON(macAddr) state_details{live="True"}

标签 macAddr 出现在两个指标中。标签的值有时以大写字母 (78:32:5A:29:2F:0D) 出现在“K_Status_Value”中,有时以小写字母 (78:72:5d:39:2f:0a) 出现,但始终以大写字母出现“state_details”的情况。有什么方法可以让标签 macAddr 值在查询中不区分大小写,这样我就不会错过大小写不匹配的情况?

0 投票
1 回答
401 浏览

kubernetes - PromQL 指标查询返回的指标不是我想要的

我肯定还不明白 PromQL,但我读到的所有内容都说这个查询应该可以正常工作:

node_cpu

真的很简单吧?我的指标的名称,我确实在我的结果集中得到了它们。

node_cpu{app="prometheus",chart="prometheus-6.2.1",component="node-exporter",cpu="cpu0",heritage="Tiller",instance="10.85.166.16:9100",io_cattle_field_appId= "prometheus",job="kubernetes-service-endpoints",kubernetes_name="prometheus-node-exporter",kubernetes_namespace="prometheus",mode="guest_nice",release="prometheus"} 0 node_cpu{app="prometheus" ,chart="prometheus-6.2.1",component="node-exporter",cpu="cpu0",heritage="Tiller",instance="10.85.166.16:9100",io_cattle_field_appId="prometheus",job=" kubernetes-service-endpoints",kubernetes_name="prometheus-node-exporter",kubernetes_namespace="prometheus",mode="idle",发布="普罗米修斯"} 1784679.96

node_cpu{app="prometheus",chart="prometheus-6.2.1",component="node-exporter",cpu="cpu0",heritage="Tiller",instance="10.85.166.16:9100",io_cattle_field_appId= "prometheus",job="kubernetes-service-endpoints",kubernetes_name="prometheus-node-exporter",kubernetes_namespace="prometheus",mode="iowait",release="prometheus"} 2897.73

但我也得到了大量其他不需要的指标:

kubelet_runtime_operations_latency_microseconds_count{beta_kubernetes_io_arch="amd64",beta_kubernetes_io_os="linux",instance="la-1pk8s-w4",job="kubernetes-nodes",kubernetes_io_hostname="la-1pk8s-w4",node_role_kubernetes_io_worker="true",operation_type= “图像状态”}

container_start_time_seconds{beta_kubernetes_io_arch="amd64",beta_kubernetes_io_os="linux",id="/docker/8effa9b35affbf17118e7cc83a586d70da9fa960097ab717076c7251bf4eb324",image="rancher/rke-tools:v0.1.13",jobla="" kubernetes-nodes-cadvisor",kubernetes_io_hostname="la-1pk8s-w2",name="rke-log-linker-nginx-proxy",node_role_kubernetes_io_worker="true"}

storage_operation_duration_seconds_bucket{beta_kubernetes_io_arch="amd64",beta_kubernetes_io_os="linux",instance="la-1pk8s-w4",job="kubernetes-nodes",kubernetes_io_hostname="la-1pk8s-w4",le="0.1",node_role_kubernetes_io_worker= "true",operation_name="volume_unmount",volume_plugin="kubernetes.io/configmap"}

不知道他们为什么在那里,奇怪。所以我想我会过滤标签 component="node-exporter" 因为该标签只存在于我想要的指标中。

node_cpu{component="node-exporter"} 产生相同的结果集。

node_cpu{component=~"node-exporter"} 产生相同的结果集。

为什么我不能只获取所有 node_cpu 指标,为什么过滤不起作用?谢谢。

0 投票
4 回答
3409 浏览

kubernetes - kube cronjobs 的 Prometheus 多对多问题

嘿那里,

我正在尝试使用 Prometheus 配置 Kubernetes Cronjobs 监控和警报。我发现这个有用的指南

但是我总是得到一个不允许的多对多匹配:匹配标签必须在一侧是唯一的错误。

例如,这是触发此错误的 PromQL 查询:

max( kube_job_status_start_time * ON(job_name) GROUP_RIGHT() kube_job_labels{label_cronjob!=""} ) BY (job_name, label_cronjob)

查询本身会导致例如这些指标

kube_job_status_start_time kube_job_status_start_time{app="kube-state-metrics",chart="kube-state-metrics-0.12.1",heritage="Tiller",instance="REDACTED",job="kubernetes-service-endpoints",job_name="test-1546295400",kubernetes_name="kube-state-metrics",kubernetes_namespace="monitoring",kubernetes_node="REDACTED",namespace="test-develop",release="kube-state-metrics"}

kube_job_labels{label_cronjob!=""} kube_job_labels{app="kube-state-metrics",chart="kube-state-metrics-0.12.1",heritage="Tiller",instance="REDACTED",job="kubernetes-service-endpoints",job_name="test-1546295400",kubernetes_name="kube-state-metrics",kubernetes_namespace="monitoring",kubernetes_node="REDACTED",label_cronjob="test",label_environment="test-develop",namespace="test-develop",release="kube-state-metrics"}

我在这里缺少什么吗?我从指南中尝试的每个查询都会发生相同的多对多错误。即使我自己从头开始构建它也会导致同样的错误。希望你能在这里帮助我:)

0 投票
3 回答
1375 浏览

prometheus - Prometheus 自午夜以来的偏移量(秒)

我有一个 api 调用的计数器指标。我想查看今天(即从午夜开始)打了多少电话。我最初虽然是使用似乎适合的 delta 函数,但我无法弄清楚如何计算从 time() 到午夜的偏移量