Spaces:
Running
Running
# metrics_logger.py | |
# | |
# Imports | |
from datetime import datetime, timezone | |
# | |
# Third-party Imports | |
# | |
# Local Imports | |
from App_Function_Libraries.Metrics.logger_config import logger | |
# | |
############################################################################################################ | |
# | |
# Functions: | |
def log_counter(metric_name, labels=None, value=1): | |
log_entry = { | |
"event": metric_name, | |
"type": "counter", | |
"value": value, | |
"labels": labels or {}, | |
# datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). | |
# FIXME | |
"timestamp": datetime.now(timezone.utc).isoformat() + "Z" | |
} | |
logger.info("metric", extra=log_entry) | |
def log_histogram(metric_name, value, labels=None): | |
log_entry = { | |
"event": metric_name, | |
"type": "histogram", | |
"value": value, | |
"labels": labels or {}, | |
# datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). | |
# FIXME | |
"timestamp": datetime.now(timezone.utc).isoformat() + "Z" | |
} | |
logger.info("metric", extra=log_entry) | |
# | |
# End of Functions | |
############################################################################################################ | |
# # Prometheus | |
# # metrics_logger.py (Prometheus version) | |
# from prometheus_client import Counter, Histogram, start_http_server | |
# import logging | |
# from functools import wraps | |
# import time | |
# | |
# # Initialize Prometheus metrics | |
# VIDEOS_PROCESSED = Counter('videos_processed_total', 'Total number of videos processed', ['whisper_model', 'api_name']) | |
# VIDEOS_FAILED = Counter('videos_failed_total', 'Total number of videos failed to process', ['whisper_model', 'api_name']) | |
# TRANSCRIPTIONS_GENERATED = Counter('transcriptions_generated_total', 'Total number of transcriptions generated', ['whisper_model']) | |
# SUMMARIES_GENERATED = Counter('summaries_generated_total', 'Total number of summaries generated', ['whisper_model']) | |
# VIDEO_PROCESSING_TIME = Histogram('video_processing_time_seconds', 'Time spent processing videos', ['whisper_model', 'api_name']) | |
# TOTAL_PROCESSING_TIME = Histogram('total_processing_time_seconds', 'Total time spent processing all videos', ['whisper_model', 'api_name']) | |
# | |
# def init_metrics_server(port=8000): | |
# start_http_server(port) | |
# | |
# def log_counter(metric_name, labels=None, value=1): | |
# if metric_name == "videos_processed_total": | |
# VIDEOS_PROCESSED.labels(**(labels or {})).inc(value) | |
# elif metric_name == "videos_failed_total": | |
# VIDEOS_FAILED.labels(**(labels or {})).inc(value) | |
# elif metric_name == "transcriptions_generated_total": | |
# TRANSCRIPTIONS_GENERATED.labels(**(labels or {})).inc(value) | |
# elif metric_name == "summaries_generated_total": | |
# SUMMARIES_GENERATED.labels(**(labels or {})).inc(value) | |
# | |
# def log_histogram(metric_name, value, labels=None): | |
# if metric_name == "video_processing_time_seconds": | |
# VIDEO_PROCESSING_TIME.labels(**(labels or {})).observe(value) | |
# elif metric_name == "total_processing_time_seconds": | |
# TOTAL_PROCESSING_TIME.labels(**(labels or {})).observe(value) | |
# # main.py or equivalent entry point | |
# from metrics_logger import init_metrics_server | |
# | |
# | |
# def main(): | |
# # Start Prometheus metrics server on port 8000 | |
# init_metrics_server(port=8000) | |
# | |
# # Initialize and launch your Gradio app | |
# create_video_transcription_tab() | |
# | |
# | |
# if __name__ == "__main__": | |
# main() | |
# prometheus.yml | |
# scrape_configs: | |
# - job_name: 'video_transcription_app' | |
# static_configs: | |
# - targets: ['localhost:8000'] # Replace with your application's host and port | |