26 lines
762 B
Python
26 lines
762 B
Python
"""Prometheus scraping server"""
|
|
import logging
|
|
|
|
import prometheus_client
|
|
import uvicorn
|
|
|
|
from jarvis_tasks import const
|
|
from jarvis_tasks.prometheus.stats import tasks_info
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class StatTracker:
|
|
def __init__(self, host: str = "0.0.0.0", port: int = 8878, interval: int = 5) -> None:
|
|
self.host = host
|
|
self.port = port
|
|
self.interval = interval
|
|
|
|
app = prometheus_client.make_asgi_app()
|
|
config = uvicorn.Config(app=app, host=self.host, port=self.port, access_log=False)
|
|
self.server = uvicorn.Server(config)
|
|
|
|
async def start(self) -> None:
|
|
"""Start the Prometheus server."""
|
|
tasks_info.info({"version": const.__version__})
|
|
await self.server.serve()
|