mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-07 01:47:47 +08:00
feat(health): refine health monitor metrics
- add TPS to model and provider health payloads - exclude user-cancelled 499 requests from health statistics - update model/provider health cards with average latency, average TTFB, TPS, and availability
This commit is contained in:
@@ -86,6 +86,24 @@ fn dashboard_utc_to_unix_secs(value: DateTime<Utc>) -> u64 {
|
||||
value.timestamp().max(0) as u64
|
||||
}
|
||||
|
||||
fn push_postgres_usage_excluded_status_codes(
|
||||
builder: &mut QueryBuilder<'_, Postgres>,
|
||||
has_where: &mut bool,
|
||||
status_codes: &[u16],
|
||||
) {
|
||||
if status_codes.is_empty() {
|
||||
return;
|
||||
}
|
||||
builder.push(if *has_where { " AND " } else { " WHERE " });
|
||||
*has_where = true;
|
||||
builder.push("(\"usage\".status_code IS NULL OR \"usage\".status_code NOT IN (");
|
||||
let mut separated = builder.separated(", ");
|
||||
for status_code in status_codes {
|
||||
separated.push_bind(i32::from(*status_code));
|
||||
}
|
||||
separated.push_unseparated("))");
|
||||
}
|
||||
|
||||
fn dashboard_utc_midnight(value: DateTime<Utc>) -> DateTime<Utc> {
|
||||
DateTime::<Utc>::from_naive_utc_and_offset(
|
||||
value
|
||||
@@ -2529,6 +2547,7 @@ ORDER BY request_count DESC, "usage".provider_name ASC
|
||||
}
|
||||
if let Some(user_id) = query.user_id.as_deref() {
|
||||
builder.push(if has_where { " AND " } else { " WHERE " });
|
||||
has_where = true;
|
||||
builder
|
||||
.push("\"usage\".user_id = ")
|
||||
.push_bind(user_id.to_string());
|
||||
@@ -2566,6 +2585,11 @@ ORDER BY request_count DESC, "usage".provider_name ASC
|
||||
separated.push_unseparated(")");
|
||||
}
|
||||
}
|
||||
push_postgres_usage_excluded_status_codes(
|
||||
&mut builder,
|
||||
&mut has_where,
|
||||
&query.exclude_status_codes,
|
||||
);
|
||||
if let Some(is_stream) = query.is_stream {
|
||||
builder.push(if has_where { " AND " } else { " WHERE " });
|
||||
has_where = true;
|
||||
@@ -2625,6 +2649,7 @@ OR (\"usage\".error_message IS NOT NULL AND BTRIM(\"usage\".error_message) <> ''
|
||||
}
|
||||
if let Some(user_id) = query.user_id.as_deref() {
|
||||
builder.push(if has_where { " AND " } else { " WHERE " });
|
||||
has_where = true;
|
||||
builder
|
||||
.push("\"usage\".user_id = ")
|
||||
.push_bind(user_id.to_string());
|
||||
@@ -2662,6 +2687,11 @@ OR (\"usage\".error_message IS NOT NULL AND BTRIM(\"usage\".error_message) <> ''
|
||||
separated.push_unseparated(")");
|
||||
}
|
||||
}
|
||||
push_postgres_usage_excluded_status_codes(
|
||||
&mut builder,
|
||||
&mut has_where,
|
||||
&query.exclude_status_codes,
|
||||
);
|
||||
if let Some(is_stream) = query.is_stream {
|
||||
builder.push(if has_where { " AND " } else { " WHERE " });
|
||||
has_where = true;
|
||||
@@ -2840,6 +2870,11 @@ OR (\"usage\".error_message IS NOT NULL AND BTRIM(\"usage\".error_message) <> ''
|
||||
separated.push_unseparated(")");
|
||||
}
|
||||
}
|
||||
push_postgres_usage_excluded_status_codes(
|
||||
&mut builder,
|
||||
&mut has_where,
|
||||
&query.exclude_status_codes,
|
||||
);
|
||||
if let Some(is_stream) = query.is_stream {
|
||||
builder.push(if has_where { " AND " } else { " WHERE " });
|
||||
has_where = true;
|
||||
@@ -2926,6 +2961,11 @@ OR (\"usage\".error_message IS NOT NULL AND BTRIM(\"usage\".error_message) <> ''
|
||||
separated.push_unseparated(")");
|
||||
}
|
||||
}
|
||||
push_postgres_usage_excluded_status_codes(
|
||||
&mut builder,
|
||||
&mut has_where,
|
||||
&query.exclude_status_codes,
|
||||
);
|
||||
if let Some(is_stream) = query.is_stream {
|
||||
builder.push(if has_where { " AND " } else { " WHERE " });
|
||||
has_where = true;
|
||||
@@ -4801,6 +4841,11 @@ WITH filtered_usage AS (
|
||||
.push("\"usage\".provider_name = ")
|
||||
.push_bind(provider_name.to_string());
|
||||
}
|
||||
push_postgres_usage_excluded_status_codes(
|
||||
&mut builder,
|
||||
&mut has_where,
|
||||
&query.exclude_status_codes,
|
||||
);
|
||||
builder.push(filtered_extra_where);
|
||||
builder.push(
|
||||
r#"
|
||||
@@ -4893,6 +4938,9 @@ ORDER BY request_count DESC, group_key ASC
|
||||
&self,
|
||||
query: &UsageBreakdownSummaryQuery,
|
||||
) -> Result<Vec<StoredUsageBreakdownSummaryRow>, DataLayerError> {
|
||||
if !query.exclude_status_codes.is_empty() {
|
||||
return self.summarize_usage_breakdown_raw(query).await;
|
||||
}
|
||||
if query.provider_name.is_some() {
|
||||
return self.summarize_usage_breakdown_raw(query).await;
|
||||
}
|
||||
@@ -4918,6 +4966,7 @@ ORDER BY request_count DESC, group_key ASC
|
||||
created_until_unix_secs: dashboard_utc_to_unix_secs(raw_end),
|
||||
user_id: Some(user_id.to_string()),
|
||||
provider_name: None,
|
||||
exclude_status_codes: query.exclude_status_codes.clone(),
|
||||
group_by: query.group_by,
|
||||
})
|
||||
.await?;
|
||||
@@ -4941,6 +4990,7 @@ ORDER BY request_count DESC, group_key ASC
|
||||
created_until_unix_secs: dashboard_utc_to_unix_secs(raw_end),
|
||||
user_id: Some(user_id.to_string()),
|
||||
provider_name: None,
|
||||
exclude_status_codes: query.exclude_status_codes.clone(),
|
||||
group_by: query.group_by,
|
||||
})
|
||||
.await?;
|
||||
|
||||
Reference in New Issue
Block a user