我正在使用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( 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"}
但是分母可以有不同的返回码,因此我必须对它们进行求和,并且我需要做一些忽略或继续操作,但是我还没有找到可以帮助我的例子,我真的很新在这里。
有人吗?
答案 0 :(得分: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个小时内变化的速度。
我希望发表评论。
如果我希望一个图表包含其他路径,则此解决方案将不起作用,而且我仍不确定该怎么做,因此这可以解决我当前的问题,但仍然无法帮助我找出解决方法忽略或启用类似的功能。