# 📊 Prometheus Metrics Pulse exposes metrics at `/metrics` (default port `9091`). ## 🌐 HTTP Ingress | Metric | Type | Description | | :--- | :--- | :--- | | `pulse_http_request_duration_seconds` | Histogram | Latency buckets by `method`, `route`, `status`. | | `pulse_http_requests_total` | Counter | Total requests. | | `pulse_http_request_errors_total` | Counter | 4xx/5xx errors. | ## 🔄 Polling & Nodes | Metric | Type | Description | | :--- | :--- | :--- | | `pulse_monitor_node_poll_duration_seconds` | Histogram | Per-node poll latency. | | `pulse_monitor_node_poll_total` | Counter | Success/error counts per node. | | `pulse_monitor_node_poll_staleness_seconds` | Gauge | Seconds since last success. | | `pulse_monitor_poll_queue_depth` | Gauge | Global queue depth. | ## 🧠 Scheduler Health | Metric | Type | Description | | :--- | :--- | :--- | | `pulse_scheduler_queue_depth` | Gauge | Queue depth per instance type. | | `pulse_scheduler_dead_letter_depth` | Gauge | DLQ depth per instance. | | `pulse_scheduler_breaker_state` | Gauge | `0`=Closed, `1`=Half-Open, `2`=Open. | ## ⚡ Diagnostics Cache | Metric | Type | Description | | :--- | :--- | :--- | | `pulse_diagnostics_cache_hits_total` | Counter | Cache hits. | | `pulse_diagnostics_refresh_duration_seconds` | Histogram | Refresh latency. | ## 🚨 Alerting Examples * **High Error Rate**: `rate(pulse_http_request_errors_total[5m]) > 0.05` * **Stale Node**: `pulse_monitor_node_poll_staleness_seconds > 300` * **Breaker Open**: `pulse_scheduler_breaker_state == 2`