use metrics::{counter, histogram};
use std::time::Instant;
pub fn record_process_started() {
counter!("bpm_engine_processes_started_total").increment(1);
}
pub fn record_process_completed() {
counter!("bpm_engine_processes_completed_total").increment(1);
}
pub fn record_token_arrived(node_type: &str) {
counter!("bpm_engine_tokens_arrived_total", "node_type" => node_type.to_string()).increment(1);
}
pub fn record_token_completed() {
counter!("bpm_engine_tokens_completed_total").increment(1);
}
pub fn record_token_failed() {
counter!("bpm_engine_tokens_failed_total").increment(1);
}
pub fn record_timer_fired() {
counter!("bpm_engine_timers_fired_total").increment(1);
}
pub fn record_external_task_created(task_type: &str) {
counter!("bpm_engine_external_tasks_created_total", "task_type" => task_type.to_string())
.increment(1);
}
pub fn record_external_task_completed(task_type: &str) {
counter!("bpm_engine_external_tasks_completed_total", "task_type" => task_type.to_string())
.increment(1);
}
pub fn record_external_task_failed(task_type: &str) {
counter!("bpm_engine_external_tasks_failed_total", "task_type" => task_type.to_string())
.increment(1);
}
pub fn record_event_pump_duration(start: Instant) {
let duration = start.elapsed().as_secs_f64();
histogram!("bpm_engine_event_pump_duration_seconds").record(duration);
}
pub fn install_prometheus_exporter() -> metrics_exporter_prometheus::PrometheusHandle {
let builder = metrics_exporter_prometheus::PrometheusBuilder::new();
builder
.install_recorder()
.expect("failed to install Prometheus recorder")
}