如何为端点上的不同请求设置单独的计数器指标?

Posted

技术标签:

【中文标题】如何为端点上的不同请求设置单独的计数器指标?【英文标题】:How to setup separate counter metrics for different requests on an endpoint? 【发布时间】:2021-06-16 15:16:33 【问题描述】:

我是普罗米修斯的新手。我有一个为我的端点运行的基本计数器指标。但这是对该端点发出的所有请求的累积数量。我想为每种类型的请求设置一个单独的计数器。了解添加标签到计数器会处理它,我添加标签到计数器,如下所示。

basic_counter = Counter('basic_counter','A basic counter.', ['app_name', 'endpoint'])
def metrics():
    basic_counter.labels('prom-python-app', 'localhost:5000').inc() 

例如端点有“/health”页面。访问它时,应该有计数值 Prometheus 指标页面上的 localhost:5000 和 localhost:5000/health。但上面的代码只返回 basic_counter_total 值。如何为在此端点中访问的不同页面创建单独的计数器值?

【问题讨论】:

【参考方案1】:

您可以为所有类型的请求添加一般路径。您可以按照以下代码:

basic_counter = Counter('basic_counter','A basic counter.', ['app_name', 'endpoint'])
def metrics(self):
    basic_counter.labels('prom-python-app', self.path).inc() 

【讨论】:

我没有课。这只是功能。实际上我正在将应用程序路由到“/metrics”端点。然后在这里以 prometheus 可以读取的格式收集和公开指标。所以我真的不能有 self.path。 from flask import Blueprint, Response, request import http.server from prometheus_client import start_http_server, Counter, generate_latest blueprint = Blueprint('metrics', __name__) CONTENT_TYPE_LATEST = str('text/plain; version=0.0.4; charset=utf-8') basic_counter = Counter('http_requests','Total number of requests to baseURL.', ['app_name', 'endpoint']) @blueprint.route('/', methods=['GET']) def metrics(): basic_counter.labels('pron-python-app', 'localhost:5000').inc() return Response(generate_latest(), mimetype=CONTENT_TYPE_LATEST)

以上是关于如何为端点上的不同请求设置单独的计数器指标?的主要内容,如果未能解决你的问题,请参考以下文章

Application Insights 请求计数指标与查询不匹配

如何为两个 for 循环设置一个计数器?

使用 prometheus 按异常计数列出前 K 个端点

如何为 cassandra 设置读取请求超时

SQL:使用来自两个不同表的计数

通过监控一天内 API 请求计数/使用的总和来设置 GCP 警报?