Keep GIS healthy.
Keep your team in control.
Honua brings day-two GIS work into the platform routines your team already uses. Check health and readiness, follow requests through OpenTelemetry, review configuration in Git, and release through your existing deployment controls. Operators get a clear view of the system without giving up the approval boundaries that protect production.
See the signal.
Find the affected request.
Routine checks should fit the same dashboards, alerts, and on-call habits as the rest of your services.
What telemetry actually ships.
Mined directly from the public honua-server source so you can wire probes, scrapes, and dashboards before the first deploy: the endpoint paths, the metric names, the structured-log shape, and the span vocabulary.
Endpoints
| Path | What it serves | Access |
|---|---|---|
GET /healthz/live | Liveness probe — returns 200 Healthy while the process runs. | Unauthenticated (probe-safe) |
GET /healthz/ready | Readiness probe — runs the readiness check service (backing stores and dependencies) before an instance takes traffic. | Unauthenticated (probe-safe) |
GET /healthz/metrics | JSON performance snapshot: readiness detail, database performance metrics, cache refresh state. | Admin authorization |
GET /metrics | Prometheus text exposition of the OpenTelemetry meters. Path is configurable via Observability:Prometheus:Path. | Admin authorization |
| OTLP push | Traces, metrics, and logs export over OTLP when OTEL_EXPORTER_OTLP_ENDPOINT (or the tracing options) is set. | Operator-configured |
Key metrics
117 metric instruments are registered in the source at the mined commit. The rows below are the ones an operator dashboards first; each registers on the exported Honua meter, so they appear in both the Prometheus scrape and the OTLP stream.
| Metric | Instrument | What it tells you |
|---|---|---|
honua_serving_request_duration_ms | histogram | Serving-plane latency tagged protocol / operation / status_class — p95 by GeoServices, OGC, WFS, or OData family instead of by route. |
honua_request_error_total | counter | Protocol error envelopes across every surface; the in_band tag marks errors delivered inside 2xx bodies that load-balancer 5xx metrics never see. |
honua_geoservices_error_total | counter | GeoServices/ArcGIS REST {"error": …} envelopes by service_type / operation / error_code. |
honua_http_request_duration_ms | histogram | HTTP request latency (with honua_http_request_total and honua_http_active_requests). |
honua_database_query_duration_ms | histogram | Database query latency (family includes honua_db_pool_utilization_ratio and connection acquisition/timeout counters). |
honua_cache_hits_total / honua_cache_misses_total | counters | Cache effectiveness, with honua_cache_hit_ratio and eviction counts alongside. |
honua_coordinate_transform_total | counter | Reprojection volume (with honua_coordinate_transform_duration_ms for cost). |
honua.tile.jobs.queue_depth | up-down counter | Tile export job backlog (family: honua.tile.jobs.duration_ms, tiles processed, archive sizes). |
honua.streaming.slow_consumer_drops_total | counter | Feature-stream events dropped on slow consumers (family: sessions opened/closed/rejected, replay deliveries). |
honua.alerts.deliveries_failed_total | counter | Alert deliveries that failed (family: succeeded, suppressed, dead-lettered, plus honua.alerts.delivery_latency). |
honua.outbox.dispatched_total | counter | Event-outbox dispatches (family: failed, dead-lettered, recovered claims). |
honua.spec.apply_duration_ms | histogram | Declarative spec apply duration (family: applies started/completed, nodes processed). |
Structured logs
Production logs are Serilog compact JSON (CLEF) on stdout, enriched with OpenTelemetry trace and span IDs. Every request logs one completion event; the field shape below is from source, the values are illustrative. Query strings are deliberately never logged, so credentials or tokens in URLs cannot reach log sinks, and health-probe requests log at Verbose.
Spans
Tracing registers the Honua ActivitySource plus named subsystem sources (routing, geocoding, import jobs, provider feature stores). Span names are lowercase dot-paths of component.operation — honua.feature.query, honua.db.query, honua.tile.generate, routing.solveRoute, zarr.raster-slice.read — carrying attributes such as honua.protocol, honua.service.id, honua.layer.id, and honua.operation.
// Extracted from public source at commit 1585115 (honua-server trunk, 2026-08-09) — not a versioned release contract; names can move between releases. Primary sources: src/Honua.ServiceDefaults/HonuaTelemetry.cs, src/Honua.ServiceDefaults/Extensions.cs, src/Honua.Server/Features/HealthCheck/HealthEndpoints.cs, src/Honua.Server/Program.cs.
Move quickly without hiding the decision.
Configuration, upgrades, and recovery work stay explicit. Your team can inspect the intended state, decide who approves it, and choose when it reaches production.