pub const METRIC_PREFIX: &str = "running_process_broker_v1_";
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum MetricKind {
Counter,
Gauge,
Histogram,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct MetricDescriptor {
pub name: &'static str,
pub kind: MetricKind,
pub labels: &'static [&'static str],
}
const SERVICE_VERSION_OUTCOME: &[&str] = &["service", "version", "outcome"];
const SERVICE_VERSION: &[&str] = &["service", "version"];
const SERVICE: &[&str] = &["service"];
const NO_LABELS: &[&str] = &[];
pub const HELLO_TOTAL: MetricDescriptor = MetricDescriptor {
name: "running_process_broker_v1_hello_total",
kind: MetricKind::Counter,
labels: SERVICE_VERSION_OUTCOME,
};
pub const HELLO_DURATION_SECONDS: MetricDescriptor = MetricDescriptor {
name: "running_process_broker_v1_hello_duration_seconds",
kind: MetricKind::Histogram,
labels: SERVICE,
};
pub const ACTIVE_BACKENDS: MetricDescriptor = MetricDescriptor {
name: "running_process_broker_v1_active_backends",
kind: MetricKind::Gauge,
labels: SERVICE,
};
pub const SPAWN_ATTEMPTS_TOTAL: MetricDescriptor = MetricDescriptor {
name: "running_process_broker_v1_spawn_attempts_total",
kind: MetricKind::Counter,
labels: SERVICE_VERSION_OUTCOME,
};
pub const SPAWN_BUDGET_REMAINING: MetricDescriptor = MetricDescriptor {
name: "running_process_broker_v1_spawn_budget_remaining",
kind: MetricKind::Gauge,
labels: SERVICE_VERSION,
};
pub const CONNECTIONS_OPEN: MetricDescriptor = MetricDescriptor {
name: "running_process_broker_v1_connections_open",
kind: MetricKind::Gauge,
labels: NO_LABELS,
};
pub const FD_USAGE_RATIO: MetricDescriptor = MetricDescriptor {
name: "running_process_broker_v1_fd_usage_ratio",
kind: MetricKind::Gauge,
labels: NO_LABELS,
};
pub const UPTIME_SECONDS: MetricDescriptor = MetricDescriptor {
name: "running_process_broker_v1_uptime_seconds",
kind: MetricKind::Gauge,
labels: NO_LABELS,
};
pub const BROKER_METRICS: &[MetricDescriptor] = &[
HELLO_TOTAL,
HELLO_DURATION_SECONDS,
ACTIVE_BACKENDS,
SPAWN_ATTEMPTS_TOTAL,
SPAWN_BUDGET_REMAINING,
CONNECTIONS_OPEN,
FD_USAGE_RATIO,
UPTIME_SECONDS,
];