geo/backend/app/middleware/prometheus_metrics.py

98 lines
2.2 KiB
Python

"""Prometheus指标定义"""
from prometheus_client import Counter, Histogram, Gauge, Info
# API层指标
API_REQUESTS_TOTAL = Counter(
"geo_api_requests_total",
"Total API requests",
["method", "endpoint", "status"]
)
API_REQUEST_DURATION_SECONDS = Histogram(
"geo_api_request_duration_seconds",
"API request duration in seconds",
["method", "endpoint"],
buckets=(0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0)
)
API_REQUESTS_IN_PROGRESS = Gauge(
"geo_api_requests_in_progress",
"Number of requests currently being processed",
["method", "endpoint"]
)
# Agent层指标
AGENT_EXECUTIONS_TOTAL = Counter(
"geo_agent_executions_total",
"Total agent executions",
["agent_name", "status"]
)
AGENT_EXECUTION_DURATION_SECONDS = Histogram(
"geo_agent_execution_duration_seconds",
"Agent execution duration in seconds",
["agent_name"],
buckets=(0.1, 0.5, 1.0, 5.0, 10.0, 30.0, 60.0, 120.0)
)
AGENT_RUNNING_TASKS = Gauge(
"geo_agent_running_tasks",
"Number of tasks currently running",
["agent_name"]
)
# LLM层指标
LLM_REQUESTS_TOTAL = Counter(
"geo_llm_requests_total",
"Total LLM requests",
["provider", "model", "status"]
)
LLM_REQUEST_DURATION_SECONDS = Histogram(
"geo_llm_request_duration_seconds",
"LLM request duration in seconds",
["provider", "model"],
buckets=(0.1, 0.5, 1.0, 2.0, 5.0, 10.0, 30.0, 60.0)
)
LLM_TOKENS_TOTAL = Counter(
"geo_llm_tokens_total",
"Total LLM tokens used",
["provider", "model", "token_type"]
)
LLM_COST_ESTIMATED = Gauge(
"geo_llm_cost_estimated",
"Estimated LLM cost in USD",
["provider", "model"]
)
# 业务层指标
BRAND_COUNT = Gauge(
"geo_brands_total",
"Total number of brands"
)
QUERY_COUNT_TOTAL = Counter(
"geo_queries_total",
"Total number of queries executed",
["platform", "status"]
)
CONTENT_GENERATED_TOTAL = Counter(
"geo_content_generated_total",
"Total content generated"
)
CITATION_DETECTED_TOTAL = Counter(
"geo_citations_detected_total",
"Total citations detected",
["platform"]
)
# 系统信息
SERVICE_INFO = Info(
"geo_service",
"GEO service information"
)