带有相关字段但标签不同的promql示例

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

我正在使用Prometheus和Grafana,我正在尝试跟踪一个Web服务器应用程序。

我想绘制特定查询的平均持续时间(以毫秒为单位)。我想我可以从下面的数据中得到答案,但我很挣扎。

我的两套价值观:

rate(http_server_request_duration_seconds_sum[5m])

Element Value
{instance="dbserver:5000",job="control-tower",method="get",path="/api/control/v1/node/config.json"} 0.0010491088980113385
{instance="dbserver:5000",job="control-tower",method="get",path="/api/schedule/v1/programs/:id.json"}   0
{instance="dbserver:5000",job="control-tower",method="get",path="/api/schedule/v1/users.json"}  0
{instance="dbserver:5000",job="control-tower",method="get",path="/metrics"} 0.00009133616130826839
{instance="dbserver:5000",job="control-tower",method="post",path="/api/caption/v1/messages.json"}   0
{instance="dbserver:5000",job="control-tower",method="post",path="/api/caption/v1/sessions.json"}   0
{instance="dbserver:5000",job="control-tower",method="post",path="/api/schedule/v1/programs.json"}  0
{instance="dbserver:5000",job="control-tower",method="put",path="/api/caption/v1/sessions/captioners.json"} 0
{instance="dbserver:5000",job="control-tower",method="put",path="/api/control/v1/agents/:id.json"}


rate(http_server_requests_total[5m])

Element Value
{code="200",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="get",path="/api/control/v1/node/config.json"} 0.03511075688258612
{code="200",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="get",path="/api/schedule/v1/programs/:id.json"}   0
{code="200",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="get",path="/api/schedule/v1/users.json"}  0
{code="200",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="get",path="/metrics"} 0.06671043807691363
{code="200",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="post",path="/api/caption/v1/sessions.json"}   0
{code="200",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="post",path="/api/schedule/v1/programs.json"}  0
{code="200",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="put",path="/api/caption/v1/sessions/captioners.json"} 0
{code="200",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="put",path="/api/control/v1/agents/:id.json"}  0
{code="422",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="post",path="/api/schedule/v1/programs.json"}  0
{code="502",host="dbserver:5000",instance="dbserver:5000",job="control-tower",method="post",path="/api/caption/v1/messages.json"}

他们有不同的标签。为此,我只关心path =“/ api / caption / v1 / messages.json”。

我想我需要使用rate,sum和“on”或“ignore”的组合,但我根本无法继续或忽略工作。

我可以得到分子(以秒为单位):

rate( http_server_request_duration_seconds_sum { path="/api/caption/v1/messages.json" }[5m])

然后返回:

{instance="dbserver:5000", job="control-tower", method="post", path="/api/caption/v1/messages.json"}    

但是分母可以有不同的返回码,所以我必须总结那些,我需要做一些忽略或打开或者其他什么,但我还没有找到一个帮助我的例子,我真的很擅长这个。

任何人?

grafana prometheus promql
1个回答
0
投票

好的,我继续玩。因为我只有一条路我担心,我想我可以总结一下费率。我认为这有效:

sum( rate( http_server_request_duration_seconds_sum {path="/api/caption/v1/messages.json"}[2h])) / sum( rate( http_server_requests_total{ path="/api/caption/v1/messages.json"}[2h]))

当我的样本数据从我的5分钟窗口下降时,我改变了采样率,并且我有零。

我认为这是在做什么是总结费率,摆脱所有的标签。我认为它正在做的是使用2小时的数据。我认为速率值是该值在2小时内变化的速度。

我很乐意评论。

如果我想要一个图表包含其他路径,这个解决方案将不起作用,我仍然不知道该怎么做,所以这解决了我当前的问题,但仍然没有帮助我弄清楚如何做类似的事情忽略或打开。

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