我是普罗米修斯的新手。并需要您对以下情况的指导:
我正在开发机器人提供商产品,客户可以在其中配置不同的机器人提供商,例如 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 指标来检测应用程序的建议包含以下内容:
绝不应该按程序生成指标名称,除非编写自定义收集器或导出器。
考虑以下内容:如果您计划聚合所有提供者(例如,无论提供者如何,对于请求的总数或平均数量),使用单独指标的方法将需要像
sum({__name__ =~ "bot_success_.+"})
这样的查询,并且通常不建议这样做。如果您想聚合提供商和其他一些标签,则需要首先从指标名称中提取提供商,然后才继续聚合。
此外,我建议您查看指标命名的最佳实践。例如,您的指标很可能最终会成为计数器,因此其名称应该类似于
bot_api_requests_total
。