This is an automated email from the ASF dual-hosted git repository.
yunhong pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss.git
The following commit(s) were added to refs/heads/main by this push:
new 62a49a248 [metric] add bucket and partition count metric for table
(#2800)
62a49a248 is described below
commit 62a49a248d3ca370be80ef582da73d28db19df49
Author: xiaozhou <[email protected]>
AuthorDate: Fri Mar 6 13:35:45 2026 +0800
[metric] add bucket and partition count metric for table (#2800)
---
.../server/metrics/group/CoordinatorMetricGroup.java | 17 +++++++++++++++++
.../org/apache/fluss/server/replica/ReplicaManager.java | 2 +-
.../docs/maintenance/observability/monitor-metrics.md | 17 ++++++++++++++---
3 files changed, 32 insertions(+), 4 deletions(-)
diff --git
a/fluss-server/src/main/java/org/apache/fluss/server/metrics/group/CoordinatorMetricGroup.java
b/fluss-server/src/main/java/org/apache/fluss/server/metrics/group/CoordinatorMetricGroup.java
index 4045fbae7..72ff328a7 100644
---
a/fluss-server/src/main/java/org/apache/fluss/server/metrics/group/CoordinatorMetricGroup.java
+++
b/fluss-server/src/main/java/org/apache/fluss/server/metrics/group/CoordinatorMetricGroup.java
@@ -21,6 +21,7 @@ import org.apache.fluss.metadata.PhysicalTablePath;
import org.apache.fluss.metadata.TableBucket;
import org.apache.fluss.metadata.TablePath;
import org.apache.fluss.metrics.CharacterFilter;
+import org.apache.fluss.metrics.MetricNames;
import org.apache.fluss.metrics.groups.AbstractMetricGroup;
import org.apache.fluss.metrics.groups.MetricGroup;
import org.apache.fluss.metrics.registry.MetricRegistry;
@@ -33,6 +34,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import static org.apache.fluss.metrics.utils.MetricGroupUtils.makeScope;
@@ -146,6 +148,9 @@ public class CoordinatorMetricGroup extends
AbstractMetricGroup {
this.tablePath = tablePath;
this.registry = registry;
+
+ // Register table-level metrics
+ registerTableMetrics();
}
@Override
@@ -200,6 +205,18 @@ public class CoordinatorMetricGroup extends
AbstractMetricGroup {
SimpleBucketMetricGroup metricGroup = buckets.remove(tb);
metricGroup.close();
}
+
+ private void registerTableMetrics() {
+ gauge(MetricNames.BUCKET_COUNT, buckets::size);
+ gauge(
+ MetricNames.PARTITION_COUNT,
+ () ->
+ buckets.keySet().stream()
+ .map(TableBucket::getPartitionId)
+ .filter(Objects::nonNull)
+ .distinct()
+ .count());
+ }
}
/** The metric group for bucket. */
diff --git
a/fluss-server/src/main/java/org/apache/fluss/server/replica/ReplicaManager.java
b/fluss-server/src/main/java/org/apache/fluss/server/replica/ReplicaManager.java
index eea783dba..c891e5d3d 100644
---
a/fluss-server/src/main/java/org/apache/fluss/server/replica/ReplicaManager.java
+++
b/fluss-server/src/main/java/org/apache/fluss/server/replica/ReplicaManager.java
@@ -414,7 +414,7 @@ public class ReplicaManager {
/**
* Receive a request to make these replicas to become leader or follower,
if the replica doesn't
- * exit, we will create it.
+ * exist, we will create it.
*/
public void becomeLeaderOrFollower(
int requestCoordinatorEpoch,
diff --git a/website/docs/maintenance/observability/monitor-metrics.md
b/website/docs/maintenance/observability/monitor-metrics.md
index bf62746b4..58d0fdaaa 100644
--- a/website/docs/maintenance/observability/monitor-metrics.md
+++ b/website/docs/maintenance/observability/monitor-metrics.md
@@ -294,7 +294,7 @@ Some metrics might not be exposed when using other JVM
implementations (e.g. IBM
</thead>
<tbody>
<tr>
- <th rowspan="15"><strong>coordinator</strong></th>
+ <th rowspan="17"><strong>coordinator</strong></th>
<td style={{textAlign: 'center', verticalAlign: 'middle' }}
rowspan="8">-</td>
<td>activeCoordinatorCount</td>
<td>The number of active CoordinatorServer in this cluster.</td>
@@ -361,16 +361,27 @@ Some metrics might not be exposed when using other JVM
implementations (e.g. IBM
<td>remoteKvSize</td>
<td>The physical storage size of remote KV store.</td>
<td>Gauge</td>
+ </tr>
+ <tr>
+ <td rowspan="2">table</td>
+ <td>bucketCount</td>
+ <td>The number of buckets of each table.</td>
+ <td>Gauge</td>
+ </tr>
+ <tr>
+ <td>partitionCount</td>
+ <td>The number of partitions of each table.</td>
+ <td>Gauge</td>
</tr>
<tr>
<td rowspan="2">table_bucket</td>
<td>numKvSnapshots</td>
- <td>number of kv snapshots of each table bucket.</td>
+ <td>The number of kv snapshots of each table bucket.</td>
<td>Gauge</td>
</tr>
<tr>
<td>allKvSnapshotSize</td>
- <td>all kv snapshot size of each table bucket.</td>
+ <td>All kv snapshot size of each table bucket.</td>
<td>Gauge</td>
</tr>
</tbody>