aprs.me/docs/infrastructure/observability.md

65 lines
1.5 KiB
Markdown

# Observability
## Metrics
### PromEx (`Aprsme.PromEx`)
Prometheus-compatible metrics exposed at `/metrics` (PromEx plugin).
Custom plugin: `Aprsme.PromEx.Plugins.Aprsme`
<!-- TODO: Document key metrics (packet rates, DB query times, broadcast latency) -->
### Telemetry
`telemetry_metrics` + `telemetry_poller` for application-level metrics:
- `Aprsme.Telemetry.DatabaseMetrics` — DB query performance
- `Aprsme.ApiMetrics` — API usage tracking
## Error Tracking
### ErrorTracker
Self-hosted error tracking dashboard at `/errors` (authenticated).
Configuration: `error_tracker` hex package.
### Error Handling
- `Aprsme.ErrorHandler` — Application error handling
- `Aprsme.ErrorNotifier` — Telemetry-based error notification
## Logging
### Log Sanitization
`Aprsme.LogSanitizer` — Strips PII from log output.
### Log Filtering
`AprsmeWeb.Plugs.LogFilter` — Filters noisy paths (`/health`, `/ready`, `/`) from access logs.
## Monitoring
### Connection Monitor
`Aprsme.ConnectionMonitor` — Monitors APRS-IS connection health.
### Status Page
`/status` (StatusLive.Index) — Real-time system status dashboard:
- APRS-IS connection state
- Uptime
- Health score
- Cluster status (when clustered)
### Analytics
`Aprsme.PlausibleAnalytics` — Plausible analytics integration for page views.
## Signal Handling
- `Aprsme.SignalHandler` — OS signal handling (SIGTERM, SIGINT)
- `Aprsme.ShutdownHandler` — Graceful shutdown coordination
## Deployment Notifications
`Aprsme.DeploymentNotifier` — Notifies external systems of deploy events.