Prometheus Metrics
This page catalogs the OxiDNS Prometheus endpoint and metrics. Scrape only enabled subsystems; an absent optional metric does not necessarily indicate a failure.
Prometheus Metrics
GET /api/metrics
This endpoint is registered when the API is enabled. It is the single Prometheus text endpoint; plugins do not expose separate stats/metrics HTTP endpoints.
Current exported metrics include:
query_totalquery_error_totalquery_inflightquery_latency_countquery_latency_sum_mscache_lookup_totalcache_hit_totalcache_miss_totalcache_expired_totalcache_insert_totalcache_skip_totalcache_lazy_refresh_totalcache_entry_countforward_query_totalforward_success_totalforward_error_totalforward_timeout_totalforward_latency_countforward_latency_sum_msforward_incomplete_alias_selected_totalforward_upstream_query_totalforward_upstream_success_totalforward_upstream_error_totalforward_upstream_timeout_totalforward_upstream_latency_countforward_upstream_latency_sum_msfallback_primary_totalfallback_primary_error_totalfallback_secondary_totalblackhole_block_totalhosts_hit_totalhosts_miss_totalratelimit_allowed_totalratelimit_rejected_totalip_selector_probe_totalip_selector_probe_latency_countip_selector_probe_latency_sum_msip_selector_selected_totalip_selector_dropped_probe_totalip_selector_cache_entriesnetwork_resolver_cache_hit_totalnetwork_resolver_cache_miss_totalnetwork_resolver_error_totalnetwork_resolver_refresh_totalnetwork_resolver_refresh_latency_ms_totalnetwork_upstream_pool_refresh_totalnetwork_upstream_pool_refresh_latency_ms_totalserver_request_totalserver_completed_totalserver_controlled_totalserver_failed_totalserver_inflightserver_latency_countserver_latency_sum_msipset_entries_totalipset_dropped_totalipset_write_totalipset_write_error_totalnftset_entries_totalnftset_dropped_totalnftset_write_totalnftset_write_error_totalros_address_list_observe_totalros_address_list_dropped_totalros_address_list_sync_error_totalros_address_list_sync_timeout_totalros_address_list_pending_observations/ros_address_list_managed_entriesros_address_list_write_success_total/ros_address_list_write_error_totalros_address_list_last_write_success_timestamp_secondsros_address_list_coalesced_totalros_address_list_reconnect_total/ros_address_list_connect_attempt_total/ros_address_list_backoff_totalros_address_list_reconcile_error_total/ros_address_list_last_reconcile_success_timestamp_secondsros_address_list_degraded/ros_address_list_cleanup_error_totalros_route_observe_total/ros_route_dropped_totalros_route_sync_error_total/ros_route_sync_timeout_totalros_route_write_success_total/ros_route_write_error_totalros_route_pending_observations/ros_route_managed_entriesros_route_coalesced_total/ros_route_delete_deferred_totalros_route_reconnect_total/ros_route_connect_attempt_total/ros_route_backoff_totalros_route_connection_check_error_total/ros_route_reconcile_error_totalros_route_last_write_success_timestamp_seconds/ros_route_last_reconcile_success_timestamp_secondsros_route_degraded/ros_route_cleanup_error_totalreverse_lookup_ptr_hit_totalreverse_lookup_ptr_miss_totalreverse_lookup_cache_insert_totalreverse_lookup_cache_entriesdownload_success_totaldownload_failure_totaldownload_timeout_totalhttp_request_dispatch_totalhttp_request_error_totalhttp_request_dropped_totalscript_run_totalscript_success_totalscript_error_totalscript_timeout_totalreload_trigger_totalreload_error_totalreload_provider_reload_totalreload_provider_reload_error_totalcron_job_run_totalcron_job_skipped_totalcron_executor_error_total
These metrics use low-cardinality plugin-level labels such as plugin_tag, name, kind, reason, result, and protocol. server_* additionally carries a protocol label (udp/tcp/dot/quic/doh). forward_upstream_* carries an upstream label whose value is the upstream tag (or its resolved address when no tag is configured); since the upstream set is fixed at startup and bounded, this stays a low-cardinality dimension. High-cardinality values such as qname or client IP are intentionally excluded from the generic metrics layer; use query_recorder when per-query detail is needed.