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