From 80f924123df786ba6e49d2f1676c5d9a68f4d562 Mon Sep 17 00:00:00 2001 From: suyiiyii Date: Thu, 12 Dec 2024 13:08:27 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E4=BD=BF=E7=94=A8=20label=20?= =?UTF-8?q?=E7=AE=80=E5=8C=96=20request=5Fcounter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_bison/metrics.py | 9 +++++---- nonebot_bison/scheduler/scheduler.py | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/nonebot_bison/metrics.py b/nonebot_bison/metrics.py index 707440f..1e2c702 100644 --- a/nonebot_bison/metrics.py +++ b/nonebot_bison/metrics.py @@ -3,12 +3,13 @@ from starlette.responses import Response from prometheus_client import CONTENT_TYPE_LATEST, Counter, generate_latest # Request counter -request_counter = Counter("bison_request_counter", "The number of requests") -# Success counter -success_counter = Counter("bison_success_counter", "The number of successful requests") +request_counter = Counter( + "bison_request_counter", "The number of requests", ["site_name", "platform_name", "target", "success"] +) # Sent counter -sent_counter = Counter("bison_sent_counter", "The number of sent messages") +sent_counter = Counter("bison_sent_counter", "The number of sent messages", ["site_name", "platform_name", "target"]) + metrics_router = APIRouter(prefix="/api/metrics", tags=["metrics"]) diff --git a/nonebot_bison/scheduler/scheduler.py b/nonebot_bison/scheduler/scheduler.py index 6a292ac..85ca515 100644 --- a/nonebot_bison/scheduler/scheduler.py +++ b/nonebot_bison/scheduler/scheduler.py @@ -6,7 +6,7 @@ from nonebot_plugin_apscheduler import scheduler from nonebot_plugin_saa.utils.exceptions import NoBotFound from nonebot_bison.utils import ClientManager -from nonebot_bison.metrics import sent_counter, request_counter, success_counter +from nonebot_bison.metrics import sent_counter, request_counter from ..config import config from ..send import send_msgs @@ -94,10 +94,10 @@ class Scheduler: logger.trace(f"scheduler {self.name} fetching next target: [{schedulable.platform_name}]{schedulable.target}") context = ProcessContext(self.client_mgr) - request_counter.inc() + success_flag = False + platform_obj = platform_manager[schedulable.platform_name](context) try: - platform_obj = platform_manager[schedulable.platform_name](context) if schedulable.use_batch: batch_targets = self.batch_api_target_cache[schedulable.platform_name][schedulable.target] sub_units = [] @@ -110,6 +110,7 @@ class Scheduler: schedulable.platform_name, schedulable.target ) to_send = await platform_obj.do_fetch_new_post(SubUnit(schedulable.target, send_userinfo_list)) + success_flag = True except SkipRequestException as err: logger.debug(f"skip request: {err}") except Exception as err: @@ -118,10 +119,18 @@ class Scheduler: logger.warning("API request record: " + record) err.args += (records,) raise - success_counter.inc() + + request_counter.labels( + platform_name=schedulable.platform_name, + site_name=platform_obj.site.name, + target=schedulable.target, + success=success_flag, + ).inc() if not to_send: return - sent_counter.inc() + sent_counter.labels( + platform_name=schedulable.platform_name, site_name=platform_obj.site.name, target=schedulable.target + ).inc() for user, send_list in to_send: for send_post in send_list: logger.info(f"send to {user}: {send_post}")