Prometheus - 我们应该创建单独的计数器还是应该为单个计数器添加标签以进行区分

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

我是普罗米修斯的新手。并需要您对以下情况的指导:

我正在开发机器人提供商产品,客户可以在其中配置不同的机器人提供商,例如 Amazon Lex、Google Dialogue flow 或 Omilia。

有一个通用的API,可以响应顾客的请求。在这里它将使用客户配置的机器人来生成响应。

在此,我们希望捕获一段时间内向特定提供商发出的请求数量。

为此,我们应该为每个机器人创建一个单独的计数器,如下所示,还是应该使用带有标签的相同计数器?

带标签的单个计数器:

bot_success{,providerId="AmazonLex"} 10

bot_success{,providerId="GoogleDialogueflow"} 90

bot_success{,providerId="Omilia"} 14

每个机器人都有单独的计数器:

bot_success_AmazonLex - 10

bot_success_GoogleDialogueflow - 90

bot_success_Omilia - 14

对于单独的计数器,我需要为特定提供程序添加 if-else 块和增量计数器,对于单个计数器,我将在一个语句中完成此操作,并仅在标签中传递机器人提供程序。

prometheus monitoring
1个回答
0
投票

从存储和处理的角度来看,这两种方法没有太大区别。

但是关于使用 Prometheus 指标来检测应用程序的建议包含以下内容:

绝不应该按程序生成指标名称,除非编写自定义收集器或导出器。

考虑以下内容:如果您计划聚合所有提供者(例如,无论提供者如何,对于请求的总数或平均数量),使用单独指标的方法将需要像

sum({__name__ =~ "bot_success_.+"})
这样的查询,并且通常不建议这样做。如果您想聚合提供商和其他一些标签,则需要首先从指标名称中提取提供商,然后才继续聚合。


此外,我建议您查看指标命名的最佳实践。例如,您的指标很可能最终会成为计数器,因此其名称应该类似于

bot_api_requests_total

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