Skip to content

Signal coverage

This page maps each catalog metric and log event to the shipped dashboards and rules. The table is generated from signal_dispositions.json. CI compares that manifest with the code catalog, dashboard queries and alert/recording rules.

Dispositions

DispositionMeaning
visualizedQueried by at least one dashboard panel.
alertableQueried by an alert expression.
recordedConsumed by a recording-rule expression.
drives_a_variableQueried by a dashboard variable, such as a presence sentinel or filter.

A signal can have several dispositions. They are derived from the artifacts, not assigned by hand. A variable reference does not count as a panel: it may control visibility without displaying the signal itself.

Every signal must reach a panel unless it belongs to an individually justified structural class in catalog.StructuralExemptions():

ClassReason
histogram_basePanels query histogram buckets, sums or counts rather than the base name.
templated_eventThe emitted name varies, such as tailscale.webhook.<type>; a literal selector cannot equal it.
recorded_onlyA recording rule consumes the signal and a panel queries the output.

The templated webhook event is therefore included in the operational total but not its literal-name visualized count. Its UNASSIGNED row is a structural exception, not an instruction to assign a manual disposition. Operational and exporter-health totals are reported separately.

Regenerate the page with just gen coverage. Changing a dashboard or rule may also require reconciling the manifest; see the repository's generated-artifact instructions. Signal units and attributes are in the metrics catalog.

Summary

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

surfacesignalsvisualizedalertablerecordeddrives a variable
operational260259581145
self_obs10210239910

Operational signals

signalkindqueried asdispositionnote
tailscale.acl.policy_difflog_eventevent_name="tailscale.acl.policy_diff"visualized
tailscale.acl.policy_snapshotlog_eventevent_name="tailscale.acl.policy_snapshot"visualized
tailscale.acl.risky_rulelog_eventevent_name="tailscale.acl.risky_rule"visualized#526 wave ⅔: panel scheduled on tailnet/Security & Audit > Risk & ACL.
tailscale.acl.validation_issuelog_eventevent_name="tailscale.acl.validation_issue"visualized
tailscale.config.auditlog_eventevent_name="tailscale.config.audit"visualized, alertable, drives_a_variable
tailscale.device.attribute.expiringlog_eventevent_name="tailscale.device.attribute.expiring"visualized#526 wave ⅔: panel scheduled on tailnet/Security & Audit > Posture & Compliance.
tailscale.device.changelog_eventevent_name="tailscale.device.change"visualized
tailscale.device.key_expiringlog_eventevent_name="tailscale.device.key_expiring"visualized#526 wave ⅔: panel scheduled on tailnet/Security & Audit > Identity & Keys.
tailscale.device.posturelog_eventevent_name="tailscale.device.posture"visualized, drives_a_variable
tailscale.device.tailnet_lock_errorlog_eventevent_name="tailscale.device.tailnet_lock_error"visualized
tailscale.device_invitelog_eventevent_name="tailscale.device_invite"visualized#526 wave ⅔: panel scheduled on tailnet/Devices > Inventory & Hygiene.
tailscale.dns.snapshotlog_eventevent_name="tailscale.dns.snapshot"visualized
tailscale.k8s.api_requestlog_eventevent_name="tailscale.k8s.api_request"visualizedThe 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.sessionlog_eventevent_name="tailscale.k8s.session"visualizedPer-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.createdlog_eventevent_name="tailscale.key.created"visualized
tailscale.key.expiringlog_eventevent_name="tailscale.key.expiring"visualized, drives_a_variable
tailscale.key.revokedlog_eventevent_name="tailscale.key.revoked"visualized
tailscale.key.scopeslog_eventevent_name="tailscale.key.scopes"visualized
tailscale.logstream.errorlog_eventevent_name="tailscale.logstream.error"visualized
tailscale.network.flowlog_eventevent_name="tailscale.network.flow"visualized, drives_a_variable
tailscale.oauth_app.infolog_eventevent_name="tailscale.oauth_app.info"visualized
tailscale.pam.sessionlog_eventevent_name="tailscale.pam.session"visualized
tailscale.pam.snapshotlog_eventevent_name="tailscale.pam.snapshot"visualized
tailscale.posture_integrations.snapshotlog_eventevent_name="tailscale.posture_integrations.snapshot"visualized
tailscale.settings.snapshotlog_eventevent_name="tailscale.settings.snapshot"visualized
tailscale.user_invite.no_longer_openlog_eventevent_name="tailscale.user_invite.no_longer_open"visualized
tailscale.user_invite.observedlog_eventevent_name="tailscale.user_invite.observed"visualized
tailscale.webhook.<type>log_eventevent_name="tailscale.webhook.<type>"UNASSIGNEDThe 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_mismatchlog_eventevent_name="tailscale.webhook_endpoints.event_mismatch"visualized
tailscale.webhooks.snapshotlog_eventevent_name="tailscale.webhooks.snapshot"visualized
tailscale.acl.autoapproversmetrictailscale_acl_autoapprovers_ratiovisualized, alertable
tailscale.acl.last_audit_changemetrictailscale_acl_last_audit_change_secondsvisualized
tailscale.acl.last_changedmetrictailscale_acl_last_changed_secondsvisualized
tailscale.acl.posture_gated_rulesmetrictailscale_acl_posture_gated_rules_ratiovisualized
tailscale.acl.rulesmetrictailscale_acl_rules_ratiovisualized
tailscale.acl.sizemetrictailscale_acl_size_bytesvisualized
tailscale.acl.ssh_wildcardmetrictailscale_acl_ssh_wildcard_ratiovisualized
tailscale.acl.unrestricted_rulesmetrictailscale_acl_unrestricted_rules_ratiovisualized, alertable, drives_a_variable
tailscale.acl.validation.errorsmetrictailscale_acl_validation_errors_ratiovisualized
tailscale.acl.validation.okmetrictailscale_acl_validation_ok_ratiovisualized
tailscale.acl.validation.test_failuresmetrictailscale_acl_validation_test_failures_ratiovisualized
tailscale.acl.validation.warningsmetrictailscale_acl_validation_warnings_ratiovisualized
tailscale.acl.wildcard_rulesmetrictailscale_acl_wildcard_rules_ratiovisualized
tailscale.config.audit.changesmetrictailscale_config_audit_changes_totalvisualized, alertable, drives_a_variable
tailscale.config.audit.deferred.delaymetrictailscale_config_audit_deferred_delay_secondsvisualized
tailscale.config.audit.eventsmetrictailscale_config_audit_events_totalvisualized, drives_a_variable
tailscale.config.audit.processing.delaymetrictailscale_config_audit_processing_delay_secondsvisualized
tailscale.config.audit.schema_driftmetrictailscale_config_audit_schema_drift_totalvisualized, alertable
tailscale.contact.needs_verificationmetrictailscale_contact_needs_verification_ratiovisualized, alertable
tailscale.derp.region.devicesmetrictailscale_derp_region_devices_ratiovisualized, drives_a_variable
tailscale.derp.region.latency_minmetrictailscale_derp_region_latency_min_secondsvisualized, alertable
tailscale.derp.region.preferredmetrictailscale_derp_region_preferred_ratiovisualized
tailscale.device.attributemetrictailscale_device_attribute_ratiovisualized, drives_a_variable
tailscale.device.attribute.expirymetrictailscale_device_attribute_expiry_secondsvisualized, alertable#526 wave ⅔: panel scheduled on tailnet/Security & Audit > Posture & Compliance - ALERTABLE-ONLY today.
tailscale.device.attribute.infometrictailscale_device_attribute_info_ratiovisualized
tailscale.device.attributes.droppedmetrictailscale_device_attributes_dropped_ratiovisualized
tailscale.device.blocks_incoming_connectionsmetrictailscale_device_blocks_incoming_connections_ratiovisualized, drives_a_variableOne 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_capablemetrictailscale_device_connectivity_direct_capable_ratiovisualizedOne 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.endpointsmetrictailscale_device_connectivity_endpoints_ratiovisualizedOne 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_natmetrictailscale_device_connectivity_hard_nat_ratiovisualized, drives_a_variable
tailscale.device.connectivity.ipv6metrictailscale_device_connectivity_ipv6_ratiovisualizedOne 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.udpmetrictailscale_device_connectivity_udp_ratiovisualizedOne 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.latencymetrictailscale_device_derp_latency_secondsvisualized, drives_a_variable
tailscale.device.distrometrictailscale_device_distro_ratiovisualized#526 wave ⅔: panel scheduled on tailnet/Devices > Inventory & Hygiene.
tailscale.device.exit_nodemetrictailscale_device_exit_node_ratiovisualized, drives_a_variable
tailscale.device.key.expirymetrictailscale_device_key_expiry_secondsvisualized, alertable, recorded
tailscale.device.key_expiry_disabledmetrictailscale_device_key_expiry_disabled_ratiovisualizedOne 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_seenmetrictailscale_device_last_seen_secondsvisualized
tailscale.device.multiple_connectionsmetrictailscale_device_multiple_connections_ratiovisualized, alertableOne 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.onlinemetrictailscale_device_online_ratiovisualized, recorded, drives_a_variable
tailscale.device.posturemetrictailscale_device_posture_ratiovisualized, alertable, recorded, drives_a_variable
tailscale.device.posture_identity.disabledmetrictailscale_device_posture_identity_disabled_ratiovisualizedOne 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.advertisedmetrictailscale_device_routes_advertisedvisualized, drives_a_variable
tailscale.device.routes.enabledmetrictailscale_device_routes_enabledvisualized
tailscale.device.ssh_enabledmetrictailscale_device_ssh_enabled_ratiovisualizedOne 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_availablemetrictailscale_device_update_available_ratiovisualized, alertable
tailscale.device.version_skewmetrictailscale_device_version_skew_ratiovisualized, alertable
tailscale.device_invites.countmetrictailscale_device_invites_count_ratiovisualized, alertable, drives_a_variable
tailscale.device_invites.pending_agemetrictailscale_device_invites_pending_age_secondsvisualized
tailscale.devices.agemetrictailscale_devices_age_secondsvisualized
tailscale.devices.by_countrymetrictailscale_devices_by_country_ratiovisualized#526 wave ⅔: panel scheduled on tailnet/Devices > Inventory & Hygiene.
tailscale.devices.by_distrometrictailscale_devices_by_distro_ratiovisualized
tailscale.devices.by_tagmetrictailscale_devices_by_tag_ratiovisualized
tailscale.devices.by_versionmetrictailscale_devices_by_version_ratiovisualized
tailscale.devices.client_supportsmetrictailscale_devices_client_supports_ratiovisualized
tailscale.devices.countmetrictailscale_devices_count_ratiovisualized, alertable, recorded
tailscale.devices.direct_capablemetrictailscale_devices_direct_capable_ratiovisualized
tailscale.devices.ephemeralmetrictailscale_devices_ephemeral_ratiovisualized
tailscale.devices.hard_natmetrictailscale_devices_hard_nat_ratiovisualized, alertable, recorded
tailscale.devices.key_expirymetrictailscale_devices_key_expiry_daysvisualized, drives_a_variable
tailscale.devices.key_expiry_disabledmetrictailscale_devices_key_expiry_disabled_ratiovisualized, alertable
tailscale.devices.outdatedmetrictailscale_devices_outdated_ratiovisualized, alertable
tailscale.devices.posture_compliance.failedmetrictailscale_devices_posture_compliance_failed_ratiovisualized
tailscale.devices.ssh_enabledmetrictailscale_devices_ssh_enabled_ratiovisualized
tailscale.devices.untaggedmetrictailscale_devices_untagged_ratiovisualized
tailscale.dns.magic_dnsmetrictailscale_dns_magic_dns_ratiovisualized
tailscale.dns.nameservers.countmetrictailscale_dns_nameservers_count_ratiovisualized
tailscale.dns.override_localmetrictailscale_dns_override_local_ratiovisualized
tailscale.dns.resolvermetrictailscale_dns_resolver_ratiovisualized
tailscale.dns.resolvers.use_with_exit_nodemetrictailscale_dns_resolvers_use_with_exit_node_ratiovisualized
tailscale.dns.search_pathmetrictailscale_dns_search_path_ratiovisualized
tailscale.dns.search_paths.countmetrictailscale_dns_search_paths_count_ratiovisualized
tailscale.dns.split_zones.countmetrictailscale_dns_split_zones_count_ratiovisualized
tailscale.exit_node.iometrictailscale_exit_node_io_bytes_totalvisualized, drives_a_variable
tailscale.exit_node.packetsmetrictailscale_exit_node_packets_totalvisualized
tailscale.exit_nodes.countmetrictailscale_exit_nodes_count_ratiovisualized
tailscale.feature.enabledmetrictailscale_feature_enabled_ratiovisualized, alertable
tailscale.fleet.latest_versionmetrictailscale_fleet_latest_version_ratiovisualized
tailscale.geoip.database.build_timemetrictailscale_geoip_database_build_time_secondsvisualized, alertable#526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations - ALERTABLE-ONLY today.
tailscale.geoip.downloadsmetrictailscale_geoip_downloads_totalvisualized#526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations.
tailscale.geoip.lookupsmetrictailscale_geoip_lookups_totalvisualized#526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations.
tailscale.geoip.reloadsmetrictailscale_geoip_reloads_totalvisualized#526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations.
tailscale.k8s.api.exec_sessionsmetrictailscale_k8s_api_exec_sessions_totalvisualized, drives_a_variablekubectl 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.mutationsmetrictailscale_k8s_api_mutations_totalvisualized, drives_a_variablecreate/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_probesmetrictailscale_k8s_api_rbac_probes_totalvisualized, drives_a_variableSelfSubjectRulesReview/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.requestsmetrictailscale_k8s_api_requests_totalvisualized, drives_a_variableBaseline 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_readsmetrictailscale_k8s_api_sensitive_reads_totalvisualized, drives_a_variableReads 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_driftmetrictailscale_k8s_schema_drift_totalvisualized, alertable, drives_a_variableGuards 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.startedmetrictailscale_k8s_session_started_totalvisualized, drives_a_variableTerminal 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_tagsmetrictailscale_key_allowed_tags_ratiovisualized
tailscale.key.expirymetrictailscale_key_expiry_secondsvisualized, alertable, drives_a_variable
tailscale.key.preauthorizedmetrictailscale_key_preauthorized_ratiovisualized
tailscale.key.scope_classmetrictailscale_key_scope_class_ratiovisualized, alertable#526 wave ⅔: panel scheduled on tailnet/Security & Audit > Identity & Keys - ALERTABLE-ONLY today.
tailscale.key.scopesmetrictailscale_key_scopes_ratiovisualized, drives_a_variable
tailscale.key.tag_scopemetrictailscale_key_tag_scope_ratiovisualized, alertable#526 wave ⅔: panel scheduled on tailnet/Security & Audit > Identity & Keys - ALERTABLE-ONLY today.
tailscale.keys.agemetrictailscale_keys_age_secondsvisualized
tailscale.keys.by_ownermetrictailscale_keys_by_owner_ratiovisualized
tailscale.keys.countmetrictailscale_keys_count_ratiovisualized
tailscale.logstream.bytes_sentmetrictailscale_logstream_bytes_sent_totalvisualized
tailscale.logstream.configuredmetrictailscale_logstream_configured_ratiovisualized, drives_a_variable
tailscale.logstream.destination.configuredmetrictailscale_logstream_destination_configured_ratiovisualized
tailscale.logstream.entries_sentmetrictailscale_logstream_entries_sent_totalvisualized
tailscale.logstream.errormetrictailscale_logstream_error_ratiovisualized
tailscale.logstream.last_activitymetrictailscale_logstream_last_activity_secondsvisualized, alertable
tailscale.logstream.max_body_requestsmetrictailscale_logstream_max_body_requests_totalvisualized, alertable
tailscale.logstream.requestsmetrictailscale_logstream_requests_totalvisualized
tailscale.logstream.requests_failedmetrictailscale_logstream_requests_failed_totalvisualized, alertable
tailscale.logstream.spoofed_entriesmetrictailscale_logstream_spoofed_entries_totalvisualized, alertable
tailscale.network.data_qualitymetrictailscale_network_data_quality_totalvisualized
tailscale.network.dedup.conflictsmetrictailscale_network_dedup_conflicts_totalvisualized
tailscale.network.field.observationsmetrictailscale_network_field_observations_totalvisualized
tailscale.network.flow.logs_droppedmetrictailscale_network_flow_logs_dropped_totalvisualized, alertable
tailscale.network.flowsmetrictailscale_network_flows_totalvisualized, alertable, drives_a_variable
tailscale.network.iometrictailscale_network_io_bytes_totalvisualized, recorded, drives_a_variable
tailscale.network.io.rollupmetrictailscale_network_io_rollup_bytes_totalvisualized, recorded, drives_a_variable
tailscale.network.packetsmetrictailscale_network_packets_totalvisualized
tailscale.network.packets.rollupmetrictailscale_network_packets_rollup_totalvisualized
tailscale.network.reporter.observationsmetrictailscale_network_reporter_observations_totalvisualized, alertable
tailscale.network.store.droppedmetrictailscale_network_store_dropped_totalvisualized
tailscale.network.unique.dst_peersmetrictailscale_network_unique_dst_peersvisualized, drives_a_variable
tailscale.network.unique.dst_portsmetrictailscale_network_unique_dst_portsvisualized
tailscale.node.derp.home_regionmetrictailscale_node_derp_home_region_ratiovisualized
tailscale.node.health_messagesmetrictailscale_node_health_messages_ratiovisualized, alertable
tailscale.node.iometrictailscale_node_io_bytes_totalvisualized, drives_a_variable
tailscale.node.packetsmetrictailscale_node_packets_totalvisualizedPacket 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.droppedmetrictailscale_node_packets_dropped_totalvisualized, alertable
tailscale.node.peer_relay.endpointsmetrictailscale_node_peer_relay_endpoints_ratiovisualized, alertable
tailscale.node.peer_relay.iometrictailscale_node_peer_relay_io_bytes_totalvisualized
tailscale.node.peer_relay.packetsmetrictailscale_node_peer_relay_packets_totalvisualizedPacket 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.upmetrictailscale_node_up_ratiovisualized, alertable, drives_a_variable
tailscale.oauth_app.node_attributesmetrictailscale_oauth_app_node_attributes_ratiovisualized
tailscale.oauth_app.redirect_urismetrictailscale_oauth_app_redirect_uris_ratiovisualized
tailscale.oauth_app.scope_classmetrictailscale_oauth_app_scope_class_ratiovisualized
tailscale.oauth_app.scopesmetrictailscale_oauth_app_scopes_ratiovisualized
tailscale.oauth_apps.agemetrictailscale_oauth_apps_age_secondsvisualized
tailscale.oauth_apps.countmetrictailscale_oauth_apps_count_ratiovisualized
tailscale.organization.tailnets.countmetrictailscale_organization_tailnets_count_ratiovisualized
tailscale.pam.connector.connectedmetrictailscale_pam_connector_connected_ratiovisualized
tailscale.pam.connector.infometrictailscale_pam_connector_info_ratiovisualized
tailscale.pam.connector.last_seen_agemetrictailscale_pam_connector_last_seen_age_secondsvisualized
tailscale.pam.connector.pluginsmetrictailscale_pam_connector_plugins_ratiovisualized
tailscale.pam.connector.socketsmetrictailscale_pam_connector_sockets_ratiovisualized
tailscale.pam.connector.tokensmetrictailscale_pam_connector_tokens_ratiovisualized
tailscale.pam.connectorsmetrictailscale_pam_connectors_ratiovisualized, drives_a_variable
tailscale.pam.identitiesmetrictailscale_pam_identities_ratiovisualized
tailscale.pam.org.plan.infometrictailscale_pam_org_plan_info_ratiovisualized
tailscale.pam.org.setting.enabledmetrictailscale_pam_org_setting_enabled_ratiovisualized
tailscale.pam.policiesmetrictailscale_pam_policies_ratiovisualized
tailscale.pam.policy.setting.enabledmetrictailscale_pam_policy_setting_enabled_ratiovisualized
tailscale.pam.service.alivemetrictailscale_pam_service_alive_ratiovisualized
tailscale.pam.service.setting.enabledmetrictailscale_pam_service_setting_enabled_ratiovisualized
tailscale.pam.servicesmetrictailscale_pam_services_ratiovisualized
tailscale.pam.session.durationmetrictailscale_pam_session_duration_secondsvisualized
tailscale.pam.session.eventsmetrictailscale_pam_session_events_totalvisualized
tailscale.pam.sessionsmetrictailscale_pam_sessions_totalvisualized
tailscale.pam.sessions.activemetrictailscale_pam_sessions_activevisualized
tailscale.pam.sessions.killedmetrictailscale_pam_sessions_killed_totalvisualized
tailscale.pam.subscription.limitmetrictailscale_pam_subscription_limit_ratiovisualized
tailscale.posture_integration.errormetrictailscale_posture_integration_error_ratiovisualized, alertable#526 wave ⅔: panel scheduled on tailnet/Policy & Config > Integrations - ALERTABLE-ONLY today.
tailscale.posture_integration.last_syncmetrictailscale_posture_integration_last_sync_secondsvisualized, alertable
tailscale.posture_integration.matchedmetrictailscale_posture_integration_matched_ratiovisualized, alertable
tailscale.posture_integration.possible_matchedmetrictailscale_posture_integration_possible_matched_ratiovisualized, alertable
tailscale.posture_integration.provider_hostsmetrictailscale_posture_integration_provider_hosts_ratiovisualized
tailscale.posture_integrations.countmetrictailscale_posture_integrations_count_ratiovisualized, drives_a_variable
tailscale.rdns.cache.capacitymetrictailscale_rdns_cache_capacity_ratiovisualized
tailscale.rdns.cache.entriesmetrictailscale_rdns_cache_entries_ratiovisualized, drives_a_variable
tailscale.rdns.cache.evictionsmetrictailscale_rdns_cache_evictions_totalvisualized
tailscale.rdns.cache.lookupsmetrictailscale_rdns_cache_lookups_totalvisualized
tailscale.rdns.cache.overflowsmetrictailscale_rdns_cache_overflows_totalvisualized, alertable
tailscale.rdns.queriesmetrictailscale_rdns_queries_totalvisualized
tailscale.rdns.refreshesmetrictailscale_rdns_refreshes_totalvisualized
tailscale.service.host.infometrictailscale_service_host_info_ratiovisualized
tailscale.service.hostsmetrictailscale_service_hosts_ratiovisualized, alertable
tailscale.service.portsmetrictailscale_service_portsvisualized, drives_a_variable
tailscale.services.by_tagmetrictailscale_services_by_tag_ratiovisualized
tailscale.services.countmetrictailscale_services_count_ratiovisualized, drives_a_variable
tailscale.setting.devices_key_durationmetrictailscale_setting_devices_key_duration_daysvisualized
tailscale.setting.enabledmetrictailscale_setting_enabled_ratiovisualized, alertable
tailscale.setting.users_external_tailnets_rolemetrictailscale_setting_users_external_tailnets_role_ratiovisualized
tailscale.stream.decode_errorsmetrictailscale_stream_decode_errors_totalvisualized
tailscale.stream.inflightmetrictailscale_stream_inflightvisualized
tailscale.stream.recordsmetrictailscale_stream_records_totalvisualized, drives_a_variable
tailscale.stream.rejectedmetrictailscale_stream_rejected_totalvisualized, alertable, recorded
tailscale.stream.request.durationmetrictailscale_stream_request_duration_secondsvisualized, alertable, drives_a_variable
tailscale.stream.skippedmetrictailscale_stream_skipped_totalvisualized, alertable
tailscale.subnet_routes.advertisedmetrictailscale_subnet_routes_advertisedvisualized
tailscale.subnet_routes.enabledmetrictailscale_subnet_routes_enabledvisualized
tailscale.subnet_routes.routersmetrictailscale_subnet_routes_routers_ratiovisualized, alertable
tailscale.subnet_routes.unapprovedmetrictailscale_subnet_routes_unapprovedvisualized, alertable
tailscale.tailnet_lock.errorsmetrictailscale_tailnet_lock_errors_ratiovisualized, alertable, drives_a_variable
tailscale.user.connectedmetrictailscale_user_connected_ratiovisualized, drives_a_variable
tailscale.user.devicesmetrictailscale_user_devices_ratiovisualized
tailscale.user.last_seenmetrictailscale_user_last_seen_secondsvisualized
tailscale.user_invites.countmetrictailscale_user_invites_count_ratiovisualized
tailscale.user_invites.pending_agemetrictailscale_user_invites_pending_age_secondsvisualized, alertable
tailscale.users.agemetrictailscale_users_age_secondsvisualized
tailscale.users.countmetrictailscale_users_count_ratiovisualized
tailscale.webhook.duplicatesmetrictailscale_webhook_duplicates_totalvisualized
tailscale.webhook.eventsmetrictailscale_webhook_events_totalvisualized, alertable, drives_a_variable
tailscale.webhook.inflightmetrictailscale_webhook_inflightvisualized
tailscale.webhook.rejectedmetrictailscale_webhook_rejected_totalvisualized, alertable, recorded
tailscale.webhook.request.durationmetrictailscale_webhook_request_duration_secondsvisualized
tailscale.webhook.schema_driftmetrictailscale_webhook_schema_drift_totalvisualized, alertable
tailscale.webhook_endpoint.agemetrictailscale_webhook_endpoint_age_secondsvisualized
tailscale.webhook_endpoint.subscriptionsmetrictailscale_webhook_endpoint_subscriptions_ratiovisualized
tailscale.webhook_endpoints.countmetrictailscale_webhook_endpoints_count_ratiovisualized
tailscale.webhook_endpoints.desired_unrecognizedmetrictailscale_webhook_endpoints_desired_unrecognized_ratiovisualized
tailscale.webhook_endpoints.event_desired_coveredmetrictailscale_webhook_endpoints_event_desired_covered_ratiovisualized
tailscale.webhook_endpoints.event_subscriptionsmetrictailscale_webhook_endpoints_event_subscriptions_ratiovisualized
tailscale2otel.nodemetrics.discovery.successmetrictailscale2otel_nodemetrics_discovery_success_ratiovisualized, alertable
tailscale2otel.nodemetrics.discovery.targetsmetrictailscale2otel_nodemetrics_discovery_targetsvisualized
tailscale2otel.nodemetrics.metric_names.droppedmetrictailscale2otel_nodemetrics_metric_names_dropped_totalvisualized, alertable
tailscale2otel.nodemetrics.scrape.failuresmetrictailscale2otel_nodemetrics_scrape_failures_totalvisualized
tailscale2otel.objectstore.backlogmetrictailscale2otel_objectstore_backlog_ratiovisualized, alertable, recorded
tailscale2otel.objectstore.bytesmetrictailscale2otel_objectstore_bytes_totalvisualized
tailscale2otel.objectstore.cursor.agemetrictailscale2otel_objectstore_cursor_age_secondsvisualized
tailscale2otel.objectstore.decompressed.bytesmetrictailscale2otel_objectstore_decompressed_bytes_totalvisualized
tailscale2otel.objectstore.discovered.newest.agemetrictailscale2otel_objectstore_discovered_newest_age_secondsvisualized, alertable
tailscale2otel.objectstore.expansion.limit_failuresmetrictailscale2otel_objectstore_expansion_limit_failures_totalvisualized
tailscale2otel.objectstore.gap.healthymetrictailscale2otel_objectstore_gap_healthy_ratiovisualized
tailscale2otel.objectstore.gap.oldest.agemetrictailscale2otel_objectstore_gap_oldest_age_secondsvisualized, alertable
tailscale2otel.objectstore.gapsmetrictailscale2otel_objectstore_gaps_ratiovisualized
tailscale2otel.objectstore.objectsmetrictailscale2otel_objectstore_objects_totalvisualized
tailscale2otel.objectstore.pending.oldest.agemetrictailscale2otel_objectstore_pending_oldest_age_secondsvisualized
tailscale2otel.objectstore.recordsmetrictailscale2otel_objectstore_records_totalvisualized
tailscale2otel.objectstore.request.durationmetrictailscale2otel_objectstore_request_duration_secondsvisualized
tailscale2otel.objectstore.requestsmetrictailscale2otel_objectstore_requests_totalvisualized
tailscale2otel.objectstore.retriesmetrictailscale2otel_objectstore_retries_totalvisualized
tailscale2otel.objectstore.scan.truncatedmetrictailscale2otel_objectstore_scan_truncated_ratiovisualized
tailscale2otel.objectstore.skippedmetrictailscale2otel_objectstore_skipped_totalvisualized, alertable, recorded

Self-observability signals

signalkindqueried asdispositionnote
process.cpu.timemetricprocess_cpu_time_seconds_totalvisualized#526 wave ⅔: panel scheduled on health/Runtime (Go runtime).
process.uptimemetricprocess_uptime_secondsvisualized#526 wave ⅔: panel scheduled on health/Runtime (Go runtime).
tailscale2otel.admin.auth.rejectedmetrictailscale2otel_admin_auth_rejected_totalvisualized, alertable
tailscale2otel.annotation.degradedmetrictailscale2otel_annotation_degraded_ratiovisualized#526 wave ⅔: panel scheduled on health/Delivery (annotations).
tailscale2otel.annotation.droppedmetrictailscale2otel_annotation_dropped_totalvisualized#526 wave ⅔: panel scheduled on health/Delivery (annotations).
tailscale2otel.annotation.publishedmetrictailscale2otel_annotation_published_totalvisualized#526 wave ⅔: panel scheduled on health/Delivery (annotations).
tailscale2otel.api.availabilitymetrictailscale2otel_api_availability_ratiovisualized, alertable
tailscale2otel.api.durationmetrictailscale2otel_api_duration_secondsvisualized, drives_a_variable
tailscale2otel.api.last_probemetrictailscale2otel_api_last_probe_secondsvisualized
tailscale2otel.api.rate_limit.utilizationmetrictailscale2otel_api_rate_limit_utilization_ratiovisualized
tailscale2otel.api.rate_limit.waitmetrictailscale2otel_api_rate_limit_wait_secondsvisualized, alertable
tailscale2otel.api.requestsmetrictailscale2otel_api_requests_totalvisualized, alertable, recorded
tailscale2otel.api.retriesmetrictailscale2otel_api_retries_totalvisualized, alertable, drives_a_variable
tailscale2otel.build_infometrictailscale2otel_build_info_ratiovisualized
tailscale2otel.capability.scope_satisfiedmetrictailscale2otel_capability_scope_satisfied_ratiovisualized
tailscale2otel.capability.statusmetrictailscale2otel_capability_status_ratiovisualized
tailscale2otel.checkpoint.disk.sizemetrictailscale2otel_checkpoint_disk_size_bytesvisualized
tailscale2otel.checkpoint.persist.agemetrictailscale2otel_checkpoint_persist_age_secondsvisualized, alertable
tailscale2otel.checkpoint.persist.errorsmetrictailscale2otel_checkpoint_persist_errors_totalvisualized, alertable
tailscale2otel.component.errorsmetrictailscale2otel_component_errors_totalvisualized, alertable
tailscale2otel.config.validmetrictailscale2otel_config_valid_ratiovisualized, alertable
tailscale2otel.config.warningsmetrictailscale2otel_config_warnings_ratiovisualized, alertable
tailscale2otel.coordination.handoversmetrictailscale2otel_coordination_handovers_totalvisualized, alertable
tailscale2otel.coordination.leadermetrictailscale2otel_coordination_leader_ratiovisualized, alertable
tailscale2otel.dedup.evictionsmetrictailscale2otel_dedup_evictions_totalvisualized, alertable
tailscale2otel.dedup.hitsmetrictailscale2otel_dedup_hits_totalvisualized
tailscale2otel.dedup.overlap_horizonmetrictailscale2otel_dedup_overlap_horizon_secondsvisualized, alertable
tailscale2otel.dedup.sizemetrictailscale2otel_dedup_size_ratiovisualized
tailscale2otel.dedup.youngest_eviction_agemetrictailscale2otel_dedup_youngest_eviction_age_secondsvisualized, alertable
tailscale2otel.enrich.cache_agemetrictailscale2otel_enrich_cache_age_secondsvisualized, alertable
tailscale2otel.enrich.cache_sizemetrictailscale2otel_enrich_cache_size_ratiovisualized
tailscale2otel.export.datapointsmetrictailscale2otel_export_datapoints_totalvisualized, alertable
tailscale2otel.export.diagnostics.suppressedmetrictailscale2otel_export_diagnostics_suppressed_totalvisualized#526 wave ⅔: panel scheduled on health/Delivery (OTLP export).
tailscale2otel.export.durationmetrictailscale2otel_export_duration_secondsvisualized, alertable, recorded, drives_a_variable
tailscale2otel.export.failuresmetrictailscale2otel_export_failures_totalvisualized, alertable, drives_a_variable
tailscale2otel.export.log_recordsmetrictailscale2otel_export_log_records_totalvisualized
tailscale2otel.export.spansmetrictailscale2otel_export_spans_totalvisualized#526 wave ⅔: panel scheduled on health/Delivery (OTLP export).
tailscale2otel.flow_store.journal.sizemetrictailscale2otel_flow_store_journal_size_bytesvisualized
tailscale2otel.flow_store.last_checkpoint_timestampmetrictailscale2otel_flow_store_last_checkpoint_timestamp_secondsvisualized
tailscale2otel.ingest.capture.delaymetrictailscale2otel_ingest_capture_delay_secondsvisualized
tailscale2otel.ingest.event.agemetrictailscale2otel_ingest_event_age_secondsvisualized
tailscale2otel.ingest.last_event_timestampmetrictailscale2otel_ingest_last_event_timestamp_secondsvisualized, alertable, recorded
tailscale2otel.ingest.recordsmetrictailscale2otel_ingest_records_totalvisualized, recorded, drives_a_variable
tailscale2otel.ingest.sizemetrictailscale2otel_ingest_size_bytes_totalvisualized
tailscale2otel.ingest.timestamp_skewmetrictailscale2otel_ingest_timestamp_skew_totalvisualized
tailscale2otel.ingress_wal.completion.markersmetrictailscale2otel_ingress_wal_completion_markers_ratiovisualized
tailscale2otel.ingress_wal.orphan.sizemetrictailscale2otel_ingress_wal_orphan_size_bytesvisualized
tailscale2otel.ingress_wal.orphan.stagesmetrictailscale2otel_ingress_wal_orphan_stages_ratiovisualized
tailscale2otel.ingress_wal.pending.entriesmetrictailscale2otel_ingress_wal_pending_entries_ratiovisualized
tailscale2otel.ingress_wal.pending.entries.fillmetrictailscale2otel_ingress_wal_pending_entries_fill_ratiovisualized, alertable
tailscale2otel.ingress_wal.pending.sizemetrictailscale2otel_ingress_wal_pending_size_bytesvisualized
tailscale2otel.ingress_wal.pending.size.fillmetrictailscale2otel_ingress_wal_pending_size_fill_ratiovisualized, alertable
tailscale2otel.log.record.truncatedmetrictailscale2otel_log_record_truncated_totalvisualized#526 wave ⅔: panel scheduled on health/Ingestion (log truncation).
tailscale2otel.log.truncated.bytesmetrictailscale2otel_log_truncated_bytes_totalvisualized#526 wave ⅔: panel scheduled on health/Ingestion (log truncation).
tailscale2otel.metrics.auth.rejectedmetrictailscale2otel_metrics_auth_rejected_totalvisualized#526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.metrics.scrape.durationmetrictailscale2otel_metrics_scrape_duration_secondsvisualized#526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.metrics.scrape.gather_errorsmetrictailscale2otel_metrics_scrape_gather_errors_totalvisualized, alertable#526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.metrics.scrape.in_flightmetrictailscale2otel_metrics_scrape_in_flightvisualized#526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.metrics.scrape.requestsmetrictailscale2otel_metrics_scrape_requests_totalvisualized#526 wave ⅔: panel scheduled on health/Collection (metrics endpoint).
tailscale2otel.pii_filter.categorymetrictailscale2otel_pii_filter_category_ratiovisualized, drives_a_variable
tailscale2otel.processor.droppedmetrictailscale2otel_processor_dropped_totalvisualized, alertable#526 wave ⅔: panel scheduled on health/Ingestion (processor queue).
tailscale2otel.processor.queue.capacitymetrictailscale2otel_processor_queue_capacity_ratiovisualized#526 wave ⅔: panel scheduled on health/Ingestion (processor queue).
tailscale2otel.processor.queue.sizemetrictailscale2otel_processor_queue_size_ratiovisualized#526 wave ⅔: panel scheduled on health/Ingestion (processor queue).
tailscale2otel.profiling.upload.attemptsmetrictailscale2otel_profiling_upload_attempts_totalvisualized#526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.profiling.upload.consecutive_failuresmetrictailscale2otel_profiling_upload_consecutive_failures_ratiovisualized, alertable#526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.profiling.upload.durationmetrictailscale2otel_profiling_upload_duration_secondsvisualized#526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.profiling.upload.failuresmetrictailscale2otel_profiling_upload_failures_totalvisualized#526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.profiling.upload.last_successmetrictailscale2otel_profiling_upload_last_success_secondsvisualized#526 wave ⅔: panel scheduled on health/Runtime (profiling upload).
tailscale2otel.receiver.misconfiguredmetrictailscale2otel_receiver_misconfigured_ratiovisualized, alertable
tailscale2otel.runtime.gc.countmetrictailscale2otel_runtime_gc_count_totalvisualized
tailscale2otel.runtime.gc.cpu_fractionmetrictailscale2otel_runtime_gc_cpu_fraction_ratiovisualized, alertable
tailscale2otel.runtime.gc.next_targetmetrictailscale2otel_runtime_gc_next_target_bytesvisualized
tailscale2otel.runtime.gc.pause_timemetrictailscale2otel_runtime_gc_pause_time_seconds_totalvisualized
tailscale2otel.runtime.gomaxprocsmetrictailscale2otel_runtime_gomaxprocs_ratiovisualized
tailscale2otel.runtime.goroutinesmetrictailscale2otel_runtime_goroutines_ratiovisualized
tailscale2otel.runtime.memory.allocmetrictailscale2otel_runtime_memory_alloc_bytes_totalvisualized
tailscale2otel.runtime.memory.heap_allocmetrictailscale2otel_runtime_memory_heap_alloc_bytesvisualized
tailscale2otel.runtime.memory.heap_inusemetrictailscale2otel_runtime_memory_heap_inuse_bytesvisualized
tailscale2otel.runtime.memory.heap_objectsmetrictailscale2otel_runtime_memory_heap_objects_ratiovisualized
tailscale2otel.runtime.memory.heap_sysmetrictailscale2otel_runtime_memory_heap_sys_bytesvisualized
tailscale2otel.runtime.memory.stack_inusemetrictailscale2otel_runtime_memory_stack_inuse_bytesvisualized
tailscale2otel.runtime.memory.sysmetrictailscale2otel_runtime_memory_sys_bytesvisualized
tailscale2otel.scrape.budgetmetrictailscale2otel_scrape_budget_ratiovisualized, alertable
tailscale2otel.scrape.durationmetrictailscale2otel_scrape_duration_secondsvisualized#526 wave ⅔: panel scheduled on health/Collection (scrape/poll).
tailscale2otel.scrape.duration.histogrammetrictailscale2otel_scrape_duration_histogram_secondsvisualizedDistribution 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.errorsmetrictailscale2otel_scrape_errors_totalvisualized, alertable, drives_a_variable
tailscale2otel.scrape.last_timestampmetrictailscale2otel_scrape_last_timestamp_secondsvisualized, alertable
tailscale2otel.scrape.stalenessmetrictailscale2otel_scrape_staleness_secondsvisualized, alertable, recorded, drives_a_variable
tailscale2otel.scrape.successmetrictailscale2otel_scrape_success_ratiovisualized, alertable, recorded, drives_a_variable
tailscale2otel.series.activemetrictailscale2otel_series_activevisualized, alertable, recorded, drives_a_variable
tailscale2otel.series.by_groupmetrictailscale2otel_series_by_groupvisualized, recorded
tailscale2otel.series.limitmetrictailscale2otel_series_limitvisualized, alertable
tailscale2otel.series.overflowingmetrictailscale2otel_series_overflowing_ratiovisualized, alertable
tailscale2otel.subrequest.attemptsmetrictailscale2otel_subrequest_attempts_totalvisualized
tailscale2otel.subrequest.coveragemetrictailscale2otel_subrequest_coverage_ratiovisualized
tailscale2otel.subrequest.failuresmetrictailscale2otel_subrequest_failures_totalvisualized
tailscale2otel.tls.cert.not_aftermetrictailscale2otel_tls_cert_not_after_secondsvisualized, alertable#526 wave ⅔: panel scheduled on health/Runtime (TLS cert reload) - ALERTABLE-ONLY today.
tailscale2otel.tls.cert.not_beforemetrictailscale2otel_tls_cert_not_before_secondsvisualized#526 wave ⅔: panel scheduled on health/Runtime (TLS cert reload).
tailscale2otel.tls.cert.reload.failuresmetrictailscale2otel_tls_cert_reload_failures_totalvisualized, alertable#526 wave ⅔: panel scheduled on health/Runtime (TLS cert reload) - ALERTABLE-ONLY today.
tailscale2otel.tls.cert.reload.last_successmetrictailscale2otel_tls_cert_reload_last_success_secondsvisualized#526 wave ⅔: panel scheduled on health/Runtime (TLS cert reload).
tailscale2otel.upmetrictailscale2otel_up_ratiovisualized, alertable, recorded
tailscale2otel.update_availablemetrictailscale2otel_update_available_ratiovisualized, alertable