update time metrics

This commit is contained in:
msramalho
2024-03-12 11:28:49 +00:00
parent 10b0ffa6ee
commit f9ea4c5368
2 changed files with 7 additions and 6 deletions

View File

@@ -71,8 +71,8 @@ def count_archives(db:Session):
def count_archive_urls(db:Session): def count_archive_urls(db:Session):
return db.query(func.count(models.ArchiveUrl.url)).scalar() return db.query(func.count(models.ArchiveUrl.url)).scalar()
def count_by_user_since(db:Session, time_delta: timedelta = timedelta(seconds=30)): def count_by_user_since(db:Session, seconds_delta: int = 15):
time_threshold = datetime.now() - time_delta time_threshold = datetime.now() - timedelta(seconds=seconds_delta)
return db.query(models.Archive.author_id,func.count().label('total'))\ return db.query(models.Archive.author_id,func.count().label('total'))\
.filter(models.Archive.created_at >= time_threshold)\ .filter(models.Archive.created_at >= time_threshold)\
.group_by(models.Archive.author_id)\ .group_by(models.Archive.author_id)\

View File

@@ -49,7 +49,7 @@ async def lifespan(app: FastAPI):
logging.getLogger("uvicorn.access").disabled = True logging.getLogger("uvicorn.access").disabled = True
asyncio.create_task(redis_subscribe_worker_exceptions()) asyncio.create_task(redis_subscribe_worker_exceptions())
asyncio.create_task(refresh_user_groups()) asyncio.create_task(refresh_user_groups())
asyncio.create_task(measure_disk_utilization()) asyncio.create_task(measure_regular_metrics())
yield # separates startup from shutdown instructions yield # separates startup from shutdown instructions
@@ -236,8 +236,9 @@ DATABASE_METRICS = Gauge(
labelnames=("query", "user") labelnames=("query", "user")
) )
@repeat_every(seconds=15) REPEAT_COUNT_METRICS_SECONDS = 15
async def measure_disk_utilization(): @repeat_every(seconds=REPEAT_COUNT_METRICS_SECONDS)
async def measure_regular_metrics():
_total, used, free = shutil.disk_usage("/") _total, used, free = shutil.disk_usage("/")
DISK_UTILIZATION.labels(type="used").set(used / (2**30)) DISK_UTILIZATION.labels(type="used").set(used / (2**30))
DISK_UTILIZATION.labels(type="free").set(free / (2**30)) DISK_UTILIZATION.labels(type="free").set(free / (2**30))
@@ -252,5 +253,5 @@ async def measure_disk_utilization():
DATABASE_METRICS.labels(query="count_archives", user="-").set(count_archives) DATABASE_METRICS.labels(query="count_archives", user="-").set(count_archives)
DATABASE_METRICS.labels(query="count_archive_urls", user="-").set(count_archive_urls) DATABASE_METRICS.labels(query="count_archive_urls", user="-").set(count_archive_urls)
for user in crud.count_by_user_since(session): for user in crud.count_by_user_since(session, REPEAT_COUNT_METRICS_SECONDS):
DATABASE_METRICS.labels(query="count_by_user", user=user.author_id).set(user.total) DATABASE_METRICS.labels(query="count_by_user", user=user.author_id).set(user.total)