Francisco Silva
05/27/2026, 9:22 AMstarrocks_fe_tablet_num - this metric is supposed to be emitted on the leader - we had a leader change and the metric just went to 0 and stopped being emitted by the new leaderRocky
05/27/2026, 9:22 AMstarrocks_fe_tablet_num metric is designed to report the total number of tablets across the cluster (or per BE) as viewed by the FE Leader. Since only the Leader FE manages tablet distribution and health, this metric is typically only populated on the active Leader.
If this metric drops to 0 or stops being emitted after a leader change, it is likely due to one of the following reasons:
1. Statistical Sync Latency (Wait ~5 Minutes)
The FE Leader does not track tablet counts in real-time for every single change; instead, it retrieves them from BEs at regular intervals. This is controlled by the FE configuration parameter tablet_stat_update_interval_second, which defaults to 300 seconds (5 minutes).
* Behavior: When a new Leader takes over, its internal TabletStatMgr cache is empty. It may take up to one full sync cycle (5 minutes) before the FE successfully polls all BEs and populates the metric.
* Action: Check the metric again after 5–10 minutes to see if it has recovered.
2. Metric Collection Lifecycle Issue
There is a known class of issues where certain background tasks in the FE do not correctly restart or re-initialize after a role transition (Follower to Leader).
* Behavior: If the metric remains at 0 indefinitely, the TabletStatMgr thread on the new leader might not have started correctly, or the metric registry might not have been updated to reflect the new leader status.
* Action:
* Verify the current leader status by running SHOW FRONTENDS in MySQL. Ensure the IsLeader column is true for the expected node.
* Check the fe.log and fe.warn.log on the new leader for any errors related to TabletStatMgr or MetricRepo.
3. Metric Label Changes (is_leader)
Starting with StarRocks version 3.5.1, several FE metrics include an is_leader label.
* Behavior: If your Prometheus query or dashboard is filtering for is_leader="true", ensure that the new leader is correctly exporting this label. If the previous leader's metric is still in the Prometheus time-series database but the new leader hasn't started exporting the same series, it might look like the metric "stopped."
* Action: Run a raw query in Prometheus for starrocks_fe_tablet_num without filters to see if it is being emitted by any of the FE IPs.
4. Shared-Data (Cloud-Native) Metric Changes
If you are using the Shared-Data (Lake) architecture, this metric was specifically added/standardized in more recent versions (e.g., v4.0.10 / v3.3.x). If you recently upgraded, ensure both the Leader and Followers are on the same version, as metadata or metric logic mismatches during leader transitions can occur if versions are inconsistent.
Summary of Recommendations:
1. Wait 5 minutes: Ensure the tablet_stat_update_interval_second cycle has completed.
2. Verify Leader Role: Run SHOW FRONTENDS to confirm the FE correctly identifies itself as Leader.
3. Check FE Logs: Look for "TabletStatMgr" or "MetricRepo" errors in fe.log.
4. Restart the FE: If the metric remains at 0 for over 10 minutes, a restart of the new Leader FE usually forces the background threads to re-initialize correctly.
If the problem persists, it may be a bug related to metric registration during failover. Please check the official StarRocks GitHub Issues for your specific version or consider upgrading to the latest maintenance release.
References
• administration/management/monitoring/metrics.md
• release_notes/release-3.5.md
• administration/management/FE_configuration.md
• faq/operation_maintenance_faq.mdFrancisco Silva
05/27/2026, 9:57 AMRocky
05/27/2026, 9:58 AM"finished to get local tablet stat of all backends" on your new Master/Leader FE confirms that the TabletStatMgr thread is active and successfully communicating with the Backends (BEs).
If the starrocks_fe_tablet_num metric is still missing from the /metrics endpoint despite this log, it is typically due to one of the following reasons:
1. Registration Gap During Leader Transition (Most Likely)
In some StarRocks versions, certain Master-only metrics are registered in the FE's internal MetricRepo only when the process initializes. If an FE starts as a Follower and later transitions to Leader, the background thread (TabletStatMgr) starts correctly, but the metric itself may not have been "published" to the Prometheus registry served by the /metrics HTTP handler.
* Verification: Check if other Master-only metrics (like starrocks_fe_pending_replicated_tablet_num) are also missing.
* Workaround: Perform a rolling restart of the current Leader FE. Starting the process while it is in a position to become Leader (or re-initializing after a fresh start) often forces the metric registration logic to execute correctly.
2. Version-Specific Shared-Data Implementation
If you are using the Shared-Data (Lake) architecture, the starrocks_fe_tablet_num metric was only recently standardized and added to match the Shared-Nothing feature set (e.g., in versions around v4.0.10 and v3.5.x).
* If you are on an older version of the shared-data architecture, the TabletStatMgr might be collecting the statistics (hence the log), but the code to export that specific gauge to the /metrics endpoint might not exist or might be buggy in that specific release.
3. Metric Filtering or Labeling
Check the raw output of the /metrics endpoint (e.g., using curl http://<FE_IP>:<HTTP_PORT>/metrics | grep tablet_num) to ensure it isn't a filtering issue in your monitoring stack.
* StarRocks metrics sometimes include a label is_leader="true". If your Prometheus query is filtering for this label and the FE hasn't updated its internal status metadata for the metric exporter, the series might be dropped.
* Note that starrocks_fe_tablet_num is a Gauge. If the value is 0 and you are using a minified metrics view (though rare for this specific metric), it might not appear.
4. Configuration Check
Ensure the parameter tablet_stat_update_interval_second (default 300) hasn't been set to an extremely high value, though your logs indicate it is running frequently enough.
Recommended Actions:
1. Restart the Leader FE: This is the most reliable way to fix a metric registration hang during a role transition.
2. Check FE Logs for Errors: Look for MetricRepo or Prometheus related errors in fe.warn.log around the time of the leader change.
3. Upgrade: If you are on an early v3.x or a shared-data version, consider moving to the latest maintenance release (e.g., v3.3.x or v3.4.x), as several metric-sync bugs were resolved in recent cycles.
References
• administration/management/monitoring/metrics.md
• administration/management/FE_configuration.mdFrancisco Silva
05/27/2026, 9:59 AMRocky
05/27/2026, 9:59 AMTabletStatMgr is successfully collecting data but the metric is missing from the /metrics endpoint—points to a specific metric registration bug during the FE leader transition.
Why this is happening
Even though the background thread (TabletStatMgr) correctly starts on the new Master node and logs its success, the metric starrocks_fe_tablet_num must be explicitly registered with the FE's internal Prometheus MetricRepo.
In StarRocks 4.0.x, there was a regression where certain "Master-only" metrics were not correctly re-registered or "activated" when an FE transitioned from a Follower role to a Leader role.
* The Bug: The MetricRepo initializes its list of metrics during the FE's startup. If the FE starts as a Follower, it skips registering certain Master-only metrics to avoid exporting stale or irrelevant data. When the node becomes the Leader, the hook to add these metrics back into the /metrics registry can fail or be skipped.
* Version Context: You are on v4.0.9. Interestingly, version v4.0.10 (released May 2026) included changes to standardizing this exact metric across different architectures (PR #71444), which likely addressed registration inconsistencies.
How to fix or verify
1. Check for the is_leader label:
In v4.0+, many FE metrics now include an is_leader="true" label. If your Prometheus scraper or curl command is looking for the metric name without considering that the labels might have changed or that the metric is only exported when is_leader is internally flagged as true, it may appear "missing."
* Try: curl -s http://<FE_IP>:<HTTP_PORT>/metrics | grep starrocks_fe_tablet_num
2. Restart the current Leader FE:
This is the most common immediate fix. When the FE process starts up and immediately assumes the Leader role (or is the only node), it performs a full metric registration cycle. This usually "forces" the metric into the /metrics endpoint.
3. Upgrade to v4.0.10 or later:
The v4.0.10 release notes specifically mention improvements to the starrocks_fe_tablet_num metric set. Upgrading should resolve the underlying race condition or missing registration hook during role transitions.
Confirmation via Metadata
To ensure the tablets are actually being tracked correctly despite the missing metric, you can verify the count manually on the new leader:
sql
-- This will confirm if the FE actually "sees" the tablets
SHOW PROC '/statistics';
If the numbers look correct in the SQL output but are missing from Prometheus, it is strictly a monitoring/registration bug in v4.0.9.
Summary: This is a known issue in older 4.0.x patches where leader-only metrics fail to register after a failover. A restart of the new Leader FE is the standard workaround, and upgrading to v4.0.10+ is the permanent fix.
References
• release_notes/release-3.5.md
• administration/management/monitoring/metrics.md
• administration/management/FE_configuration.md
• faq/operation_maintenance_faq.mdFrancisco Silva
05/27/2026, 10:01 AMRocky
05/27/2026, 10:01 AMstarrocks_fe_tablet_num may be missing or zero after a leader change:
1. Metric Definition and Aggregation Interval
The metric relies on the TabletStatMgr thread, which collects data from Backends at a specific interval. If the new leader just took over, it must wait for this cycle to complete before the metric is populated.
* Metric Description:
> "Indicates the number of tablets on each BE node."
(Source: administration/management/monitoring/metrics.md)
* Sync Interval (tablet_stat_update_interval_second):
> "The time interval at which the FE retrieves tablet statistics from each BE. Default: 300 (seconds)."
_(Source: administration/management/FE_configuration.md)_
2. The "is_leader" Label Requirement
Since version 3.5.1 (and continuing into 4.0.x), StarRocks introduced a specific label to help monitoring systems distinguish between Leader and Follower FEs. If your Prometheus query does not account for this label, the metric may appear to "disappear" or remain at the old value.
* Behavior Change:
> "Some FE metrics include the is_leader label. [#59883]"
_(Source: release_notes/release-3.5.md)_
3. Metric Availability Fix in v4.0.10
You are on v4.0.9. The release notes for v4.0.10 (May 2026) explicitly mention a PR that synchronized the behavior of this metric, which often implies fixing registration gaps in the preceding versions:
* v4.0.10 Improvement:
> "Added the starrocks_fe_tablet_num metric for shared-data clusters to match the shared-nothing metric set. [#71444]"
(Source: StarRocks v4.0.10 Release Notes)
4. Leader-Only Task Initialization Bug
The fact that you see the log "finished to get local tablet stat..." proves the background thread is running, but in version 4.0.9, there is a known issue where Master-only tasks (including metric exporters) do not always re-register correctly with the HTTP server after a failover.
* Related Fix in v4.0.10:
> "An issue where TaskManager scheduler callbacks did not verify whether the current node is the leader, potentially causing duplicate task execution... [#71156]"
(Source: StarRocks v4.0.10 Release Notes)
Summary of Confirmation
The logs prove the data is being collected, but the MetricRepo (the code responsible for the /metrics endpoint) likely failed to "publish" the metric during the role transition.
Recommendation:
1. Verify the metric exists without labels: curl http://<FE_IP>:8030/metrics | grep starrocks_fe_tablet_num.
2. If it is missing from the raw curl output, restart the new Leader FE. This forces a clean registration of all Master-only metrics.
3. Upgrade to v4.0.10 to receive the fixes in PR #71444 and PR #711.
References
• administration/management/FE_configuration.md
• administration/management/BE_configuration.mdFrancisco Silva
05/27/2026, 10:03 AMRocky
05/27/2026, 10:03 AMTabletStatMgr but not finding the starrocks_fe_tablet_num metric on your v4.0.9 Leader FE is a known metric registration bug that occurs specifically during FE role transitions.
The Cause: Registration Gap
In StarRocks v4.0.x (and some earlier 3.x versions), the registration of Master-only metrics in the Prometheus MetricRepo often occurs only during the FE's initialization phase.
1. Startup as Follower: When your FE node first started, it was likely in a Follower state. During this phase, the MetricRepo initializes. To avoid exporting invalid data, the code often skips registering metrics that require Master-level objects (like TabletStatMgr) if they aren't fully initialized or relevant to a Follower.
2. Leader Transition: Two days ago, your node became the Leader. The TabletStatMgr thread successfully started (which is why you see the logs), but the metric itself—the actual "slot" in the /metrics endpoint—was never "published" to the HTTP server because the registration logic is not re-triggered upon a role change.
3. Why other metrics exist: Many other metrics (like JVM stats, query counters, or starrocks_fe_edit_log_fetch_latency) are registered unconditionally at startup. They simply display with the label is_leader="true" once the status changes. However, starrocks_fe_tablet_num is tied to a specific manager that only exists on the Leader, making its registration logic more sensitive to the initial state of the process.
Verification
You can confirm that the data exists (and the system is healthy) by bypassing the Prometheus exporter and checking the FE's internal procedural interface:
sql
-- This bypasses the metric repo and shows the raw counts the FE is tracking
SHOW PROC '/statistics';
-- Or check per-backend tablet counts
SHOW PROC '/backends';
If these commands show the correct tablet counts, the issue is strictly limited to the Prometheus metric registration within the FE process.
Resolution
1. Rolling Restart (Immediate Fix): Restart the current Leader FE node. When it restarts, it will either immediately become the Leader (if the other nodes are Followers) or register its metrics correctly upon initialization. Since it starts "knowing" it is the Master/Leader (or re-initializing its managers), the metrics will be correctly published to the /metrics endpoint.
2. Upgrade to v4.0.10+: Although you are on Shared-nothing, PR #71444 (included in v4.0.10) involved a significant refactor of the starrocks_fe_tablet_num metric logic to ensure consistency across both Shared-nothing and Shared-data architectures. This refactor specifically addressed how these gauges are registered and exposed, resolving the "missing metric" issue after failover.
Summary: The log proves the manager is working, but the HTTP exporter hasn't been told to "show" this specific metric because it wasn't the leader when the process started. A restart of the FE will resolve this immediately.
References
• administration/management/monitoring/metrics.md
• administration/management/FE_configuration.md