57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
from prometheus_client import Counter, Histogram, Gauge, start_http_server
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
# Counters
|
|
COLLECTED_POSTS_TOTAL = Counter(
|
|
"copykar_posts_collected_total",
|
|
"Total posts collected by the Telethon Userbot",
|
|
["source_channel_id"]
|
|
)
|
|
|
|
AI_REQUESTS_TOTAL = Counter(
|
|
"copykar_ai_requests_total",
|
|
"Total AI API calls made",
|
|
["action", "status"]
|
|
)
|
|
|
|
DUPLICATES_DETECTED_TOTAL = Counter(
|
|
"copykar_duplicates_detected_total",
|
|
"Total duplicate posts detected",
|
|
["method"] # "hash" or "ai_semantic"
|
|
)
|
|
|
|
ADMIN_ACTIONS_TOTAL = Counter(
|
|
"copykar_admin_actions_total",
|
|
"Total review decisions by admins",
|
|
["action"] # "approved", "rejected", "routed"
|
|
)
|
|
|
|
POSTS_PUBLISHED_TOTAL = Counter(
|
|
"copykar_posts_published_total",
|
|
"Total posts successfully published to target channels",
|
|
["target_channel_id"]
|
|
)
|
|
|
|
# Histograms
|
|
AI_LATENCY_SECONDS = Histogram(
|
|
"copykar_ai_latency_seconds",
|
|
"Time taken for AI API operations",
|
|
["action"]
|
|
)
|
|
|
|
# Gauges
|
|
QUEUE_POSTS_GAUGE = Gauge(
|
|
"copykar_posts_queue_gauge",
|
|
"Number of posts currently in various queue states",
|
|
["status"]
|
|
)
|
|
|
|
def start_metrics_server(port: int = 8000):
|
|
try:
|
|
start_http_server(port)
|
|
logger.info(f"Prometheus metrics server running on port {port}")
|
|
except Exception as e:
|
|
logger.error(f"Failed to start Prometheus metrics server: {e}")
|