Implement metrics collection that is both comprehensive and minimally impactful on system performance. Design your metrics system to avoid creating bottlenecks in critical paths.
Key principles:
// Avoid this:
tokio::spawn(async move {
// Update metrics
});
// Prefer this:
store.add_write_metrics(num_lines, payload_size);
// Consider higher capacity for high-volume metrics
let (sender, receiver) = mpsc::channel(10_000);
// Example counters for both successful and failed operations
const WRITE_LINES_TOTAL_NAME: &str = "influxdb_write_lines_total";
const WRITE_LINES_REJECTED_TOTAL_NAME: &str = "influxdb_write_lines_rejected_total";
Remember that metrics collection should provide valuable insights without becoming a performance bottleneck itself.
Enter the URL of a public GitHub repository