From 2784d0245d3d82cccd00f4ee885cac79bb03f13b Mon Sep 17 00:00:00 2001 From: Kat Batuigas Date: Thu, 16 Jul 2026 17:45:11 -0700 Subject: [PATCH 1/8] Improved cluster health summary --- modules/manage/partials/monitor-health.adoc | 140 ++++++++++++++++++ .../rpk/rpk-cluster/rpk-cluster-health.adoc | 7 + 2 files changed, 147 insertions(+) diff --git a/modules/manage/partials/monitor-health.adoc b/modules/manage/partials/monitor-health.adoc index 884be1f5bc..731bb3d019 100644 --- a/modules/manage/partials/monitor-health.adoc +++ b/modules/manage/partials/monitor-health.adoc @@ -428,6 +428,146 @@ Leaderless partitions can be caused by unresponsive brokers. When an alert on `r Redpanda's Raft implementation exchanges periodic status RPCs between a broker and its peers. The xref:reference:public-metrics-reference.adoc#redpanda_node_status_rpcs_timed_out[`redpanda_node_status_rpcs_timed_out`] gauge increases when a status RPC times out for a peer, which indicates that a peer may be unresponsive and may lead to problems with partition replication that Raft manages. Monitor for non-zero values of this gauge, and correlate it with any logged errors or changes in partition replication. +ifndef::env-cloud[] +[[cluster-health]] +=== Cluster health + +A healthy cluster has all brokers responding, a leader for every partition, and an elected controller. Redpanda can export this cluster health summary as a set of Prometheus metrics, so you can alert on overall cluster health from your metrics system instead of polling xref:reference:rpk/rpk-cluster/rpk-cluster-health.adoc[`rpk cluster health`] or the link:/api/doc/admin/operation/operation-get_cluster_health_overview[health overview Admin API]. + +These metrics are disabled by default. When enabled, every broker periodically assembles its own view of the health overview and exposes it on the public metrics endpoint, prefixed with `redpanda_cluster_health_`. For most of these metrics, a value of `0` means healthy and any value greater than `0` indicates a problem. + +NOTE: Cluster health metrics require Redpanda version 26.2.1 and later. + +==== Cluster health metrics setup + +Set xref:reference:properties/cluster-properties.adoc#health_monitor_metrics_enabled[`health_monitor_metrics_enabled`] to `true`. This property requires a broker restart to take effect. + +ifndef::env-kubernetes[] +[,bash] +---- +rpk cluster config set health_monitor_metrics_enabled true +---- +endif::[] + +ifdef::env-kubernetes[] +[tabs] +====== +Helm + Operator:: ++ +-- +.`redpanda-cluster.yaml` +[,yaml] +---- +apiVersion: cluster.redpanda.com/v1alpha2 +kind: Redpanda +metadata: + name: redpanda +spec: + chartRef: {} + clusterSpec: + config: + cluster: + health_monitor_metrics_enabled: true +---- + +```bash +kubectl apply -f redpanda-cluster.yaml --namespace +``` + +-- +Helm:: ++ +-- +[tabs] +==== +--values:: ++ +.`health-metrics.yaml` +[,yaml] +---- +config: + cluster: + health_monitor_metrics_enabled: true +---- ++ +```bash +helm upgrade --install redpanda redpanda/redpanda --namespace --create-namespace \ +--values health-metrics.yaml --reuse-values +``` + +--set:: ++ +[,bash] +---- +helm upgrade --install redpanda redpanda/redpanda \ + --namespace \ + --create-namespace \ + --set config.cluster.health_monitor_metrics_enabled=true +---- + +==== +-- +====== +endif::[] + +Each broker refreshes the metrics on an interval of 10 times xref:reference:properties/cluster-properties.adoc#health_monitor_max_metadata_age[`health_monitor_max_metadata_age`] (100 seconds by default). Enabling the metrics increases CPU usage and network traffic, so capture a baseline before and after you turn them on. + +==== Available metrics + +Redpanda emits two groups of metrics, both prefixed `redpanda_cluster_health_` on the public metrics endpoint and reported once per broker. The overview metrics appear on a broker as soon as it assembles a usable view of the cluster, typically a few seconds after start-up. + +[cols="2a,1,3"] +|=== +|Metric |Type |Description + +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_unhealthy_reasons[`redpanda_cluster_health_unhealthy_reasons`] |gauge |Number of reasons the cluster is currently unhealthy. `0` means healthy. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_no_elected_controller[`redpanda_cluster_health_no_elected_controller`] |gauge |`1` if no controller is elected, otherwise `0`. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_nodes_down[`redpanda_cluster_health_nodes_down`] |gauge |Number of brokers not responding to liveness checks. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_leaderless_partitions[`redpanda_cluster_health_leaderless_partitions`] |gauge |Number of partitions without a leader. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_under_replicated_partitions[`redpanda_cluster_health_under_replicated_partitions`] |gauge |Number of partitions that are not fully replicated. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_high_disk_usage_nodes[`redpanda_cluster_health_high_disk_usage_nodes`] |gauge |Number of brokers past the storage-space alert threshold. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_no_health_report[`redpanda_cluster_health_no_health_report`] |gauge |`1` if the most recent refresh attempt failed, otherwise `0`. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_cluster_size[`redpanda_cluster_health_cluster_size`] |gauge |Number of known cluster members. Informational. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_nodes_in_recovery_mode[`redpanda_cluster_health_nodes_in_recovery_mode`] |gauge |Number of brokers in recovery mode. Informational; does not affect the health verdict. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_bytes_in_cloud_storage[`redpanda_cluster_health_bytes_in_cloud_storage`] |gauge |Bytes stored in object storage. Informational; `0` if Tiered Storage isn't enabled. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_metadata_age_seconds[`redpanda_cluster_health_metadata_age_seconds`] |gauge |Seconds since the last successful refresh on the broker. Reports a very large value before the first refresh so that staleness alerts fire. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_refreshes_total[`redpanda_cluster_health_refreshes_total`] |counter |Number of successful refreshes on the broker. +|=== + +NOTE: The informational metrics (`cluster_size`, `nodes_in_recovery_mode`, and `bytes_in_cloud_storage`) don't affect whether the cluster is considered healthy. + +==== Metric aggregation across brokers + +Every broker exposes its own copy of these metrics, so decide how to combine them. + +Aggregate across all brokers, for example with `max()`: + +[,promql] +---- +max(redpanda_cluster_health_nodes_down) +---- + +Use `max()`, not `sum()`. Every broker reports its own copy, so `sum()` returns roughly the broker count times the real value. Aggregation is fine for coarse cluster-health alerting, but it's noisier during controller elections and broker restarts, and a stale or partitioned broker still contributes its last cached view. + +For a lower-noise signal, read the metric only from the current controller leader by joining against the Raft `leader_for` gauge for the controller partition: + +[,promql] +---- +redpanda_cluster_health_unhealthy_reasons + and on(instance) + redpanda_raft_leader_for{namespace="redpanda",topic="controller",partition="0"} == 1 +---- + +This join returns a value only while some broker is the controller leader. If no broker is the leader, for example when the cluster has no controller at all, the query returns an empty result, which an alert configured to fire above zero would not catch. Pair the join with a separate alert that fires when no broker reports itself as the controller leader: + +[,promql] +---- +sum(redpanda_raft_leader_for{namespace="redpanda",topic="controller",partition="0"}) == 0 +---- + +During a controller election there is a brief window where no broker is the leader and the joined series drops out. Use a `for` duration of at least one minute on these alerts to ride through normal elections. +endif::[] + [[consumers]] === Consumer group lag diff --git a/modules/reference/pages/rpk/rpk-cluster/rpk-cluster-health.adoc b/modules/reference/pages/rpk/rpk-cluster/rpk-cluster-health.adoc index 53ae5b1ae8..a46f8b9c3a 100644 --- a/modules/reference/pages/rpk/rpk-cluster/rpk-cluster-health.adoc +++ b/modules/reference/pages/rpk/rpk-cluster/rpk-cluster-health.adoc @@ -13,6 +13,13 @@ A cluster is considered healthy when the following conditions are met: * All partitions have leaders * The cluster controller is present +ifndef::env-cloud[] +[NOTE] +==== +The same health fields are also available as Prometheus metrics. See xref:manage:monitoring.adoc#cluster-health[Cluster health] for how to enable and query them. +==== +endif::[] + == Usage [,bash] From 23661fc3bcbeec2eeaccb4a8d35970f920f05828 Mon Sep 17 00:00:00 2001 From: Kat Batuigas Date: Thu, 16 Jul 2026 17:58:29 -0700 Subject: [PATCH 2/8] Add to What's new --- .../pages/release-notes/redpanda.adoc | 238 +----------------- 1 file changed, 3 insertions(+), 235 deletions(-) diff --git a/modules/get-started/pages/release-notes/redpanda.adoc b/modules/get-started/pages/release-notes/redpanda.adoc index 468dccf544..67b8e9db44 100644 --- a/modules/get-started/pages/release-notes/redpanda.adoc +++ b/modules/get-started/pages/release-notes/redpanda.adoc @@ -7,240 +7,8 @@ This topic includes new content added in version {page-component-version}. For a * xref:cloud-data-platform:get-started:whats-new-cloud.adoc[] * xref:cloud-data-platform:get-started:cloud-overview.adoc#redpanda-cloud-vs-self-managed-feature-compatibility[Redpanda Cloud vs Self-Managed feature compatibility] +== Cluster health metrics -== Cloud Topics +Redpanda can now export a cluster health summary as Prometheus metrics, so you can alert on overall cluster health, such as brokers down, leaderless partitions, or a missing controller, directly from your metrics system instead of polling xref:reference:rpk/rpk-cluster/rpk-cluster-health.adoc[`rpk cluster health`]. The metrics mirror the output of `rpk cluster health` and are disabled by default. -xref:develop:manage-topics/cloud-topics.adoc[Cloud Topics] are now available, making it possible to use durable cloud storage (S3, ADLS, GCS) as the primary backing store instead of local disk, eliminating over 90% of cross-AZ replication costs. This makes them ideal for latency-tolerant, high-throughput workloads such as observability streams, analytics pipelines, and AI/ML training data feeds, where cross-AZ networking charges are the dominant cost driver. - -You can use Cloud Topics exclusively in Redpanda Streaming clusters, or in combination with traditional Tiered Storage and local storage topics on a shared cluster supporting low latency workloads. - -Cloud Topics require Tiered Storage and an Enterprise license. For setup instructions and limitations, see xref:develop:manage-topics/cloud-topics.adoc[]. - -== Group-based access control (GBAC) - -Redpanda {page-component-version} introduces xref:manage:security/authorization/gbac.adoc[group-based access control (GBAC)], which extends OIDC authentication to support group-based permissions. In addition to assigning roles or ACLs to individual users, you can assign them to OIDC groups. Users inherit permissions from all groups reported by their identity provider (IdP) in the OIDC token claims. - -GBAC supports two authorization patterns: - -* Assign a group as a member of an RBAC role so that all users in the group inherit the role's ACLs. -* Create ACLs directly with a `Group:` principal. - -Group membership is managed entirely by your IdP. Redpanda reads group information from the OIDC token at authentication time and works across the Kafka API, Schema Registry, and HTTP Proxy. - -== FIPS 140-3 validation and FIPS Docker image - -Redpanda's cryptographic module has been upgraded from FIPS 140-2 to https://csrc.nist.gov/pubs/fips/140-3/final[FIPS 140-3^] validation. Additionally, Redpanda now provides a FIPS-specific Docker image (`docker.redpanda.com/redpandadata/redpanda:-fips`) for `amd64` and `arm64` architectures, with the required OpenSSL FIPS module pre-configured. - -NOTE: If you are upgrading with FIPS mode enabled, ensure all SASL/SCRAM user passwords are at least 14 characters before upgrading. FIPS 140-3 enforces stricter HMAC key size requirements. - -See xref:manage:security/fips-compliance.adoc[] for configuration details. - -== Iceberg: Expanded JSON Schema support - -Redpanda now supports additional JSON Schema patterns when translating to Iceberg tables: - -* `$ref` support: Internal references using `$ref` (for example, `"$ref": "#/definitions/myType"`) are resolved from schema resources declared in the same document. External references are not yet supported. -* Map type from `additionalProperties`: `additionalProperties` objects that contain subschemas now translate to Iceberg `map`. -* `oneOf` nullable pattern: The `oneOf` keyword is now supported for the standard nullable pattern if exactly one branch is `{"type":"null"}` and the other is a non-null schema. - -See xref:manage:iceberg/specify-iceberg-schema.adoc#how-iceberg-modes-translate-to-table-format[Specify Iceberg Schema] for JSON types mapping and updated requirements. - -== Ordered rack preference for Leader Pinning - -xref:develop:produce-data/leader-pinning.adoc[Leader Pinning] now supports the `ordered_racks` configuration value, which lets you specify preferred racks in priority order. Unlike `racks`, which distributes leaders uniformly across all listed racks, `ordered_racks` places leaders in the highest-priority available rack and fails over to subsequent racks only when higher-priority racks become unavailable. - -== User-based throughput quotas - -Redpanda now supports throughput quotas based on authenticated user principals. Unlike client-based quotas (which rely on self-declared `client-id` values), user-based quotas enforce limits using verified identities from SASL, mTLS, or OIDC authentication. - -You can set quotas for individual users, default users, or fine-grained user/client combinations. See xref:manage:cluster-maintenance/about-throughput-quotas.adoc[] for conceptual details, and xref:manage:cluster-maintenance/manage-throughput.adoc#set-user-based-quotas[Set user-based quotas] to get started. - -== Cross-region Remote Read Replicas - -Remote Read Replica topics on AWS can be deployed in a different region from the origin cluster's S3 bucket. This enables cross-region disaster recovery and data locality scenarios while maintaining the read-only replication model. - -To create cross-region Remote Read Replica topics, configure dynamic upstreams that point to the origin cluster's S3 bucket location. Redpanda manages the number of concurrent dynamic upstreams based on your `cloud_storage_url_style` setting (virtual_host or path style). - -See xref:manage:tiered-storage.adoc#remote-read-replicas[Remote Read Replicas] for setup instructions and configuration details. - -== Automatic broker decommissioning - -When continuous partition balancing is enabled, Redpanda can automatically decommission brokers that remain unavailable for a configured duration. The xref:reference:properties/cluster-properties.adoc#partition_autobalancing_node_autodecommission_timeout_sec[`partition_autobalancing_node_autodecommission_timeout_sec`] property triggers permanent broker removal, unlike xref:reference:properties/cluster-properties.adoc#partition_autobalancing_node_availability_timeout_sec[`partition_autobalancing_node_availability_timeout_sec`] which only moves partitions temporarily. - -Key characteristics: - -* Disabled by default -* Requires `partition_autobalancing_mode` set to `continuous` -* Permanently removes the node from the cluster (the node cannot rejoin automatically) -* Processes one decommission at a time to maintain cluster stability -* Manual intervention required if decommission stalls - -See xref:manage:cluster-maintenance/continuous-data-balancing.adoc[] for configuration details. - -== Schema Registry contexts - -xref:manage:schema-reg/schema-reg-contexts.adoc[Schema Registry contexts] are namespaces that isolate schemas, subjects, and configurations within a single Schema Registry instance. Each context maintains its own schema ID counter, mode settings, and compatibility settings, so teams can share a Schema Registry without risking naming collisions or configuration drift. - -To enable contexts, set xref:reference:properties/cluster-properties.adoc#schema_registry_enable_qualified_subjects[`schema_registry_enable_qualified_subjects`] to `true` and restart your brokers. Once enabled, you reference schemas using qualified subject syntax, for example `:.staging:my-topic-value`. See xref:manage:schema-reg/schema-reg-contexts.adoc[] for configuration examples and limitations. - -== Schema Registry metadata properties - -xref:manage:schema-reg/schema-reg-overview.adoc#metadata-properties[Schema Registry metadata properties] let you store and retrieve arbitrary key-value pairs alongside schemas. Properties such as `owner`, `team`, or `application.version` travel with the schema through its lifecycle, making it easier to track ownership and lineage without modifying the schema itself. - -You can set metadata when registering a schema using the `POST /subjects/\{subject\}/versions` endpoint or with the xref:reference:rpk/rpk-registry/rpk-registry-schema-create.adoc[`--metadata-properties`] flag in `rpk registry schema create`. Metadata is returned in `GET /subjects/\{subject\}/versions/\{version\}` and `GET /schemas/ids/\{id\}` responses, and viewable with `rpk registry schema get --print-metadata`. New schema versions automatically inherit metadata from the most recent version of the subject unless you register with an explicit empty `metadata` object. - -== OIDC authentication with rpk - -Starting in v26.1.7, `rpk` supports the `OAUTHBEARER` SASL mechanism, so you can authenticate `rpk` to the Kafka API with an OIDC access token issued by your identity provider (IdP) instead of a SASL/SCRAM username and password. Pass the token through xref:reference:rpk/rpk-x-options.adoc#sasl-mechanism[`-X sasl.mechanism=OAUTHBEARER`] and xref:reference:rpk/rpk-x-options.adoc#pass[`-X pass="token:"`]. - -For end-to-end steps and prerequisites, see xref:manage:security/authentication.adoc#oidc-rpk[Connect to Redpanda with OIDC using rpk]. - -== New configuration properties - -**Storage mode:** - -* xref:reference:properties/cluster-properties.adoc#default_redpanda_storage_mode[`default_redpanda_storage_mode`]: Set the default storage mode for new topics (`local`, `tiered`, `cloud`, or `unset`) -* xref:reference:properties/topic-properties.adoc#redpanda-storage-mode[`redpanda.storage.mode`]: Set the storage mode for an individual topic, superseding the legacy `redpanda.remote.read` and `redpanda.remote.write` properties - -**Cloud Topics:** - -NOTE: Cloud Topics requires an Enterprise license. For more information, contact https://redpanda.com/try-redpanda?section=enterprise[Redpanda sales^]. - -* xref:reference:properties/cluster-properties.adoc#cloud_topics_allow_materialization_failure[`cloud_topics_allow_materialization_failure`]: Enable recovery from missing L0 extent objects -* xref:reference:properties/cluster-properties.adoc#cloud_topics_compaction_interval_ms[`cloud_topics_compaction_interval_ms`]: Interval for background compaction -* xref:reference:properties/cluster-properties.adoc#cloud_topics_compaction_key_map_memory[`cloud_topics_compaction_key_map_memory`]: Maximum memory per shard for compaction key-offset maps -* xref:reference:properties/cluster-properties.adoc#cloud_topics_compaction_max_object_size[`cloud_topics_compaction_max_object_size`]: Maximum size for L1 objects produced by compaction -* xref:reference:properties/cluster-properties.adoc#cloud_topics_epoch_service_max_same_epoch_duration[`cloud_topics_epoch_service_max_same_epoch_duration`]: Maximum duration a node can use the same epoch -* xref:reference:properties/cluster-properties.adoc#cloud_topics_fetch_debounce_enabled[`cloud_topics_fetch_debounce_enabled`]: Enable fetch debouncing -* xref:reference:properties/cluster-properties.adoc#cloud_topics_gc_health_check_interval[`cloud_topics_gc_health_check_interval`]: L0 garbage collector health check interval -* xref:reference:properties/cluster-properties.adoc#cloud_topics_l1_indexing_interval[`cloud_topics_l1_indexing_interval`]: Byte interval for index entries in long-term storage objects -* xref:reference:properties/cluster-properties.adoc#cloud_topics_long_term_file_deletion_delay[`cloud_topics_long_term_file_deletion_delay`]: Delay before deleting stale long-term files -* xref:reference:properties/cluster-properties.adoc#cloud_topics_long_term_flush_interval[`cloud_topics_long_term_flush_interval`]: Interval for flushing long-term storage metadata to object storage -* xref:reference:properties/cluster-properties.adoc#cloud_topics_metastore_lsm_apply_timeout_ms[`cloud_topics_metastore_lsm_apply_timeout_ms`]: Timeout for applying replicated writes to LSM database -* xref:reference:properties/cluster-properties.adoc#cloud_topics_metastore_replication_timeout_ms[`cloud_topics_metastore_replication_timeout_ms`]: Timeout for L1 metastore Raft replication -* xref:reference:properties/cluster-properties.adoc#cloud_topics_num_metastore_partitions[`cloud_topics_num_metastore_partitions`]: Number of partitions for the metastore topic -* xref:reference:properties/cluster-properties.adoc#cloud_topics_parallel_fetch_enabled[`cloud_topics_parallel_fetch_enabled`]: Enable parallel fetching -* xref:reference:properties/cluster-properties.adoc#cloud_topics_preregistered_object_ttl[`cloud_topics_preregistered_object_ttl`]: Time-to-live for pre-registered L1 objects -* xref:reference:properties/cluster-properties.adoc#cloud_topics_produce_no_pid_concurrency[`cloud_topics_produce_no_pid_concurrency`]: Concurrent Raft requests for producers without a producer ID -* xref:reference:properties/cluster-properties.adoc#cloud_topics_produce_write_inflight_limit[`cloud_topics_produce_write_inflight_limit`]: Maximum in-flight write requests per shard -* xref:reference:properties/cluster-properties.adoc#cloud_topics_reconciliation_max_interval[`cloud_topics_reconciliation_max_interval`]: Maximum reconciliation interval for adaptive scheduling -* xref:reference:properties/cluster-properties.adoc#cloud_topics_reconciliation_max_object_size[`cloud_topics_reconciliation_max_object_size`]: Maximum size for L1 objects produced by the reconciler -* xref:reference:properties/cluster-properties.adoc#cloud_topics_reconciliation_min_interval[`cloud_topics_reconciliation_min_interval`]: Minimum reconciliation interval for adaptive scheduling -* xref:reference:properties/cluster-properties.adoc#cloud_topics_reconciliation_parallelism[`cloud_topics_reconciliation_parallelism`]: Maximum concurrent objects built by reconciliation per shard -* xref:reference:properties/cluster-properties.adoc#cloud_topics_reconciliation_slowdown_blend[`cloud_topics_reconciliation_slowdown_blend`]: Blend factor for slowing down reconciliation -* xref:reference:properties/cluster-properties.adoc#cloud_topics_reconciliation_speedup_blend[`cloud_topics_reconciliation_speedup_blend`]: Blend factor for speeding up reconciliation -* xref:reference:properties/cluster-properties.adoc#cloud_topics_reconciliation_target_fill_ratio[`cloud_topics_reconciliation_target_fill_ratio`]: Target fill ratio for L1 objects -* xref:reference:properties/cluster-properties.adoc#cloud_topics_upload_part_size[`cloud_topics_upload_part_size`]: Part size for multipart uploads -* xref:reference:properties/cluster-properties.adoc#cloud_topics_epoch_service_epoch_increment_interval[`cloud_topics_epoch_service_epoch_increment_interval`]: Interval for cluster epoch incrementation -* xref:reference:properties/cluster-properties.adoc#cloud_topics_epoch_service_local_epoch_cache_duration[`cloud_topics_epoch_service_local_epoch_cache_duration`]: Cache duration for local epoch data -* xref:reference:properties/cluster-properties.adoc#cloud_topics_long_term_garbage_collection_interval[`cloud_topics_long_term_garbage_collection_interval`]: Interval for long-term storage garbage collection -* xref:reference:properties/cluster-properties.adoc#cloud_topics_produce_batching_size_threshold[`cloud_topics_produce_batching_size_threshold`]: Object size threshold that triggers upload -* xref:reference:properties/cluster-properties.adoc#cloud_topics_produce_cardinality_threshold[`cloud_topics_produce_cardinality_threshold`]: Partition cardinality threshold that triggers upload -* xref:reference:properties/cluster-properties.adoc#cloud_topics_produce_upload_interval[`cloud_topics_produce_upload_interval`]: Time interval that triggers upload -* xref:reference:properties/cluster-properties.adoc#cloud_topics_reconciliation_interval[`cloud_topics_reconciliation_interval`]: Interval for moving data from short-term to long-term storage -* xref:reference:properties/cluster-properties.adoc#cloud_topics_short_term_gc_backoff_interval[`cloud_topics_short_term_gc_backoff_interval`]: Backoff interval for short-term storage garbage collection -* xref:reference:properties/cluster-properties.adoc#cloud_topics_short_term_gc_interval[`cloud_topics_short_term_gc_interval`]: Interval for short-term storage garbage collection -* xref:reference:properties/cluster-properties.adoc#cloud_topics_short_term_gc_minimum_object_age[`cloud_topics_short_term_gc_minimum_object_age`]: Minimum age for objects to be eligible for short-term garbage collection - -**Object storage:** - -* xref:reference:properties/object-storage-properties.adoc#cloud_storage_gc_max_segments_per_run[`cloud_storage_gc_max_segments_per_run`]: Maximum number of log segments to delete from object storage during each xref:manage:tiered-storage.adoc#object-storage-housekeeping[housekeeping run] -* xref:reference:properties/object-storage-properties.adoc#cloud_storage_prefetch_segments_max[`cloud_storage_prefetch_segments_max`]: Maximum number of small segments to prefetch during sequential reads - -**Authentication:** - -* xref:reference:properties/cluster-properties.adoc#nested_group_behavior[`nested_group_behavior`]: Control how Redpanda handles nested groups extracted from authentication tokens -* xref:reference:properties/cluster-properties.adoc#oidc_group_claim_path[`oidc_group_claim_path`]: JSON path to extract groups from the JWT payload -* xref:reference:properties/cluster-properties.adoc#schema_registry_enable_qualified_subjects[`schema_registry_enable_qualified_subjects`]: Enable parsing of qualified subject syntax in Schema Registry - -**Other:** - -* xref:reference:properties/cluster-properties.adoc#delete_topic_enable[`delete_topic_enable`]: Enable or disable topic deletion via the Kafka DeleteTopics API -* xref:reference:properties/cluster-properties.adoc#internal_rpc_request_timeout_ms[`internal_rpc_request_timeout_ms`]: Default timeout for internal RPC requests between nodes -* xref:reference:properties/cluster-properties.adoc#log_compaction_max_priority_wait_ms[`log_compaction_max_priority_wait_ms`]: Maximum time a priority partition (such as `__consumer_offsets`) waits before preempting regular compaction -* xref:reference:properties/cluster-properties.adoc#partition_autobalancing_node_autodecommission_timeout_sec[`partition_autobalancing_node_autodecommission_timeout_sec`]: Duration a node must be unavailable before Redpanda automatically decommissions it - -=== Changes to default values - -* xref:reference:properties/cluster-properties.adoc#log_compaction_tx_batch_removal_enabled[`log_compaction_tx_batch_removal_enabled`]: Changed from `false` to `true`. -* xref:reference:properties/cluster-properties.adoc#tls_v1_2_cipher_suites[`tls_v1_2_cipher_suites`]: Changed from OpenSSL cipher names to IANA cipher names. - -==== v26.1.4 - -* xref:reference:properties/cluster-properties.adoc#max_concurrent_producer_ids[`max_concurrent_producer_ids`]: Changed from unlimited to `100000` to prevent unbounded memory growth with heavy producer usage. - -* xref:reference:properties/cluster-properties.adoc#max_transactions_per_coordinator[`max_transactions_per_coordinator`]: Changed from unlimited to `10000` to prevent resource exhaustion from excessive transaction sessions. - -=== Removed properties - -The following deprecated configuration properties have been removed in v26.1.1. If you have any of these in your configuration files, update them according to the guidance below. - -**RPC timeout properties:** - -Replace with xref:reference:properties/cluster-properties.adoc#internal_rpc_request_timeout_ms[`internal_rpc_request_timeout_ms`]. - -* `alter_topic_cfg_timeout_ms` -* `create_topic_timeout_ms` -* `metadata_status_wait_timeout_ms` -* `node_management_operation_timeout_ms` -* `recovery_append_timeout_ms` -* `rm_sync_timeout_ms` -* `tm_sync_timeout_ms` -* `wait_for_leader_timeout_ms` - -**Client throughput quota properties:** - -Use xref:reference:rpk/rpk-cluster/rpk-cluster-quotas.adoc[`rpk cluster quotas`] to manage xref:manage:cluster-maintenance/manage-throughput.adoc#client-throughput-limits[client throughput limits]. - -* `kafka_admin_topic_api_rate` -* `kafka_client_group_byte_rate_quota` -* `kafka_client_group_fetch_byte_rate_quota` -* `target_fetch_quota_byte_rate` -* `target_quota_byte_rate` - -**Quota balancer properties:** - -Use xref:manage:cluster-maintenance/manage-throughput.adoc#broker-wide-throughput-limit-properties[broker-wide throughput limit properties]. - -* `kafka_quota_balancer_min_shard_throughput_bps` -* `kafka_quota_balancer_min_shard_throughput_ratio` -* `kafka_quota_balancer_node_period` -* `kafka_quota_balancer_window` -* `kafka_throughput_throttling_v2` - -**Timestamp alert properties:** - -* `log_message_timestamp_alert_after_ms`: Use xref:reference:properties/cluster-properties.adoc#log_message_timestamp_after_max_ms[`log_message_timestamp_after_max_ms`] -* `log_message_timestamp_alert_before_ms`: Use xref:reference:properties/cluster-properties.adoc#log_message_timestamp_before_max_ms[`log_message_timestamp_before_max_ms`] - -**Other removed properties:** - -No replacement needed. These properties were deprecated placeholders that have been silently ignored and will continue to be ignored even after removal. - -* `cloud_storage_disable_metadata_consistency_checks` -* `cloud_storage_reconciliation_ms` -* `coproc_max_batch_size` -* `coproc_max_inflight_bytes` -* `coproc_max_ingest_bytes` -* `coproc_offset_flush_interval_ms` -* `datalake_disk_space_monitor_interval` -* `enable_admin_api` -* `enable_coproc` -* `find_coordinator_timeout_ms` -* `full_raft_configuration_recovery_pattern` -* `id_allocator_replication` -* `kafka_memory_batch_size_estimate_for_fetch` -* `log_compaction_adjacent_merge_self_compaction_count` -* `max_version` -* `min_version` -* `raft_max_concurrent_append_requests_per_follower` -* `raft_recovery_default_read_size` -* `rm_violation_recovery_policy` -* `schema_registry_protobuf_renderer_v2` -* `seed_server_meta_topic_partitions` -* `seq_table_min_size` -* `tm_violation_recovery_policy` -* `transaction_coordinator_replication` -* `tx_registry_log_capacity` -* `tx_registry_sync_timeout_ms` -* `use_scheduling_groups` +To enable them, set xref:reference:properties/cluster-properties.adoc#health_monitor_metrics_enabled[`health_monitor_metrics_enabled`] to `true` and restart your brokers. See xref:manage:monitoring.adoc#cluster-health[Cluster health] for the available metrics and query patterns. From 7ba72fe7f02e6582d4860c6577d3ea9a246deed4 Mon Sep 17 00:00:00 2001 From: Kat Batuigas Date: Thu, 16 Jul 2026 18:04:13 -0700 Subject: [PATCH 3/8] Minor edit --- modules/manage/partials/monitor-health.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/manage/partials/monitor-health.adoc b/modules/manage/partials/monitor-health.adoc index 731bb3d019..0aadf25257 100644 --- a/modules/manage/partials/monitor-health.adoc +++ b/modules/manage/partials/monitor-health.adoc @@ -436,7 +436,7 @@ A healthy cluster has all brokers responding, a leader for every partition, and These metrics are disabled by default. When enabled, every broker periodically assembles its own view of the health overview and exposes it on the public metrics endpoint, prefixed with `redpanda_cluster_health_`. For most of these metrics, a value of `0` means healthy and any value greater than `0` indicates a problem. -NOTE: Cluster health metrics require Redpanda version 26.2.1 and later. +NOTE: Cluster health metrics require Redpanda version 26.2 and later. ==== Cluster health metrics setup From ee3e91c85cb350f3c9cb10310e4af424d8355aa3 Mon Sep 17 00:00:00 2001 From: Kat Batuigas Date: Tue, 21 Jul 2026 18:21:22 -0700 Subject: [PATCH 4/8] Add new metrics reference --- .../pages/public-metrics-reference.adoc | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/modules/reference/pages/public-metrics-reference.adoc b/modules/reference/pages/public-metrics-reference.adoc index 3b1ce767a9..f8d1070ece 100644 --- a/modules/reference/pages/public-metrics-reference.adoc +++ b/modules/reference/pages/public-metrics-reference.adoc @@ -92,6 +92,104 @@ endif::[] --- +ifndef::env-cloud[] +=== redpanda_cluster_health_bytes_in_cloud_storage + +Bytes stored in object storage. Informational; `0` if Tiered Storage isn't enabled. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_cluster_size + +Number of known cluster members. Informational. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_high_disk_usage_nodes + +Number of brokers past the storage-space alert threshold. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_leaderless_partitions + +Number of partitions without a leader. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_metadata_age_seconds + +Seconds since the last successful refresh on the broker. Reports a very large value before the first refresh so that staleness alerts fire. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_no_elected_controller + +`1` if no controller is elected, otherwise `0`. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_no_health_report + +`1` if the most recent refresh attempt failed, otherwise `0`. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_nodes_down + +Number of brokers not responding to liveness checks. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_nodes_in_recovery_mode + +Number of brokers in recovery mode. Informational; does not affect the health verdict. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_refreshes_total + +Number of successful refreshes on the broker. + +*Type*: counter + +--- + +=== redpanda_cluster_health_under_replicated_partitions + +Number of partitions that are not fully replicated. + +*Type*: gauge + +--- + +=== redpanda_cluster_health_unhealthy_reasons + +Number of reasons the cluster is currently unhealthy. `0` means healthy. + +*Type*: gauge + +--- +endif::[] + === redpanda_cluster_latest_cluster_metadata_manifest_age The amount of time in seconds since the last time Redpanda uploaded metadata files to Tiered Storage for your cluster. A value of `0` indicates metadata has not yet been uploaded. From d04e2fae38263ffcd6f234f78fb42c5430f4125f Mon Sep 17 00:00:00 2001 From: Kat Batuigas Date: Tue, 21 Jul 2026 18:26:54 -0700 Subject: [PATCH 5/8] Review pass --- modules/manage/partials/monitor-health.adoc | 14 +++++++------- .../reference/pages/public-metrics-reference.adoc | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/manage/partials/monitor-health.adoc b/modules/manage/partials/monitor-health.adoc index 0aadf25257..b4953520cc 100644 --- a/modules/manage/partials/monitor-health.adoc +++ b/modules/manage/partials/monitor-health.adoc @@ -436,9 +436,9 @@ A healthy cluster has all brokers responding, a leader for every partition, and These metrics are disabled by default. When enabled, every broker periodically assembles its own view of the health overview and exposes it on the public metrics endpoint, prefixed with `redpanda_cluster_health_`. For most of these metrics, a value of `0` means healthy and any value greater than `0` indicates a problem. -NOTE: Cluster health metrics require Redpanda version 26.2 and later. +NOTE: Cluster health metrics require Redpanda version 26.2 or later. -==== Cluster health metrics setup +==== Enable cluster health metrics Set xref:reference:properties/cluster-properties.adoc#health_monitor_metrics_enabled[`health_monitor_metrics_enabled`] to `true`. This property requires a broker restart to take effect. @@ -514,19 +514,19 @@ Each broker refreshes the metrics on an interval of 10 times xref:reference:prop ==== Available metrics -Redpanda emits two groups of metrics, both prefixed `redpanda_cluster_health_` on the public metrics endpoint and reported once per broker. The overview metrics appear on a broker as soon as it assembles a usable view of the cluster, typically a few seconds after start-up. +Redpanda emits two groups of metrics on the public metrics endpoint, both prefixed `redpanda_cluster_health_` and reported once per broker. The freshness metrics (`redpanda_cluster_health_metadata_age_seconds` and `redpanda_cluster_health_refreshes_total`) appear as soon as you enable the feature, so you can confirm that refreshes are running. The overview metrics, which are all the others, appear on a broker once it assembles a usable view of the cluster, typically a few seconds after start-up. [cols="2a,1,3"] |=== |Metric |Type |Description -|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_unhealthy_reasons[`redpanda_cluster_health_unhealthy_reasons`] |gauge |Number of reasons the cluster is currently unhealthy. `0` means healthy. -|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_no_elected_controller[`redpanda_cluster_health_no_elected_controller`] |gauge |`1` if no controller is elected, otherwise `0`. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_unhealthy_reasons[`redpanda_cluster_health_unhealthy_reasons`] |gauge |Number of reasons the cluster is currently unhealthy. A value of `0` means healthy. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_no_elected_controller[`redpanda_cluster_health_no_elected_controller`] |gauge |Reports `1` if no controller is elected, otherwise `0`. |xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_nodes_down[`redpanda_cluster_health_nodes_down`] |gauge |Number of brokers not responding to liveness checks. |xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_leaderless_partitions[`redpanda_cluster_health_leaderless_partitions`] |gauge |Number of partitions without a leader. |xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_under_replicated_partitions[`redpanda_cluster_health_under_replicated_partitions`] |gauge |Number of partitions that are not fully replicated. |xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_high_disk_usage_nodes[`redpanda_cluster_health_high_disk_usage_nodes`] |gauge |Number of brokers past the storage-space alert threshold. -|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_no_health_report[`redpanda_cluster_health_no_health_report`] |gauge |`1` if the most recent refresh attempt failed, otherwise `0`. +|xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_no_health_report[`redpanda_cluster_health_no_health_report`] |gauge |Reports `1` if the most recent refresh attempt failed, otherwise `0`. |xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_cluster_size[`redpanda_cluster_health_cluster_size`] |gauge |Number of known cluster members. Informational. |xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_nodes_in_recovery_mode[`redpanda_cluster_health_nodes_in_recovery_mode`] |gauge |Number of brokers in recovery mode. Informational; does not affect the health verdict. |xref:reference:public-metrics-reference.adoc#redpanda_cluster_health_bytes_in_cloud_storage[`redpanda_cluster_health_bytes_in_cloud_storage`] |gauge |Bytes stored in object storage. Informational; `0` if Tiered Storage isn't enabled. @@ -565,7 +565,7 @@ This join returns a value only while some broker is the controller leader. If no sum(redpanda_raft_leader_for{namespace="redpanda",topic="controller",partition="0"}) == 0 ---- -During a controller election there is a brief window where no broker is the leader and the joined series drops out. Use a `for` duration of at least one minute on these alerts to ride through normal elections. +A controller election creates a brief window where no broker is the leader, and the joined series drops out. Use a `for` duration of at least one minute on these alerts to ride through normal elections. endif::[] [[consumers]] diff --git a/modules/reference/pages/public-metrics-reference.adoc b/modules/reference/pages/public-metrics-reference.adoc index f8d1070ece..84dd71f067 100644 --- a/modules/reference/pages/public-metrics-reference.adoc +++ b/modules/reference/pages/public-metrics-reference.adoc @@ -135,7 +135,7 @@ Seconds since the last successful refresh on the broker. Reports a very large va === redpanda_cluster_health_no_elected_controller -`1` if no controller is elected, otherwise `0`. +Reports `1` if no controller is elected, otherwise `0`. *Type*: gauge @@ -143,7 +143,7 @@ Seconds since the last successful refresh on the broker. Reports a very large va === redpanda_cluster_health_no_health_report -`1` if the most recent refresh attempt failed, otherwise `0`. +Reports `1` if the most recent refresh attempt failed, otherwise `0`. *Type*: gauge @@ -183,7 +183,7 @@ Number of partitions that are not fully replicated. === redpanda_cluster_health_unhealthy_reasons -Number of reasons the cluster is currently unhealthy. `0` means healthy. +Number of reasons the cluster is currently unhealthy. A value of `0` means healthy. *Type*: gauge From 28afb806e1de34adc23a6c9e210c7453ec5aa4cc Mon Sep 17 00:00:00 2001 From: Kat Batuigas Date: Thu, 23 Jul 2026 14:05:17 -0700 Subject: [PATCH 6/8] Apply suggestions from SME review --- modules/manage/partials/monitor-health.adoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/manage/partials/monitor-health.adoc b/modules/manage/partials/monitor-health.adoc index b4953520cc..e564840d01 100644 --- a/modules/manage/partials/monitor-health.adoc +++ b/modules/manage/partials/monitor-health.adoc @@ -10,7 +10,7 @@ endif::[] This section provides guidelines and example queries using Redpanda's public metrics to optimize your system's performance and monitor its health. -To help detect and mitigate anomalous system behaviors, capture baseline metrics of your healthy system at different stages (at start-up, under high load, in steady state) so you can set thresholds and alerts according to those baselines. +To help detect and mitigate anomalous system behaviors, capture baseline metrics of your healthy system at different stages (at startup, under high load, in steady state) so you can set thresholds and alerts according to those baselines. [TIP] ==== @@ -432,7 +432,7 @@ ifndef::env-cloud[] [[cluster-health]] === Cluster health -A healthy cluster has all brokers responding, a leader for every partition, and an elected controller. Redpanda can export this cluster health summary as a set of Prometheus metrics, so you can alert on overall cluster health from your metrics system instead of polling xref:reference:rpk/rpk-cluster/rpk-cluster-health.adoc[`rpk cluster health`] or the link:/api/doc/admin/operation/operation-get_cluster_health_overview[health overview Admin API]. +A healthy cluster has all brokers responding, a leader for every partition, and an elected controller. Redpanda continuously assembles these signals into a cluster health summary. Redpanda can export this summary as a set of Prometheus metrics, so you can alert on overall cluster health from your metrics system instead of polling xref:reference:rpk/rpk-cluster/rpk-cluster-health.adoc[`rpk cluster health`] or the link:/api/doc/admin/operation/operation-get_cluster_health_overview[health overview Admin API]. These metrics are disabled by default. When enabled, every broker periodically assembles its own view of the health overview and exposes it on the public metrics endpoint, prefixed with `redpanda_cluster_health_`. For most of these metrics, a value of `0` means healthy and any value greater than `0` indicates a problem. @@ -510,11 +510,11 @@ helm upgrade --install redpanda redpanda/redpanda \ ====== endif::[] -Each broker refreshes the metrics on an interval of 10 times xref:reference:properties/cluster-properties.adoc#health_monitor_max_metadata_age[`health_monitor_max_metadata_age`] (100 seconds by default). Enabling the metrics increases CPU usage and network traffic, so capture a baseline before and after you turn them on. +Each broker refreshes the metrics on an interval of 10 times xref:reference:properties/cluster-properties.adoc#health_monitor_max_metadata_age[`health_monitor_max_metadata_age`] (100 seconds by default). Enabling the metrics causes a modest increase in CPU usage and network traffic. ==== Available metrics -Redpanda emits two groups of metrics on the public metrics endpoint, both prefixed `redpanda_cluster_health_` and reported once per broker. The freshness metrics (`redpanda_cluster_health_metadata_age_seconds` and `redpanda_cluster_health_refreshes_total`) appear as soon as you enable the feature, so you can confirm that refreshes are running. The overview metrics, which are all the others, appear on a broker once it assembles a usable view of the cluster, typically a few seconds after start-up. +Redpanda emits two groups of metrics on the public metrics endpoint, both prefixed `redpanda_cluster_health_` and reported once per broker. The freshness metrics (`redpanda_cluster_health_metadata_age_seconds` and `redpanda_cluster_health_refreshes_total`) appear as soon as you enable the feature, so you can confirm that refreshes are running. The overview metrics, which are all the others, appear on a broker after it assembles a usable view of the cluster, typically a few seconds after startup. [cols="2a,1,3"] |=== @@ -565,7 +565,7 @@ This join returns a value only while some broker is the controller leader. If no sum(redpanda_raft_leader_for{namespace="redpanda",topic="controller",partition="0"}) == 0 ---- -A controller election creates a brief window where no broker is the leader, and the joined series drops out. Use a `for` duration of at least one minute on these alerts to ride through normal elections. +A controller election creates a brief window where no broker is the leader, and the joined series drops out. To avoid spurious alerts during these normal elections, configure the alerts to fire only after the metric has been non-zero for at least one minute (for example, with a Prometheus `for` duration of `1m`). endif::[] [[consumers]] From 5bfa1b89682eb705f7cfecb4cc3f65455b52a232 Mon Sep 17 00:00:00 2001 From: Kat Batuigas Date: Thu, 23 Jul 2026 14:13:41 -0700 Subject: [PATCH 7/8] Minor edit --- modules/manage/partials/monitor-health.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/manage/partials/monitor-health.adoc b/modules/manage/partials/monitor-health.adoc index e564840d01..3a28894ae7 100644 --- a/modules/manage/partials/monitor-health.adoc +++ b/modules/manage/partials/monitor-health.adoc @@ -432,7 +432,7 @@ ifndef::env-cloud[] [[cluster-health]] === Cluster health -A healthy cluster has all brokers responding, a leader for every partition, and an elected controller. Redpanda continuously assembles these signals into a cluster health summary. Redpanda can export this summary as a set of Prometheus metrics, so you can alert on overall cluster health from your metrics system instead of polling xref:reference:rpk/rpk-cluster/rpk-cluster-health.adoc[`rpk cluster health`] or the link:/api/doc/admin/operation/operation-get_cluster_health_overview[health overview Admin API]. +A healthy cluster has all brokers responding, a leader for every partition, and an elected controller. Redpanda continuously assembles these signals into a cluster health summary. Redpanda can export this summary as a set of <>, so you can alert on overall cluster health from your metrics system instead of polling xref:reference:rpk/rpk-cluster/rpk-cluster-health.adoc[`rpk cluster health`] or the link:/api/doc/admin/operation/operation-get_cluster_health_overview[health overview Admin API]. These metrics are disabled by default. When enabled, every broker periodically assembles its own view of the health overview and exposes it on the public metrics endpoint, prefixed with `redpanda_cluster_health_`. For most of these metrics, a value of `0` means healthy and any value greater than `0` indicates a problem. From 5f38fd10859cec149c0c815d563312508c45d776 Mon Sep 17 00:00:00 2001 From: Kat Batuigas Date: Fri, 24 Jul 2026 11:12:15 -0700 Subject: [PATCH 8/8] Apply suggestion from SME review --- modules/manage/partials/monitor-health.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/manage/partials/monitor-health.adoc b/modules/manage/partials/monitor-health.adoc index 3a28894ae7..87f23468f9 100644 --- a/modules/manage/partials/monitor-health.adoc +++ b/modules/manage/partials/monitor-health.adoc @@ -510,7 +510,7 @@ helm upgrade --install redpanda redpanda/redpanda \ ====== endif::[] -Each broker refreshes the metrics on an interval of 10 times xref:reference:properties/cluster-properties.adoc#health_monitor_max_metadata_age[`health_monitor_max_metadata_age`] (100 seconds by default). Enabling the metrics causes a modest increase in CPU usage and network traffic. +By default, each broker refreshes the metrics every 100 seconds. This interval is 10 times the value of xref:reference:properties/cluster-properties.adoc#health_monitor_max_metadata_age[`health_monitor_max_metadata_age`]. Enabling the metrics causes a modest increase in CPU usage and network traffic. ==== Available metrics