Skip to content

Signal coverage

Every metric and log event tailscale2otel emits is accounted for here. The table says what each signal is for — whether the shipped dashboard charts it, an alert rule watches it, a recording rule folds it, or it is deliberately query-only.

This page is generated from internal/catalog/signal_dispositions.json, a manifest that is itself gated in CI against three things: the in-code telemetry catalog (so a new signal cannot land undecided), the generated dashboard, and the two alert-rule files (so a visualized or alertable claim has to be true, in both directions). Nothing here comes from a text search over prose.

Regenerate with:

go test ./internal/catalog -run TestSignalDispositionsInSync -update
go test ./internal/catalog -run TestSignalCoverageDocInSync -update

Dispositions

disposition meaning
visualized queried by at least one panel on either generated dashboard
alertable queried by at least one alert rule expression
recorded consumed by at least one recording rule expression
drives_a_variable queried by a dashboard template variable — a presence sentinel, or a filter dropdown

A signal can carry several at once (most alerted metrics are also charted). All four are derived — read off the shipped artifacts by the regenerator — so there is nothing here for anyone to assign by hand, and no value that can be written to settle a signal that is not actually on a surface.

drives_a_variable is deliberately not visualized (#527). A presence sentinel's label_values() call references a metric every bit as really as a panel query does, and puts nothing on screen — so while both fed one value, a signal could satisfy the every-signal-reaches-a-panel bar while being invisible. tailscale.subnet_routes.advertised sat in exactly that state, covered only by the sentinel gating a row, and it stayed invisible until #526 deleted that row. tailscale.key.expiring was worse: it counted as covered because its name appears as an option value in a dropdown, which is not a query at all. Both have panels now.

Every emitted signal must appear on a panel, and #526 removed the last three ways round that. raw_only and omitted were deleted first: "deliberately query-only" is indistinguishable, from the outside, from "nobody got round to it", and 35 signals had accrued under the two of them. pending_panel replaced them as an explicitly transitional, shrink-only ledger — a signal could only ever leave it by gaining a panel — and was itself deleted the moment it emptied, which is the only reason it was safe to introduce.

The only exemptions now are three structural classes, each an individually justified entry in catalog.StructuralExemptions() and none of them a judgement about whether a signal is worth charting:

class why it cannot be required
histogram_base the base name of a histogram is never queried directly — panels query _bucket/_sum/_count
templated_event the event name is built at emit time (tailscale.webhook.<type>), so no literal selector can equal it
recorded_only consumed only by a recording rule whose output metric is itself panelled

Operational and self-observability coverage are reported separately. They answer different questions ("can I see my tailnet?" versus "can I see the exporter?"), and a well-covered fleet story would otherwise hide a blind exporter.

The units, descriptions and attribute keys for every signal below are in metrics.md; this page only covers what each one is used for.

Summary

A signal can carry more than one disposition, so the columns do not sum to the total.

surface signals visualized alertable recorded drives a variable
operational 218 217 57 11 44
self_obs 92 92 29 9 10

Operational signals

signal kind queried as disposition note
tailscale.acl.risky_rule log_event event_name="tailscale.acl.risky_rule" visualized #526 wave ⅔: panel scheduled on tailnet/Security & Audit > Risk & ACL.
tailscale.acl.validation_issue log_event event_name="tailscale.acl.validation_issue" visualized
tailscale.config.audit log_event event_name="tailscale.config.audit" visualized, alertable, drives_a_variable
tailscale.device.attribute.expiring log_event event_name="tailscale.device.attribute.expiring" visualized #526 wave ⅔: panel scheduled on tailnet/Security & Audit > Posture & Compliance.
tailscale.device.key_expiring log_event event_name="tailscale.device.key_expiring" visualized #526 wave ⅔: panel scheduled on tailnet/Security & Audit > Identity & Keys.
tailscale.device.posture log_event event_name="tailscale.device.posture" visualized, drives_a_variable
tailscale.device.tailnet_lock_error log_event event_name="tailscale.device.tailnet_lock_error" visualized
tailscale.device_invite log_event event_name="tailscale.device_invite" visualized #526 wave ⅔: panel scheduled on tailnet/Devices > Inventory & Hygiene.
tailscale.k8s.api_request log_event event_name="tailscale.k8s.api_request" visualized The per-request record carrying the high-cardinality detail kept off the metrics (object name, query-free path, selectors, pod/container, and the raw exec command line under pii_filter.command_text). Read in Loki by event_name; this is the SIEM surface for the feed.
tailscale.k8s.session log_event event_name="tailscale.k8s.session" visualized Per-session record from the .cast header: namespace, pod, container, session type, command and the recorder that holds the recording. Read in Loki by event_name.
tailscale.key.expiring log_event event_name="tailscale.key.expiring" visualized, drives_a_variable
tailscale.key.scopes log_event event_name="tailscale.key.scopes" visualized
tailscale.logstream.error log_event event_name="tailscale.logstream.error" visualized
tailscale.network.flow log_event event_name="tailscale.network.flow" visualized, drives_a_variable
tailscale.oauth_app.info log_event event_name="tailscale.oauth_app.info" visualized
tailscale.webhook.<type> log_event event_name="tailscale.webhook.<type>" UNASSIGNED The event name is templated per webhook category, so no literal selector can name it. The dashboard's log-event picker does reach it, with the glob tailscale.webhook.*, which a literal-name gate cannot see.
tailscale.webhook_endpoints.event_mismatch log_event event_name="tailscale.webhook_endpoints.event_mismatch" visualized
tailscale.acl.autoapprovers metric tailscale_acl_autoapprovers_ratio visualized, alertable
tailscale.acl.last_changed metric tailscale_acl_last_changed_seconds visualized
tailscale.acl.posture_gated_rules metric tailscale_acl_posture_gated_rules_ratio visualized
tailscale.acl.rules metric tailscale_acl_rules_ratio visualized
tailscale.acl.size metric tailscale_acl_size_bytes visualized
tailscale.acl.ssh_wildcard metric tailscale_acl_ssh_wildcard_ratio visualized
tailscale.acl.unrestricted_rules metric tailscale_acl_unrestricted_rules_ratio visualized, alertable, drives_a_variable
tailscale.acl.validation.errors metric tailscale_acl_validation_errors_ratio visualized
tailscale.acl.validation.ok metric tailscale_acl_validation_ok_ratio visualized
tailscale.acl.validation.test_failures metric tailscale_acl_validation_test_failures_ratio visualized
tailscale.acl.validation.warnings metric tailscale_acl_validation_warnings_ratio visualized
tailscale.acl.wildcard_rules metric tailscale_acl_wildcard_rules_ratio visualized
tailscale.config.audit.changes metric tailscale_config_audit_changes_total visualized, alertable, drives_a_variable
tailscale.config.audit.deferred.delay metric tailscale_config_audit_deferred_delay_seconds visualized
tailscale.config.audit.events metric tailscale_config_audit_events_total visualized, drives_a_variable
tailscale.config.audit.processing.delay metric tailscale_config_audit_processing_delay_seconds visualized
tailscale.config.audit.schema_drift metric tailscale_config_audit_schema_drift_total visualized, alertable
tailscale.contact.needs_verification metric tailscale_contact_needs_verification_ratio visualized, alertable
tailscale.derp.region.devices metric tailscale_derp_region_devices_ratio visualized, drives_a_variable
tailscale.derp.region.latency_min metric tailscale_derp_region_latency_min_seconds visualized, alertable
tailscale.derp.region.preferred metric tailscale_derp_region_preferred_ratio visualized
tailscale.device.attribute metric tailscale_device_attribute_ratio visualized, drives_a_variable
tailscale.device.attribute.expiry metric tailscale_device_attribute_expiry_seconds visualized, alertable #526 wave ⅔: panel scheduled on tailnet/Security & Audit > Posture & Compliance - ALERTABLE-ONLY today.
tailscale.device.attribute.info metric tailscale_device_attribute_info_ratio visualized
tailscale.device.blocks_incoming_connections metric tailscale_device_blocks_incoming_connections_ratio visualized, drives_a_variable One series per device: deliberately query-only, for ad-hoc drill-down onto a named host rather than a default panel that would carry the whole fleet.
tailscale.device.connectivity.direct_capable metric tailscale_device_connectivity_direct_capable_ratio visualized One series per device, describing that device's NAT/transport situation; deliberately query-only for drill-down onto a host that is stuck on DERP.
tailscale.device.connectivity.endpoints metric tailscale_device_connectivity_endpoints_ratio visualized One series per device, describing that device's NAT/transport situation; deliberately query-only for drill-down onto a host that is stuck on DERP.
tailscale.device.connectivity.hard_nat metric tailscale_device_connectivity_hard_nat_ratio visualized, drives_a_variable
tailscale.device.connectivity.ipv6 metric tailscale_device_connectivity_ipv6_ratio visualized One series per device, describing that device's NAT/transport situation; deliberately query-only for drill-down onto a host that is stuck on DERP.
tailscale.device.connectivity.udp metric tailscale_device_connectivity_udp_ratio visualized One series per device, describing that device's NAT/transport situation; deliberately query-only for drill-down onto a host that is stuck on DERP.
tailscale.device.derp.latency metric tailscale_device_derp_latency_seconds visualized, drives_a_variable
tailscale.device.distro metric tailscale_device_distro_ratio visualized #526 wave ⅔: panel scheduled on tailnet/Devices > Inventory & Hygiene.
tailscale.device.exit_node metric tailscale_device_exit_node_ratio visualized, drives_a_variable
tailscale.device.key.expiry metric tailscale_device_key_expiry_seconds visualized, alertable, recorded
tailscale.device.key_expiry_disabled metric tailscale_device_key_expiry_disabled_ratio visualized One series per device: deliberately query-only, for ad-hoc drill-down onto a named host rather than a default panel that would carry the whole fleet.
tailscale.device.last_seen metric tailscale_device_last_seen_seconds visualized
tailscale.device.multiple_connections metric tailscale_device_multiple_connections_ratio visualized, alertable One series per device: deliberately query-only, for ad-hoc drill-down onto a named host rather than a default panel that would carry the whole fleet.
tailscale.device.online metric tailscale_device_online_ratio visualized, recorded, drives_a_variable
tailscale.device.posture metric tailscale_device_posture_ratio visualized, alertable, recorded, drives_a_variable
tailscale.device.posture_identity.disabled metric tailscale_device_posture_identity_disabled_ratio visualized One series per device: deliberately query-only, for ad-hoc drill-down onto a named host rather than a default panel that would carry the whole fleet.
tailscale.device.routes.advertised metric tailscale_device_routes_advertised visualized, drives_a_variable
tailscale.device.routes.enabled metric tailscale_device_routes_enabled visualized
tailscale.device.ssh_enabled metric tailscale_device_ssh_enabled_ratio visualized One series per device: deliberately query-only, for ad-hoc drill-down onto a named host rather than a default panel that would carry the whole fleet.
tailscale.device.update_available metric tailscale_device_update_available_ratio visualized, alertable
tailscale.device.version_skew metric tailscale_device_version_skew_ratio visualized, alertable
tailscale.device_invites.count metric tailscale_device_invites_count_ratio visualized, alertable, drives_a_variable
tailscale.device_invites.pending_age metric tailscale_device_invites_pending_age_seconds visualized
tailscale.devices.age metric tailscale_devices_age_seconds visualized
tailscale.devices.by_country metric tailscale_devices_by_country_ratio visualized #526 wave ⅔: panel scheduled on tailnet/Devices > Inventory & Hygiene.
tailscale.devices.by_distro metric tailscale_devices_by_distro_ratio visualized
tailscale.devices.by_tag metric tailscale_devices_by_tag_ratio visualized
tailscale.devices.by_version metric tailscale_devices_by_version_ratio visualized
tailscale.devices.client_supports metric tailscale_devices_client_supports_ratio visualized
tailscale.devices.count metric tailscale_devices_count_ratio visualized, alertable, recorded
tailscale.devices.direct_capable metric tailscale_devices_direct_capable_ratio visualized
tailscale.devices.ephemeral metric tailscale_devices_ephemeral_ratio visualized
tailscale.devices.hard_nat metric tailscale_devices_hard_nat_ratio visualized, alertable, recorded
tailscale.devices.key_expiry metric tailscale_devices_key_expiry_days visualized, drives_a_variable
tailscale.devices.key_expiry_disabled metric tailscale_devices_key_expiry_disabled_ratio visualized, alertable
tailscale.devices.outdated metric tailscale_devices_outdated_ratio visualized, alertable
tailscale.devices.ssh_enabled metric tailscale_devices_ssh_enabled_ratio visualized
tailscale.devices.untagged metric tailscale_devices_untagged_ratio visualized
tailscale.dns.magic_dns metric tailscale_dns_magic_dns_ratio visualized
tailscale.dns.nameservers.count metric tailscale_dns_nameservers_count_ratio visualized
tailscale.dns.override_local metric tailscale_dns_override_local_ratio visualized
tailscale.dns.resolver metric tailscale_dns_resolver_ratio visualized
tailscale.dns.resolvers.use_with_exit_node metric tailscale_dns_resolvers_use_with_exit_node_ratio visualized
tailscale.dns.search_path metric tailscale_dns_search_path_ratio visualized
tailscale.dns.search_paths.count metric tailscale_dns_search_paths_count_ratio visualized
tailscale.dns.split_zones.count metric tailscale_dns_split_zones_count_ratio visualized
tailscale.exit_node.io metric tailscale_exit_node_io_bytes_total visualized, drives_a_variable
tailscale.exit_node.packets metric tailscale_exit_node_packets_total visualized
tailscale.exit_nodes.count metric tailscale_exit_nodes_count_ratio visualized
tailscale.feature.enabled metric tailscale_feature_enabled_ratio visualized, alertable
tailscale.fleet.latest_version metric tailscale_fleet_latest_version_ratio visualized
tailscale.geoip.database.build_time metric tailscale_geoip_database_build_time_seconds visualized, alertable #526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations - ALERTABLE-ONLY today.
tailscale.geoip.downloads metric tailscale_geoip_downloads_total visualized #526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations.
tailscale.geoip.lookups metric tailscale_geoip_lookups_total visualized #526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations.
tailscale.geoip.reloads metric tailscale_geoip_reloads_total visualized #526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations.
tailscale.k8s.api.exec_sessions metric tailscale_k8s_api_exec_sessions_total visualized, drives_a_variable kubectl exec/attach/port-forward attempts, dimensioned by the bounded command_class. Queried ad hoc in Loki alongside tailscale.k8s.api_request until a dashboard exists.
tailscale.k8s.api.mutations metric tailscale_k8s_api_mutations_total visualized, drives_a_variable create/update/patch/delete attempts. Counts what was REQUESTED, not what succeeded, so it cannot back a change-success panel and no rule uses it.
tailscale.k8s.api.rbac_probes metric tailscale_k8s_api_rbac_probes_total visualized, drives_a_variable SelfSubjectRulesReview/SelfSubjectAccessReview volume, the signature of permission enumeration. Charted by resource and namespace. Deliberately not alerted: it is normal for UI clients such as Freelens, so the interesting pattern is a burst from an unexpected user agent, which needs a cluster-specific baseline.
tailscale.k8s.api.requests metric tailscale_k8s_api_requests_total visualized, drives_a_variable Baseline Kubernetes API request volume, broken down by verb, namespace, resource and user agent on the Kubernetes Audit tab. Counts ATTEMPTS: the source carries no response status, so this is request volume, never a success or failure rate.
tailscale.k8s.api.sensitive_reads metric tailscale_k8s_api_sensitive_reads_total visualized, drives_a_variable Reads of secrets, service accounts and RBAC objects, charted by resource, namespace and user agent. A strong alerting candidate, but deliberately NOT wired to a rule: a useful threshold depends on the cluster's own baseline, and an arbitrary one would page on normal operator traffic.
tailscale.k8s.schema_drift metric tailscale_k8s_schema_drift_total visualized, drives_a_variable Guards an explicitly BETA upstream schema with no version field. Charted as a rate plus a range stat whose thresholds treat any drift as red, since a healthy feed reports nothing at all. Watch it after upgrading the operator or the recorder.
tailscale.k8s.session.started metric tailscale_k8s_session_started_total visualized, drives_a_variable Terminal sessions derived from .cast headers. Fires once at session start; session completeness is not observable from the bucket, so there is no duration metric to visualize alongside it.
tailscale.key.allowed_tags metric tailscale_key_allowed_tags_ratio visualized
tailscale.key.expiry metric tailscale_key_expiry_seconds visualized, alertable, drives_a_variable
tailscale.key.preauthorized metric tailscale_key_preauthorized_ratio visualized
tailscale.key.scope_class metric tailscale_key_scope_class_ratio visualized, alertable #526 wave ⅔: panel scheduled on tailnet/Security & Audit > Identity & Keys - ALERTABLE-ONLY today.
tailscale.key.scopes metric tailscale_key_scopes_ratio visualized, drives_a_variable
tailscale.key.tag_scope metric tailscale_key_tag_scope_ratio visualized, alertable #526 wave ⅔: panel scheduled on tailnet/Security & Audit > Identity & Keys - ALERTABLE-ONLY today.
tailscale.keys.age metric tailscale_keys_age_seconds visualized
tailscale.keys.by_owner metric tailscale_keys_by_owner_ratio visualized
tailscale.keys.count metric tailscale_keys_count_ratio visualized
tailscale.logstream.bytes_sent metric tailscale_logstream_bytes_sent_total visualized
tailscale.logstream.configured metric tailscale_logstream_configured_ratio visualized, drives_a_variable
tailscale.logstream.entries_sent metric tailscale_logstream_entries_sent_total visualized
tailscale.logstream.error metric tailscale_logstream_error_ratio visualized
tailscale.logstream.last_activity metric tailscale_logstream_last_activity_seconds visualized, alertable
tailscale.logstream.max_body_requests metric tailscale_logstream_max_body_requests_total visualized, alertable
tailscale.logstream.requests metric tailscale_logstream_requests_total visualized
tailscale.logstream.requests_failed metric tailscale_logstream_requests_failed_total visualized, alertable
tailscale.logstream.spoofed_entries metric tailscale_logstream_spoofed_entries_total visualized, alertable
tailscale.network.data_quality metric tailscale_network_data_quality_total visualized
tailscale.network.dedup.conflicts metric tailscale_network_dedup_conflicts_total visualized
tailscale.network.field.observations metric tailscale_network_field_observations_total visualized
tailscale.network.flow.logs_dropped metric tailscale_network_flow_logs_dropped_total visualized, alertable
tailscale.network.flows metric tailscale_network_flows_total visualized, alertable, drives_a_variable
tailscale.network.io metric tailscale_network_io_bytes_total visualized, recorded, drives_a_variable
tailscale.network.io.rollup metric tailscale_network_io_rollup_bytes_total visualized, recorded, drives_a_variable
tailscale.network.packets metric tailscale_network_packets_total visualized
tailscale.network.packets.rollup metric tailscale_network_packets_rollup_total visualized
tailscale.network.reporter.observations metric tailscale_network_reporter_observations_total visualized, alertable
tailscale.network.store.dropped metric tailscale_network_store_dropped_total visualized
tailscale.network.unique.dst_peers metric tailscale_network_unique_dst_peers visualized, drives_a_variable
tailscale.network.unique.dst_ports metric tailscale_network_unique_dst_ports visualized
tailscale.node.derp.home_region metric tailscale_node_derp_home_region_ratio visualized
tailscale.node.health_messages metric tailscale_node_health_messages_ratio visualized, alertable
tailscale.node.io metric tailscale_node_io_bytes_total visualized, drives_a_variable
tailscale.node.packets metric tailscale_node_packets_total visualized Packet counterpart of the visualized tailscale.node.io / tailscale.node.peer_relay.io byte counters; kept for ad-hoc PromQL rather than doubling every traffic panel.
tailscale.node.packets.dropped metric tailscale_node_packets_dropped_total visualized, alertable
tailscale.node.peer_relay.endpoints metric tailscale_node_peer_relay_endpoints_ratio visualized, alertable
tailscale.node.peer_relay.io metric tailscale_node_peer_relay_io_bytes_total visualized
tailscale.node.peer_relay.packets metric tailscale_node_peer_relay_packets_total visualized Packet counterpart of the visualized tailscale.node.io / tailscale.node.peer_relay.io byte counters; kept for ad-hoc PromQL rather than doubling every traffic panel.
tailscale.node.up metric tailscale_node_up_ratio visualized, alertable, drives_a_variable
tailscale.oauth_app.node_attributes metric tailscale_oauth_app_node_attributes_ratio visualized
tailscale.oauth_app.redirect_uris metric tailscale_oauth_app_redirect_uris_ratio visualized
tailscale.oauth_app.scope_class metric tailscale_oauth_app_scope_class_ratio visualized
tailscale.oauth_app.scopes metric tailscale_oauth_app_scopes_ratio visualized
tailscale.oauth_apps.age metric tailscale_oauth_apps_age_seconds visualized
tailscale.oauth_apps.count metric tailscale_oauth_apps_count_ratio visualized
tailscale.posture_integration.error metric tailscale_posture_integration_error_ratio visualized, alertable #526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations - ALERTABLE-ONLY today.
tailscale.posture_integration.last_sync metric tailscale_posture_integration_last_sync_seconds visualized, alertable
tailscale.posture_integration.matched metric tailscale_posture_integration_matched_ratio visualized, alertable
tailscale.posture_integration.possible_matched metric tailscale_posture_integration_possible_matched_ratio visualized, alertable
tailscale.posture_integration.provider_hosts metric tailscale_posture_integration_provider_hosts_ratio visualized
tailscale.posture_integrations.count metric tailscale_posture_integrations_count_ratio visualized, drives_a_variable
tailscale.rdns.cache.capacity metric tailscale_rdns_cache_capacity_ratio visualized
tailscale.rdns.cache.entries metric tailscale_rdns_cache_entries_ratio visualized, drives_a_variable
tailscale.rdns.cache.evictions metric tailscale_rdns_cache_evictions_total visualized
tailscale.rdns.cache.lookups metric tailscale_rdns_cache_lookups_total visualized
tailscale.rdns.cache.overflows metric tailscale_rdns_cache_overflows_total visualized, alertable
tailscale.rdns.queries metric tailscale_rdns_queries_total visualized
tailscale.rdns.refreshes metric tailscale_rdns_refreshes_total visualized
tailscale.service.hosts metric tailscale_service_hosts_ratio visualized, alertable
tailscale.service.ports metric tailscale_service_ports visualized, drives_a_variable
tailscale.services.count metric tailscale_services_count_ratio visualized, drives_a_variable
tailscale.setting.devices_key_duration metric tailscale_setting_devices_key_duration_days visualized
tailscale.setting.enabled metric tailscale_setting_enabled_ratio visualized, alertable
tailscale.setting.users_external_tailnets_role metric tailscale_setting_users_external_tailnets_role_ratio visualized
tailscale.stream.decode_errors metric tailscale_stream_decode_errors_total visualized
tailscale.stream.inflight metric tailscale_stream_inflight visualized
tailscale.stream.records metric tailscale_stream_records_total visualized, drives_a_variable
tailscale.stream.rejected metric tailscale_stream_rejected_total visualized, alertable, recorded
tailscale.stream.request.duration metric tailscale_stream_request_duration_seconds visualized, alertable, drives_a_variable
tailscale.stream.skipped metric tailscale_stream_skipped_total visualized, alertable
tailscale.subnet_routes.advertised metric tailscale_subnet_routes_advertised visualized
tailscale.subnet_routes.enabled metric tailscale_subnet_routes_enabled visualized
tailscale.subnet_routes.routers metric tailscale_subnet_routes_routers_ratio visualized, alertable
tailscale.subnet_routes.unapproved metric tailscale_subnet_routes_unapproved visualized, alertable
tailscale.tailnet_lock.errors metric tailscale_tailnet_lock_errors_ratio visualized, alertable, drives_a_variable
tailscale.user.connected metric tailscale_user_connected_ratio visualized, drives_a_variable
tailscale.user.devices metric tailscale_user_devices_ratio visualized
tailscale.user.last_seen metric tailscale_user_last_seen_seconds visualized
tailscale.user_invites.count metric tailscale_user_invites_count_ratio visualized
tailscale.user_invites.pending_age metric tailscale_user_invites_pending_age_seconds visualized, alertable
tailscale.users.age metric tailscale_users_age_seconds visualized
tailscale.users.count metric tailscale_users_count_ratio visualized
tailscale.webhook.duplicates metric tailscale_webhook_duplicates_total visualized
tailscale.webhook.events metric tailscale_webhook_events_total visualized, alertable, drives_a_variable
tailscale.webhook.inflight metric tailscale_webhook_inflight visualized
tailscale.webhook.rejected metric tailscale_webhook_rejected_total visualized, alertable, recorded
tailscale.webhook.request.duration metric tailscale_webhook_request_duration_seconds visualized
tailscale.webhook.schema_drift metric tailscale_webhook_schema_drift_total visualized, alertable
tailscale.webhook_endpoint.age metric tailscale_webhook_endpoint_age_seconds visualized
tailscale.webhook_endpoint.subscriptions metric tailscale_webhook_endpoint_subscriptions_ratio visualized
tailscale.webhook_endpoints.count metric tailscale_webhook_endpoints_count_ratio visualized
tailscale.webhook_endpoints.desired_unrecognized metric tailscale_webhook_endpoints_desired_unrecognized_ratio visualized
tailscale.webhook_endpoints.event_desired_covered metric tailscale_webhook_endpoints_event_desired_covered_ratio visualized
tailscale.webhook_endpoints.event_subscriptions metric tailscale_webhook_endpoints_event_subscriptions_ratio visualized
tailscale2otel.nodemetrics.discovery.success metric tailscale2otel_nodemetrics_discovery_success_ratio visualized, alertable
tailscale2otel.nodemetrics.discovery.targets metric tailscale2otel_nodemetrics_discovery_targets visualized
tailscale2otel.nodemetrics.metric_names.dropped metric tailscale2otel_nodemetrics_metric_names_dropped_total visualized, alertable
tailscale2otel.objectstore.backlog metric tailscale2otel_objectstore_backlog_ratio visualized, alertable, recorded
tailscale2otel.objectstore.bytes metric tailscale2otel_objectstore_bytes_total visualized
tailscale2otel.objectstore.cursor.age metric tailscale2otel_objectstore_cursor_age_seconds visualized
tailscale2otel.objectstore.decompressed.bytes metric tailscale2otel_objectstore_decompressed_bytes_total visualized
tailscale2otel.objectstore.discovered.newest.age metric tailscale2otel_objectstore_discovered_newest_age_seconds visualized, alertable
tailscale2otel.objectstore.expansion.limit_failures metric tailscale2otel_objectstore_expansion_limit_failures_total visualized
tailscale2otel.objectstore.gap.healthy metric tailscale2otel_objectstore_gap_healthy_ratio visualized
tailscale2otel.objectstore.gap.oldest.age metric tailscale2otel_objectstore_gap_oldest_age_seconds visualized, alertable
tailscale2otel.objectstore.gaps metric tailscale2otel_objectstore_gaps_ratio visualized
tailscale2otel.objectstore.objects metric tailscale2otel_objectstore_objects_total visualized
tailscale2otel.objectstore.pending.oldest.age metric tailscale2otel_objectstore_pending_oldest_age_seconds visualized
tailscale2otel.objectstore.records metric tailscale2otel_objectstore_records_total visualized
tailscale2otel.objectstore.request.duration metric tailscale2otel_objectstore_request_duration_seconds visualized
tailscale2otel.objectstore.requests metric tailscale2otel_objectstore_requests_total visualized
tailscale2otel.objectstore.retries metric tailscale2otel_objectstore_retries_total visualized
tailscale2otel.objectstore.scan.truncated metric tailscale2otel_objectstore_scan_truncated_ratio visualized
tailscale2otel.objectstore.skipped metric tailscale2otel_objectstore_skipped_total visualized, alertable, recorded

Self-observability signals

signal kind queried as disposition note
process.cpu.time metric process_cpu_time_seconds_total visualized #526 wave ⅔: panel scheduled on health/Runtime (Go runtime).
process.uptime metric process_uptime_seconds visualized #526 wave ⅔: panel scheduled on health/Runtime (Go runtime).
tailscale2otel.admin.auth.rejected metric tailscale2otel_admin_auth_rejected_total visualized, alertable
tailscale2otel.annotation.degraded metric tailscale2otel_annotation_degraded_ratio visualized #526 wave ⅔: panel scheduled on health/Delivery (annotations).
tailscale2otel.annotation.dropped metric tailscale2otel_annotation_dropped_total visualized #526 wave ⅔: panel scheduled on health/Delivery (annotations).
tailscale2otel.annotation.published metric tailscale2otel_annotation_published_total visualized #526 wave ⅔: panel scheduled on health/Delivery (annotations).
tailscale2otel.api.availability metric tailscale2otel_api_availability_ratio visualized, alertable
tailscale2otel.api.duration metric tailscale2otel_api_duration_seconds visualized, drives_a_variable
tailscale2otel.api.last_probe metric tailscale2otel_api_last_probe_seconds visualized
tailscale2otel.api.rate_limit.wait metric tailscale2otel_api_rate_limit_wait_seconds visualized, alertable
tailscale2otel.api.requests metric tailscale2otel_api_requests_total visualized, alertable, recorded
tailscale2otel.api.retries metric tailscale2otel_api_retries_total visualized, alertable, drives_a_variable
tailscale2otel.build_info metric tailscale2otel_build_info_ratio visualized
tailscale2otel.capability.scope_satisfied metric tailscale2otel_capability_scope_satisfied_ratio visualized
tailscale2otel.capability.status metric tailscale2otel_capability_status_ratio visualized
tailscale2otel.checkpoint.disk.size metric tailscale2otel_checkpoint_disk_size_bytes visualized
tailscale2otel.checkpoint.persist.age metric tailscale2otel_checkpoint_persist_age_seconds visualized, alertable
tailscale2otel.checkpoint.persist.errors metric tailscale2otel_checkpoint_persist_errors_total visualized, alertable
tailscale2otel.component.errors metric tailscale2otel_component_errors_total visualized, alertable
tailscale2otel.config.valid metric tailscale2otel_config_valid_ratio visualized, alertable
tailscale2otel.config.warnings metric tailscale2otel_config_warnings_ratio visualized, alertable
tailscale2otel.dedup.evictions metric tailscale2otel_dedup_evictions_total visualized, alertable
tailscale2otel.dedup.hits metric tailscale2otel_dedup_hits_total visualized
tailscale2otel.dedup.size metric tailscale2otel_dedup_size_ratio visualized
tailscale2otel.enrich.cache_age metric tailscale2otel_enrich_cache_age_seconds visualized, alertable
tailscale2otel.enrich.cache_size metric tailscale2otel_enrich_cache_size_ratio visualized
tailscale2otel.export.datapoints metric tailscale2otel_export_datapoints_total visualized, alertable
tailscale2otel.export.diagnostics.suppressed metric tailscale2otel_export_diagnostics_suppressed_total visualized #526 wave ⅔: panel scheduled on health/Delivery (OTLP export).
tailscale2otel.export.duration metric tailscale2otel_export_duration_seconds visualized, alertable, recorded, drives_a_variable
tailscale2otel.export.failures metric tailscale2otel_export_failures_total visualized, alertable, drives_a_variable
tailscale2otel.export.log_records metric tailscale2otel_export_log_records_total visualized
tailscale2otel.export.spans metric tailscale2otel_export_spans_total visualized #526 wave ⅔: panel scheduled on health/Delivery (OTLP export).
tailscale2otel.ingest.capture.delay metric tailscale2otel_ingest_capture_delay_seconds visualized
tailscale2otel.ingest.event.age metric tailscale2otel_ingest_event_age_seconds visualized
tailscale2otel.ingest.last_event_timestamp metric tailscale2otel_ingest_last_event_timestamp_seconds visualized, alertable, recorded
tailscale2otel.ingest.records metric tailscale2otel_ingest_records_total visualized, recorded, drives_a_variable
tailscale2otel.ingest.size metric tailscale2otel_ingest_size_bytes_total visualized
tailscale2otel.ingest.timestamp_skew metric tailscale2otel_ingest_timestamp_skew_total visualized
tailscale2otel.ingress_wal.completion.markers metric tailscale2otel_ingress_wal_completion_markers_ratio visualized
tailscale2otel.ingress_wal.orphan.size metric tailscale2otel_ingress_wal_orphan_size_bytes visualized
tailscale2otel.ingress_wal.orphan.stages metric tailscale2otel_ingress_wal_orphan_stages_ratio visualized
tailscale2otel.ingress_wal.pending.entries metric tailscale2otel_ingress_wal_pending_entries_ratio visualized
tailscale2otel.ingress_wal.pending.size metric tailscale2otel_ingress_wal_pending_size_bytes visualized
tailscale2otel.log.record.truncated metric tailscale2otel_log_record_truncated_total visualized #526 wave ⅔: panel scheduled on health/Ingestion (log truncation).
tailscale2otel.log.truncated.bytes metric tailscale2otel_log_truncated_bytes_total visualized #526 wave ⅔: panel scheduled on health/Ingestion (log truncation).
tailscale2otel.metrics.auth.rejected metric tailscale2otel_metrics_auth_rejected_total visualized #526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.metrics.scrape.duration metric tailscale2otel_metrics_scrape_duration_seconds visualized #526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.metrics.scrape.gather_errors metric tailscale2otel_metrics_scrape_gather_errors_total visualized #526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.metrics.scrape.in_flight metric tailscale2otel_metrics_scrape_in_flight visualized #526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.metrics.scrape.requests metric tailscale2otel_metrics_scrape_requests_total visualized #526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.pii_filter.category metric tailscale2otel_pii_filter_category_ratio visualized, drives_a_variable
tailscale2otel.processor.dropped metric tailscale2otel_processor_dropped_total visualized #526 wave ⅔: panel scheduled on health/Ingestion (processor queue).
tailscale2otel.processor.queue.capacity metric tailscale2otel_processor_queue_capacity_ratio visualized #526 wave ⅔: panel scheduled on health/Ingestion (processor queue).
tailscale2otel.processor.queue.size metric tailscale2otel_processor_queue_size_ratio visualized #526 wave ⅔: panel scheduled on health/Ingestion (processor queue).
tailscale2otel.profiling.upload.attempts metric tailscale2otel_profiling_upload_attempts_total visualized #526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.profiling.upload.consecutive_failures metric tailscale2otel_profiling_upload_consecutive_failures_ratio visualized #526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.profiling.upload.duration metric tailscale2otel_profiling_upload_duration_seconds visualized #526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.profiling.upload.failures metric tailscale2otel_profiling_upload_failures_total visualized #526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.profiling.upload.last_success metric tailscale2otel_profiling_upload_last_success_seconds visualized #526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.runtime.gc.count metric tailscale2otel_runtime_gc_count_total visualized
tailscale2otel.runtime.gc.cpu_fraction metric tailscale2otel_runtime_gc_cpu_fraction_ratio visualized, alertable
tailscale2otel.runtime.gc.next_target metric tailscale2otel_runtime_gc_next_target_bytes visualized
tailscale2otel.runtime.gc.pause_time metric tailscale2otel_runtime_gc_pause_time_seconds_total visualized
tailscale2otel.runtime.gomaxprocs metric tailscale2otel_runtime_gomaxprocs_ratio visualized
tailscale2otel.runtime.goroutines metric tailscale2otel_runtime_goroutines_ratio visualized
tailscale2otel.runtime.memory.alloc metric tailscale2otel_runtime_memory_alloc_bytes_total visualized
tailscale2otel.runtime.memory.heap_alloc metric tailscale2otel_runtime_memory_heap_alloc_bytes visualized
tailscale2otel.runtime.memory.heap_inuse metric tailscale2otel_runtime_memory_heap_inuse_bytes visualized
tailscale2otel.runtime.memory.heap_objects metric tailscale2otel_runtime_memory_heap_objects_ratio visualized
tailscale2otel.runtime.memory.heap_sys metric tailscale2otel_runtime_memory_heap_sys_bytes visualized
tailscale2otel.runtime.memory.stack_inuse metric tailscale2otel_runtime_memory_stack_inuse_bytes visualized
tailscale2otel.runtime.memory.sys metric tailscale2otel_runtime_memory_sys_bytes visualized
tailscale2otel.scrape.budget metric tailscale2otel_scrape_budget_ratio visualized, alertable
tailscale2otel.scrape.duration metric tailscale2otel_scrape_duration_seconds visualized #526 wave ⅔: panel scheduled on health/Collection (scrape/poll).
tailscale2otel.scrape.duration.histogram metric tailscale2otel_scrape_duration_histogram_seconds visualized Distribution of collector scrape durations, recorded with the scrape span so an exemplar links a bucket back to the trace. Now visualized: #369's follow-up replaced the flagship dashboard's last-value scrape-duration panel with p50/p95/p99 over this histogram, which is what the issue's acceptance asked for. The pre-existing scrape.duration gauge is retained alongside it.
tailscale2otel.scrape.errors metric tailscale2otel_scrape_errors_total visualized, alertable, drives_a_variable
tailscale2otel.scrape.last_timestamp metric tailscale2otel_scrape_last_timestamp_seconds visualized, alertable
tailscale2otel.scrape.staleness metric tailscale2otel_scrape_staleness_seconds visualized, alertable, recorded, drives_a_variable
tailscale2otel.scrape.success metric tailscale2otel_scrape_success_ratio visualized, alertable, recorded, drives_a_variable
tailscale2otel.series.active metric tailscale2otel_series_active visualized, alertable, recorded, drives_a_variable
tailscale2otel.series.by_group metric tailscale2otel_series_by_group visualized, recorded
tailscale2otel.series.limit metric tailscale2otel_series_limit visualized, alertable
tailscale2otel.series.overflowing metric tailscale2otel_series_overflowing_ratio visualized, alertable
tailscale2otel.subrequest.attempts metric tailscale2otel_subrequest_attempts_total visualized
tailscale2otel.subrequest.coverage metric tailscale2otel_subrequest_coverage_ratio visualized
tailscale2otel.subrequest.failures metric tailscale2otel_subrequest_failures_total visualized
tailscale2otel.tls.cert.not_after metric tailscale2otel_tls_cert_not_after_seconds visualized, alertable #526 wave ⅔: panel scheduled on health/Runtime (TLS cert reload) - ALERTABLE-ONLY today.
tailscale2otel.tls.cert.not_before metric tailscale2otel_tls_cert_not_before_seconds visualized #526 wave ⅔: panel scheduled on health/Runtime (TLS cert reload).
tailscale2otel.tls.cert.reload.failures metric tailscale2otel_tls_cert_reload_failures_total visualized, alertable #526 wave ⅔: panel scheduled on health/Runtime (TLS cert reload) - ALERTABLE-ONLY today.
tailscale2otel.tls.cert.reload.last_success metric tailscale2otel_tls_cert_reload_last_success_seconds visualized #526 wave ⅔: panel scheduled on health/Runtime (TLS cert reload).
tailscale2otel.up metric tailscale2otel_up_ratio visualized, alertable, recorded
tailscale2otel.update_available metric tailscale2otel_update_available_ratio visualized, alertable