collab: Report active user counts separately, as well (#16629)
This PR adds additional reporting of the active user counts as separate logs. We were already reporting these on individual rate limit events/logs, but it seems like something that would be good to report on independent of user activity. Release Notes: - N/A
This commit is contained in:
parent
feab1261c8
commit
1d986b0c77
1 changed files with 30 additions and 13 deletions
|
@ -30,6 +30,7 @@ use std::{
|
||||||
sync::Arc,
|
sync::Arc,
|
||||||
task::{Context, Poll},
|
task::{Context, Poll},
|
||||||
};
|
};
|
||||||
|
use strum::IntoEnumIterator;
|
||||||
use telemetry::{report_llm_rate_limit, report_llm_usage, LlmRateLimitEventRow, LlmUsageEventRow};
|
use telemetry::{report_llm_rate_limit, report_llm_usage, LlmRateLimitEventRow, LlmUsageEventRow};
|
||||||
use tokio::sync::RwLock;
|
use tokio::sync::RwLock;
|
||||||
use util::ResultExt;
|
use util::ResultExt;
|
||||||
|
@ -631,23 +632,39 @@ pub fn log_usage_periodically(state: Arc<LlmState>) {
|
||||||
.sleep(std::time::Duration::from_secs(30))
|
.sleep(std::time::Duration::from_secs(30))
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
let Some(usages) = state
|
for provider in LanguageModelProvider::iter() {
|
||||||
|
for model in state.db.model_names_for_provider(provider) {
|
||||||
|
if let Some(active_user_count) = state
|
||||||
|
.get_active_user_count(provider, &model)
|
||||||
|
.await
|
||||||
|
.log_err()
|
||||||
|
{
|
||||||
|
tracing::info!(
|
||||||
|
target: "active user counts",
|
||||||
|
provider = provider.to_string(),
|
||||||
|
model = model,
|
||||||
|
users_in_recent_minutes = active_user_count.users_in_recent_minutes,
|
||||||
|
users_in_recent_days = active_user_count.users_in_recent_days,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(usages) = state
|
||||||
.db
|
.db
|
||||||
.get_application_wide_usages_by_model(Utc::now())
|
.get_application_wide_usages_by_model(Utc::now())
|
||||||
.await
|
.await
|
||||||
.log_err()
|
.log_err()
|
||||||
else {
|
{
|
||||||
continue;
|
for usage in usages {
|
||||||
};
|
tracing::info!(
|
||||||
|
target: "computed usage",
|
||||||
for usage in usages {
|
provider = usage.provider.to_string(),
|
||||||
tracing::info!(
|
model = usage.model,
|
||||||
target: "computed usage",
|
requests_this_minute = usage.requests_this_minute,
|
||||||
provider = usage.provider.to_string(),
|
tokens_this_minute = usage.tokens_this_minute,
|
||||||
model = usage.model,
|
);
|
||||||
requests_this_minute = usage.requests_this_minute,
|
}
|
||||||
tokens_this_minute = usage.tokens_this_minute,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue