如何使用http_server_requests_seconds_count在grafana中创建错误率表

问题描述 投票:0回答:1

我有统计所有传入请求的指标

http_server_requests_seconds_count
。我的要求是在 grafana 仪表板中创建 4 列的表,第一列显示 uri,第二列显示 uri 状态代码 500 的请求计数,第三列显示 uri 状态代码 400 的请求计数,第二列显示状态代码请求不是 400 和 500 但不是 200 或 300 的请求计数,最后一列应显示 uri 的平均计数。

我如何使用表格可视化来创建它?

我尝试使用

http_server_requests_seconds_count
为每种情况添加多个查询,但无法将每个查询映射到不同的列

prometheus grafana metrics grafana-dashboard
1个回答
0
投票

我将做出一些假设来填补一些空白:

  • 从名称来看,听起来你的指标是一个计数器,我假设它有
    uri
    status_code
    的标签。
  • 我不确定最后一栏中的“uri 平均计数”是什么意思,所以我假设这意味着“时间窗口内的请求”

我们解决这个问题的方法是为每个 URI 计算几个不同的数量,将它们合并在一起,然后格式化结果。

首先,让我们设置一个表格可视化。

  • 在grafana中,如有必要,创建一个新的仪表板并添加一个新的面板
  • 将面板类型设置为表格
  • 在查询选项中,将“格式”设置为“表格”,将“类型”设置为“即时”。这将以表格可以使用的方式格式化普罗米修斯数据。

接下来,我们需要创建一个 prometheus 查询来获取目标时间段内 uri 的请求计数。让我们使用

sum(increase(http_server_requests_seconds_count[$__range])) by (uri)
。以下是查询的工作原理:

  • http_server_requests_seconds_count
    是你的指标,我假设它是一个计数器。
  • $__range
    是右上角时间下拉列表中给出的持续时间,
    [$__range]
    告诉普罗米修斯从时间序列中获取与该大小相等的切片。
  • 计数器值的原始形式没有用处,因此我们需要使用
    rate
    increase
    对其进行处理以使其有用。
    increase
    将告诉我们在
    $__range
    给出的时间范围内发生了多少个请求。
  • 最后
    sum(...) by (uri)
    将按
    uri
    对数据进行细分,并告诉我们每个数据发生了多少个请求。

结果应该是目标时间窗口内发生的每个端点的请求总数。

接下来,我们需要对您关心的其他数量重复此过程。

  • 将第一个查询重复 3 次,总共 4 次。确保四个选项的 Format=Table 且 Type=Instant。
  • 让我们修改第二个来计算
    500
    请求。我们可以通过使用相同的计算并仅通过过滤
    status_code=500
    上的初始指标来完成此操作,如下所示:
    sum(increase(http_server_requests_seconds_count{status_code="500"}[$__range])) by (uri)
  • 让我们在第三个查询中对
    400
    请求执行类似的操作:
    sum(increase(http_server_requests_seconds_count{status="400"}[$__range])) by (uri)
  • 对于“除了 500 和 400 之外的响应,但也不包括 200 或 300”,我们可以修改查询以过滤掉这些值:
    sum(increase(http_server_requests_seconds_count{status!~"200|300|400|500"}[$__range])) by (uri)

为了获得表中同一页上的所有这些值,我们需要进行合并操作。在“转换”选项卡下,添加“合并系列/表”转换。结果应该是一个表格,其中按 URI 提供了您要查找的四个值的详细信息。

最后,我们需要进行一些清理以使表格更具可读性。我们可以通过添加另一个重新组织列转换来做到这一点。我建议采取以下清理措施

  • 隐藏时间列,因为它只显示当前时间
  • 将值 #A 重命名为 Total Requests,将值 B 重命名为“500 Responses”,值 C 和 D 也同样。

这是设置屏幕截图:

screenshot of the referenced promQL queries

screenshot of the above referenced Grafana Transformations

最终结果如下:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.