fix(metrics): 初始化时注册基线 counter 避免启动后渲染为空
- install_recorder 后立即以 absolute(0) 注册 MESSAGE_PROCESSING_ERRORS / AGENT_ITERATIONS / LLM_TOKENS_USED / TOOL_EXECUTION_TOTAL,确保首次 Prometheus 抓取即可见指标 - 新增测试验证初始化后 render 输出包含基线 counter
This commit is contained in:
parent
1cde659bb6
commit
5bc3f64ba2
@ -49,6 +49,7 @@ pub fn init_recorder() -> Option<PrometheusHandle> {
|
|||||||
let builder = PrometheusBuilder::new();
|
let builder = PrometheusBuilder::new();
|
||||||
match builder.install_recorder() {
|
match builder.install_recorder() {
|
||||||
Ok(handle) => {
|
Ok(handle) => {
|
||||||
|
register_baseline_counters();
|
||||||
tracing::info!("Prometheus metrics recorder installed");
|
tracing::info!("Prometheus metrics recorder installed");
|
||||||
Some(handle)
|
Some(handle)
|
||||||
}
|
}
|
||||||
@ -61,6 +62,13 @@ pub fn init_recorder() -> Option<PrometheusHandle> {
|
|||||||
.clone()
|
.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn register_baseline_counters() {
|
||||||
|
metrics::counter!(MESSAGE_PROCESSING_ERRORS).absolute(0);
|
||||||
|
metrics::counter!(AGENT_ITERATIONS).absolute(0);
|
||||||
|
metrics::counter!(LLM_TOKENS_USED).absolute(0);
|
||||||
|
metrics::counter!(TOOL_EXECUTION_TOTAL).absolute(0);
|
||||||
|
}
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// MetricsObserver — 桥接 ObserverEvent 到 metrics 宏
|
// MetricsObserver — 桥接 ObserverEvent 到 metrics 宏
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
@ -156,3 +164,20 @@ pub fn default_observer() -> Arc<dyn Observer> {
|
|||||||
pub fn record_message_processing_error() {
|
pub fn record_message_processing_error() {
|
||||||
metrics::counter!(MESSAGE_PROCESSING_ERRORS).increment(1);
|
metrics::counter!(MESSAGE_PROCESSING_ERRORS).increment(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn metrics_render_is_not_blank_right_after_init() {
|
||||||
|
let Some(handle) = init_recorder() else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
let rendered = handle.render();
|
||||||
|
assert!(
|
||||||
|
rendered.contains(MESSAGE_PROCESSING_ERRORS),
|
||||||
|
"expected baseline counters in render output, got: {rendered:?}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user