Grafana 普罗米修斯计数器

use*_*999 6 metrics time-series grafana prometheus promql

在此处输入图片说明我试图使用 Prometheus 作为时间序列数据库在 Grafana 可视化中获取事件的准确计数。但是计数器显示不正确的记录。我得到的 2 天的计数比我得到的 7 天要高,这肯定表明出现了问题。

首先,我在这个 promql 查询中使用了一个统计可视化:

sum(increase(http_server_requests_seconds_count[$__range])).

聚苯乙烯

我也试过如下: sum(increase(http_server_requests_seconds_count[1m]))。这也给出了不正确的计数。

我已经对图表进行了相同的尝试,并使用图例在表格中显示总数。这也给出了不正确的计数。

请让我知道显示随着时间范围变化而可靠的计数的最佳方式是什么。

我的json:

{
    "colorMode": "value",
    "fieldOptions": {
        "calcs": [
            "lastNotNull"
        ],
        "defaults": {
            "mappings": [],
            "thresholds": {
                "mode": "absolute",
                "steps": [{
                    "color": "green",
                    "value": null
                }]
            }
        },
        "overrides": [],
        "values": false
    },
    "graphMode": "area",
    "justifyMode": "auto",
    "orientation": "auto"
},
"pluginVersion": "6.6.1",
"targets": [{
    "expr": " sum(increase(http_server_requests_seconds_count[$__range]))",
    "hide": false,
    "instant": true,
    "refId": "A"
}],
"timeFrom": null,
"timeShift": null,
"title": "Total Number of Requests",
"type": "stat"
}
Run Code Online (Sandbox Code Playgroud)

tra*_*nag 9

这对我有用:

sum(increase(http_request_duration_seconds_count{ecs_cluster=~"$ecs_cluster", instance_id=~"$instance_id"}[$__range]))
Run Code Online (Sandbox Code Playgroud)

激活instant query并将计算设置为last not null

在此输入图像描述

这是窗格 JSON:

{
  "cacheTimeout": null,
  "datasource": "Prometheus",
  "description": "",
  "fieldConfig": {
    "defaults": {
      "custom": {},
      "unit": " requests",
      "decimals": 0,
      "thresholds": {
        "mode": "absolute",
        "steps": [
          {
            "color": "blue",
            "value": null
          }
        ]
      },
      "mappings": [],
      "nullValueMode": "connected"
    },
    "overrides": []
  },
  "gridPos": {
    "h": 2,
    "w": 5,
    "x": 0,
    "y": 4
  },
  "id": 4,
  "interval": null,
  "links": [],
  "maxDataPoints": 100,
  "options": {
    "reduceOptions": {
      "values": false,
      "calcs": [
        "lastNotNull"
      ],
      "fields": ""
    },
    "orientation": "horizontal",
    "textMode": "auto",
    "colorMode": "value",
    "graphMode": "none",
    "justifyMode": "auto",
    "fieldOptions": {
      "calcs": [
        "lastNotNull"
      ]
    }
  },
  "pluginVersion": "7.1.0",
  "targets": [
    {
      "expr": "sum(increase(http_request_duration_seconds_count{ecs_cluster=~\"$ecs_cluster\", instance_id=~\"$instance_id\"}[$__range]))",
      "hide": false,
      "instant": true,
      "interval": "",
      "intervalFactor": 1,
      "legendFormat": "",
      "refId": "A"
    }
  ],
  "timeFrom": null,
  "timeShift": null,
  "title": "",
  "type": "stat"
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


val*_*ala 0

increase()由于所选的数据模型,Prometheus 可能会从函数返回不准确的结果- 有关详细信息,请参阅此问题

如果您需要准确的结果,则存在以下选项:

  • 要使用offset. 尝试如下操作:sum(http_server_requests_seconds_count - http_server_requests_seconds_count offset $__range)。请注意,此方法仅在给定指标在给定时间范围内http_server_requests_seconds_count未重置为 0(又名)时才有效。counter reset
  • 使用increase()MetricsQL 中的函数。它返回准确的值 -有关详细信息,请参阅这些文档。