Design metrics for insights

Design metrics that provide actionable insights while maintaining system efficiency. Follow these key principles: 1. Track success and failure counts instead of just total counts to enable error rate calculations

copy reviewer prompt

Prompt

Reviewer Prompt

Design metrics that provide actionable insights while maintaining system efficiency. Follow these key principles:

  1. Track success and failure counts instead of just total counts to enable error rate calculations
  2. Consider cardinality impact when adding dimension labels
  3. Ensure exactly-once metric increments
  4. Initialize metrics with meaningful default values

Example:

// Good: Track success/failure separately
pub static OPERATION_SUCCESS: Counter = register_counter!(
    "operation_success_total",
    "Number of successful operations"
);
pub static OPERATION_FAILURES: Counter = register_counter!(
    "operation_failure_total",
    "Number of failed operations"
);

// Bad: High cardinality with too many labels
pub static REQUESTS: CounterVec = register_counter_vec!(
    "requests_total",
    "Request count",
    &["endpoint", "user_id", "session_id"] // Too many dimensions
);

// Good: Focused dimensions
pub static REQUESTS: CounterVec = register_counter_vec!(
    "requests_total",
    "Request count",
    &["endpoint", "status"] // Key dimensions only
);

Source discussions