This is an automated email from the ASF dual-hosted git repository.

gongchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new 4228605a3 [improve] Jexl validation rule enhancements (#3821)
4228605a3 is described below

commit 4228605a3db76692cea31212117def97b3926581
Author: Duansg <[email protected]>
AuthorDate: Sun Oct 19 23:08:19 2025 +0800

    [improve] Jexl validation rule enhancements (#3821)
    
    Co-authored-by: Tomsun28 <[email protected]>
---
 .../common/constants/JexlKeywordsEnum.java         | 45 +++++++++++++-----
 .../JexlCheckerUtil.java}                          | 54 +++++++++-------------
 .../manager/service/impl/AppServiceImpl.java       | 50 ++++++++++++--------
 .../manager/service/impl/MonitorServiceImpl.java   | 12 ++++-
 .../src/main/resources/define/app-kafka_client.yml |  4 +-
 .../src/main/resources/define/app-pulsar.yml       | 42 ++++++++---------
 .../hertzbeat/manager/script/YamlCheckScript.java  | 15 ++++--
 home/docs/community/maturity.md                    | 40 ++++++++--------
 home/docs/help/kafka_client.md                     |  4 +-
 home/docs/help/pulsar.md                           |  4 +-
 .../current/community/maturity.md                  |  2 +-
 .../current/help/kafka_client.md                   |  4 +-
 .../current/help/pulsar.md                         |  4 +-
 .../version-v1.6.x/help/kafka_client.md            |  4 +-
 .../version-v1.6.x/help/pulsar.md                  |  4 +-
 .../version-v1.6.x/help/kafka_client.md            |  4 +-
 home/versioned_docs/version-v1.6.x/help/pulsar.md  |  4 +-
 17 files changed, 165 insertions(+), 131 deletions(-)

diff --git 
a/hertzbeat-common/src/main/java/org/apache/hertzbeat/common/constants/JexlKeywordsEnum.java
 
b/hertzbeat-common/src/main/java/org/apache/hertzbeat/common/constants/JexlKeywordsEnum.java
index f54103ca0..13f4c9d82 100644
--- 
a/hertzbeat-common/src/main/java/org/apache/hertzbeat/common/constants/JexlKeywordsEnum.java
+++ 
b/hertzbeat-common/src/main/java/org/apache/hertzbeat/common/constants/JexlKeywordsEnum.java
@@ -24,23 +24,46 @@ import java.util.Arrays;
  */
 public enum JexlKeywordsEnum {
 
-    SIZE("size"),
-    EMPTY("empty"),
+    /**
+     * Official reserved keywords
+     * @reference 
https://commons.apache.org/proper/commons-jexl/reference/syntax.html
+     */
+    OR("or"),
+    AND("and"),
+    EQ("eq"),
+    NE("ne"),
+    LT("lt"),
+    GT("gt"),
+    LE("le"),
+    GE("ge"),
+    DIV("div"),
+    MOD("mod"),
+    NOT("not"),
+    NULL("null"),
+    TRUE("true"),
+    FALSE("false"),
     NEW("new"),
     VAR("var"),
+    DO("do"),
+    WHILE("while"),
+    BREAK("break"),
+    CONTINUE("continue"),
+    FUNCTION("function"),
     RETURN("return"),
+
+    /**
+     * Syntax-reserved keywords
+     */
     IF("if"),
     ELSE("else"),
-    ELSEIF("elseif"),
-    WHILE("while"),
-    DO("do"),
     FOR("for"),
-    CONTINUE("continue"),
-    BREAK("break"),
-    TRUE("true"),
-    FALSE("false"),
-    NULL("null"),
-    UNDEFINED("undefined");
+
+    /**
+     * Built-in functions reserve keywords
+     */
+    SIZE("size"),
+    EMPTY("empty");
+
 
     private final String keyword;
 
diff --git 
a/hertzbeat-common/src/main/java/org/apache/hertzbeat/common/constants/JexlKeywordsEnum.java
 
b/hertzbeat-common/src/main/java/org/apache/hertzbeat/common/util/JexlCheckerUtil.java
similarity index 50%
copy from 
hertzbeat-common/src/main/java/org/apache/hertzbeat/common/constants/JexlKeywordsEnum.java
copy to 
hertzbeat-common/src/main/java/org/apache/hertzbeat/common/util/JexlCheckerUtil.java
index f54103ca0..223958cd4 100644
--- 
a/hertzbeat-common/src/main/java/org/apache/hertzbeat/common/constants/JexlKeywordsEnum.java
+++ 
b/hertzbeat-common/src/main/java/org/apache/hertzbeat/common/util/JexlCheckerUtil.java
@@ -15,48 +15,36 @@
  * limitations under the License.
  */
 
-package org.apache.hertzbeat.common.constants;
+package org.apache.hertzbeat.common.util;
 
-import java.util.Arrays;
+import org.apache.hertzbeat.common.constants.JexlKeywordsEnum;
 
 /**
- * Jexl keywords enum
+ * Validate JEXL rules
  */
-public enum JexlKeywordsEnum {
+public class JexlCheckerUtil {
 
-    SIZE("size"),
-    EMPTY("empty"),
-    NEW("new"),
-    VAR("var"),
-    RETURN("return"),
-    IF("if"),
-    ELSE("else"),
-    ELSEIF("elseif"),
-    WHILE("while"),
-    DO("do"),
-    FOR("for"),
-    CONTINUE("continue"),
-    BREAK("break"),
-    TRUE("true"),
-    FALSE("false"),
-    NULL("null"),
-    UNDEFINED("undefined");
+    public static final String SPACES_REGEX = "^\\S+(?:\\s+\\S+)+$";
 
-    private final String keyword;
-
-    JexlKeywordsEnum(String keyword) {
-        this.keyword = keyword;
+    /**
+     * Verify Keyword Information
+     */
+    public static boolean verifyKeywords(String str) {
+        return JexlKeywordsEnum.match(str);
     }
 
-    public String getKeyword() {
-        return keyword;
+    /**
+     * Verify the starting character
+     */
+    public static boolean verifyStartCharacter(String str) {
+        char c = str.charAt(0);
+        return !((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '_' 
|| c == '$');
     }
 
-    public static boolean match(String word) {
-        if (word == null || word.trim().isEmpty()) {
-            return false;
-        }
-        return Arrays.stream(values()).anyMatch(t -> t.keyword.equals(word));
+    /**
+     * Verify contains spaces
+     */
+    public static boolean verifySpaces(String str) {
+        return str.trim().matches(SPACES_REGEX);
     }
-
 }
\ No newline at end of file
diff --git 
a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/AppServiceImpl.java
 
b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/AppServiceImpl.java
index df539570d..007092b7f 100644
--- 
a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/AppServiceImpl.java
+++ 
b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/AppServiceImpl.java
@@ -17,31 +17,12 @@
 
 package org.apache.hertzbeat.manager.service.impl;
 
-import static java.util.Objects.isNull;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
-import javax.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hertzbeat.collector.dispatch.DispatchConstants;
 import org.apache.hertzbeat.collector.util.CollectUtil;
-import org.apache.hertzbeat.common.constants.JexlKeywordsEnum;
 import org.apache.hertzbeat.common.entity.job.Configmap;
 import org.apache.hertzbeat.common.entity.job.Job;
 import org.apache.hertzbeat.common.entity.job.Metrics;
@@ -53,6 +34,7 @@ import org.apache.hertzbeat.common.entity.message.CollectRep;
 import org.apache.hertzbeat.common.support.SpringContextHolder;
 import org.apache.hertzbeat.common.support.exception.CommonException;
 import org.apache.hertzbeat.common.util.CommonUtil;
+import org.apache.hertzbeat.common.util.JexlCheckerUtil;
 import org.apache.hertzbeat.manager.dao.DefineDao;
 import org.apache.hertzbeat.manager.dao.MonitorDao;
 import org.apache.hertzbeat.manager.dao.ParamDao;
@@ -74,6 +56,26 @@ import org.springframework.util.Assert;
 import org.springframework.util.StreamUtils;
 import org.yaml.snakeyaml.Yaml;
 
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
+
+import static java.util.Objects.isNull;
+
 /**
  * Monitoring Type Management Implementation
  * Temporarily stores the monitoring configuration and parameter configuration 
in memory,
@@ -459,10 +461,18 @@ public class AppServiceImpl implements AppService, 
InitializingBean {
                     throw new IllegalArgumentException(app.getApp() + " " + 
metrics.getName() + " " 
                             + field.getField() + " can not duplicated.");
                 }
-                if (JexlKeywordsEnum.match(field.getField())) {
+                if (JexlCheckerUtil.verifyKeywords(field.getField())) {
                     throw new IllegalArgumentException(app.getApp() + " " + 
metrics.getName() + " "
                             + field.getField() + " prohibited keywords.");
                 }
+                if (JexlCheckerUtil.verifyStartCharacter(field.getField())) {
+                    throw new IllegalArgumentException(app.getApp() + " " + 
metrics.getName() + " "
+                            + field.getField() + " illegal start character.");
+                }
+                if (JexlCheckerUtil.verifySpaces(field.getField())) {
+                    throw new IllegalArgumentException(app.getApp() + " " + 
metrics.getName() + " "
+                            + field.getField() + " no spaces allowed.");
+                }
                 fieldsSet.add(field.getField());
             }
         }
diff --git 
a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
 
b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
index b1c689277..bde0de1c5 100644
--- 
a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
+++ 
b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
@@ -30,7 +30,6 @@ import org.apache.hertzbeat.alert.dao.AlertDefineBindDao;
 import org.apache.hertzbeat.collector.dispatch.DispatchConstants;
 import org.apache.hertzbeat.common.constants.CommonConstants;
 import org.apache.hertzbeat.common.constants.ExportFileConstants;
-import org.apache.hertzbeat.common.constants.JexlKeywordsEnum;
 import org.apache.hertzbeat.common.constants.NetworkConstants;
 import org.apache.hertzbeat.common.constants.SignConstants;
 import org.apache.hertzbeat.common.entity.grafana.GrafanaDashboard;
@@ -50,6 +49,7 @@ import org.apache.hertzbeat.common.util.AesUtil;
 import org.apache.hertzbeat.common.util.FileUtil;
 import org.apache.hertzbeat.common.util.IntervalExpressionUtil;
 import org.apache.hertzbeat.common.util.IpDomainUtil;
+import org.apache.hertzbeat.common.util.JexlCheckerUtil;
 import org.apache.hertzbeat.common.util.JsonUtil;
 import org.apache.hertzbeat.common.util.SnowFlakeIdGenerator;
 import org.apache.hertzbeat.grafana.service.DashboardService;
@@ -464,10 +464,18 @@ public class MonitorServiceImpl implements MonitorService 
{
                     continue;
                 }
                 for (Metrics.Field field : metrics.getFields()) {
-                    if (JexlKeywordsEnum.match(field.getField())) {
+                    if (JexlCheckerUtil.verifyKeywords(field.getField())) {
                         throw new IllegalArgumentException(job.getApp() + " " 
+ metrics.getName() + " "
                                 + field.getField() + " prohibited keywords, 
please modify the template information.");
                     }
+                    if 
(JexlCheckerUtil.verifyStartCharacter(field.getField())) {
+                        throw new IllegalArgumentException(job.getApp() + " " 
+ metrics.getName() + " "
+                                + field.getField() + " illegal start 
character, please modify the template information.");
+                    }
+                    if (JexlCheckerUtil.verifySpaces(field.getField())) {
+                        throw new IllegalArgumentException(job.getApp() + " " 
+ metrics.getName() + " "
+                                + field.getField() + " no spaces allowed, 
please modify the template information.");
+                    }
                 }
             }
         }
diff --git a/hertzbeat-manager/src/main/resources/define/app-kafka_client.yml 
b/hertzbeat-manager/src/main/resources/define/app-kafka_client.yml
index 2e62e5d7b..6a472716f 100644
--- a/hertzbeat-manager/src/main/resources/define/app-kafka_client.yml
+++ b/hertzbeat-manager/src/main/resources/define/app-kafka_client.yml
@@ -188,7 +188,7 @@ metrics:
           zh-CN: 消费者组ID
           en-US: Consumer Group ID
           ja-JP: 消費者グループID
-      - field: Group Member Num
+      - field: group_member_num
         type: 1
         i18n:
           zh-CN: 消费者实例数量
@@ -201,7 +201,7 @@ metrics:
           zh-CN: 订阅主题名称
           en-US: Subscribed Topic Name
           ja-JP: 購読されたトピック名
-      - field: Offset of Each Partition
+      - field: offset_of_each_partition
         type: 1
         i18n:
           zh-CN: 各分区偏移量
diff --git a/hertzbeat-manager/src/main/resources/define/app-pulsar.yml 
b/hertzbeat-manager/src/main/resources/define/app-pulsar.yml
index 38f76bbb5..133df9b00 100644
--- a/hertzbeat-manager/src/main/resources/define/app-pulsar.yml
+++ b/hertzbeat-manager/src/main/resources/define/app-pulsar.yml
@@ -172,7 +172,7 @@ metrics:
       timeout: ^_^timeout^_^
       method: GET
       parseType: prometheus
-  - name: jvm_memory_pool_allocated_bytes
+  - name: jvm_memory_pool_allocated_bytes_total
     i18n:
       zh-CN: JVM 内存池已分配字节
       en-US: JVM Memory Pool Allocated Bytes
@@ -181,13 +181,6 @@ metrics:
     # the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, 
sdk
     protocol: http
     fields:
-      - field: .name
-        type: 1
-        i18n:
-          zh-CN: 名称
-          en-US: Name
-          ja-JP: 名前
-        label: true
       - field: pool
         type: 1
         label: true
@@ -320,13 +313,6 @@ metrics:
     # the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, 
sdk
     protocol: http
     fields:
-      - field: .name
-        type: 1
-        i18n:
-          zh-CN: 指标名称
-          en-US: Metric Name
-          ja-JP: メトリクス名
-        label: true
       - field: cluster
         type: 1
         i18n:
@@ -358,7 +344,7 @@ metrics:
       timeout: ^_^timeout^_^
       method: GET
       parseType: prometheus
-  - name: pulsar_metadata_store_ops_latency_ms
+  - name: pulsar_metadata_store_ops_latency_ms_bucket
     i18n:
       zh-CN: 元数据存储操作延迟
       en-US: Metadata Store Ops Latency
@@ -367,13 +353,6 @@ metrics:
     # the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, 
sdk
     protocol: http
     fields:
-      - field: .name
-        type: 1
-        i18n:
-          zh-CN: 指标名称
-          en-US: Metric Name
-          ja-JP: メトリクス名
-        label: true
       - field: cluster
         type: 1
         i18n:
@@ -402,8 +381,23 @@ metrics:
           en-US: Status
           ja-JP: ステータス
         label: true
-      - field: le
+      - field: le_label
+        type: 1
+      - field: value
         type: 0
+        i18n:
+          zh-CN: 值
+          en-US: value
+          ja-JP: 値
+    aliasFields:
+      - cluster
+      - name
+      - type
+      - status
+      - le
+      - value
+    calculates:
+      - le_label=le
     # the config content when protocol is http
     http:
       # http host: ipv4 ipv6 domain
diff --git 
a/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/script/YamlCheckScript.java
 
b/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/script/YamlCheckScript.java
index 54f98b3c6..67c00f012 100644
--- 
a/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/script/YamlCheckScript.java
+++ 
b/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/script/YamlCheckScript.java
@@ -18,9 +18,9 @@
 package org.apache.hertzbeat.manager.script;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.hertzbeat.common.constants.JexlKeywordsEnum;
 import org.apache.hertzbeat.common.entity.job.Job;
 import org.apache.hertzbeat.common.entity.job.Metrics;
+import org.apache.hertzbeat.common.util.JexlCheckerUtil;
 import org.junit.jupiter.api.Test;
 import org.yaml.snakeyaml.Yaml;
 
@@ -44,6 +44,7 @@ public class YamlCheckScript {
         if (!Files.exists(definePath)) {
             throw new IllegalStateException("Define directory not found: " + 
YML_PATH);
         }
+        // check keywords/start char/space
         try (Stream<Path> paths = Files.walk(definePath)) {
             paths.filter(Files::isRegularFile)
                     .filter(path -> path.toString().endsWith(".yml"))
@@ -63,13 +64,13 @@ public class YamlCheckScript {
             throw new IllegalArgumentException("Failed to load Job from file: 
" + filePath.getFileName());
         }
         try {
-            validateJexlKeywords(app.getMetrics());
+            validateJexl(app.getMetrics());
         } catch (Exception e) {
             System.out.printf("file: %s , msg: %s%n", filePath.getFileName(), 
e.getMessage());
         }
     }
 
-    private void validateJexlKeywords(List<Metrics> metrics) {
+    private void validateJexl(List<Metrics> metrics) {
         if (null == metrics || metrics.isEmpty()) {
             return;
         }
@@ -81,9 +82,15 @@ public class YamlCheckScript {
                 if (null == field || StringUtils.isBlank(field.getField())) {
                     continue;
                 }
-                if (JexlKeywordsEnum.match(field.getField())) {
+                if (JexlCheckerUtil.verifyKeywords(field.getField())) {
                     throw new IllegalArgumentException("check jexl keywords 
failed. field:" + field.getField());
                 }
+                if (JexlCheckerUtil.verifyStartCharacter(field.getField())) {
+                    throw new IllegalArgumentException("check jexl start char 
failed. field:" + field.getField());
+                }
+                if (JexlCheckerUtil.verifySpaces(field.getField())) {
+                    throw new IllegalArgumentException("check jexl spaces 
failed. field:" + field.getField());
+                }
             }
         }
 
diff --git a/home/docs/community/maturity.md b/home/docs/community/maturity.md
index 449d3e42e..a60f7b26b 100644
--- a/home/docs/community/maturity.md
+++ b/home/docs/community/maturity.md
@@ -6,9 +6,11 @@ sidebar_position: 0
 
 ## Maturity Assessment for Apache HertzBeat™
 
-The goals of this maturity model are to describe how Apache projects operate 
in a concise and high-level way, and to provide a basic framework that projects 
may choose to use to evaluate themselves.
+The goals of this maturity model are to describe how Apache projects operate 
in a concise and high-level way, and to
+provide a basic framework that projects may choose to use to evaluate 
themselves.
 
-More details can be found 
[here](https://community.apache.org/apache-way/apache-project-maturity-model.html).
+More details can be found in
+the [Apache Project Maturity 
Model](https://community.apache.org/apache-way/apache-project-maturity-model.html).
 
 ## Status of this assessment
 
@@ -16,22 +18,24 @@ This assessment is evaluated during HertzBeat's Incubating.
 
 ## Maturity model assessment
 
-The following table is filled according to the [Apache Maturity 
Model](https://community.apache.org/apache-way/apache-project-maturity-model.html).
 Mentors and community members are welcome to comment and modify it.
+The following table is filled according to
+the [Apache Maturity 
Model](https://community.apache.org/apache-way/apache-project-maturity-model.html).
 Mentors and
+community members are welcome to comment and modify it.
 
 ### CODE
 
 | **ID**   | **Description**                                                   
                                                                                
                                                                                
                             | **Status**                                       
                                                                                
                                                                                
   |
-| -------- | 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | **CD10** | The project produces Open Source software for distribution to the 
public, at no charge.                                                           
                                                                                
                             | **YES** The project source code is licensed 
under the `Apache License 2.0`.                                                 
                                                                                
        |
 | **CD20** | Anyone can easily discover and access the project's code..        
                                                                                
                                                                                
                             | **YES** The [official 
website](https://hertzbeat.apache.org/) includes `GitHub` link which can access 
the project's repository on GitHub directly.                                    
                              |
-| **CD30** | Anyone using standard, widely-available tools, can build the code 
in a reproducible way.                                                          
                                                                                
                             | **YES**  Apache HertzBeat provide `how-to-build` 
document for every component to tell user how to compile on bare metal, such as 
the [core's](https://hertzbeat.apache.org/docs/community/development).    |
+| **CD30** | Anyone using standard, widely-available tools, can build the code 
in a reproducible way.                                                          
                                                                                
                             | **YES**  Apache HertzBeat provide `how-to-build` 
document for every component to tell user how to compile on bare metal, such as 
the [core's](https://hertzbeat.apache.org/docs/community/development).          
   |
 | **CD40** | The full history of the project's code is available via a source 
code control system, in a way that allows anyone to recreate any released 
version.                                                                        
                                    | **YES** It depends on git, and anyone can 
view the full history of the project via commit logs.                           
                                                                                
          |
 | **CD50** | The source code control system establishes the provenance of each 
line of code in a reliable way, based on strong authentication of the 
committer. When third parties contribute code, commit messages provide reliable 
information about the code provenance. | **YES** The project uses GitHub and 
managed by Apache Infra, it ensuring provenance of each line of code to a 
committer. And the third-party contributions are accepted in accordance with 
the contributing guides. |
 
 ### LICENSE
 
 | **ID**   | **Description**                                                   
                                                                                
                                | **Status**                                    
                                                                                
                                                |
-| -------- | 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | **LC10** | The Apache License, version 2.0, covers the released code.        
                                                                                
                                | **YES** The 
[LICENSE](https://github.com/apache/hertzbeat/blob/master/LICENSE) is in GitHub 
repository. And all source files are with APLv2 header, checked by Github 
Action. |
 | **LC20** | Libraries that are mandatory dependencies of the project's code 
do not create more restrictions than the Apache License does.                   
                                  | **YES** All dependencies are listed.        
                                                                                
                                                  |
 | **LC30** | The libraries mentioned in LC20 are available as Open Source 
software.                                                                       
                                     | **YES** All dependencies are listed are 
available as Open Source software                                               
                                                      |
@@ -41,17 +45,17 @@ The following table is filled according to the [Apache 
Maturity Model](https://c
 ### Releases
 
 | **ID**   | **Description**                                                   
                                                                                
                     | **Status**                                               
                                                                                
                                                                 |
-| -------- | 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | **RE10** | Releases consist of source code, distributed using standard and 
open archive formats that are expected to stay readable in the long term.       
                       | **YES** Source release is distributed via 
[dist.apache.org](https://dist.apache.org/repos/dist/release/incubator/hertzbeat/)
 and linked from [download page](https://hertzbeat.apache.org/docs/download). |
-| **RE20** | The project's PPMC (Project Management Committee, see CS10) 
approves each software release in order to make the release an act of the 
Foundation.                      | **YES** All releases have been voted at 
<[email protected]> and <[email protected]>, and have at 
least 3 PPMC member's votes.                                                    
           |
+| **RE20** | The project's PPMC (Project Management Committee, see CS10) 
approves each software release in order to make the release an act of the 
Foundation.                      | **YES** All releases have been voted at 
<[email protected]> and <[email protected]>, and have at 
least 3 PPMC member's votes.                                                    
       |
 | **RE30** | Releases are signed and/or distributed along with digests that 
anyone can reliably use to validate the downloaded archives.                    
                        | **YES** All releases are signed, and the 
[KEYS](https://dist.apache.org/repos/dist/release/incubator/hertzbeat/KEYS) are 
available.                                                                      
 |
 | **RE40** | The project can distribute convenience binaries alongside source 
code, but they are not Apache Releases, they are provided with no guarantee.    
                      | **YES** User can easily build binaries from source 
code, and we do not provide binaries as Apache Releases.                        
                                                                       |
-| **RE50** | The project documents a repeatable release process so that 
someone new to the project can independently generate the complete set of 
artifacts required for a release. | **YES** We can follow the [Release 
guide](https://hertzbeat.apache.org/docs/community/how_to_release) to make a 
new Apache HertzBeat release, and so far we had 4 different release managers.   
             |
+| **RE50** | The project documents a repeatable release process so that 
someone new to the project can independently generate the complete set of 
artifacts required for a release. | **YES** We can follow the [Release 
guide](https://hertzbeat.apache.org/docs/community/how_to_release) to make a 
new Apache HertzBeat release, and so far we had 4 different release managers.   
          |
 
 ### Quality
 
 | **ID**   | **Description**                                                   
                                                                                
                                            | **Status**                        
                                                                                
                                                                     |
-| -------- | 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | **QU10** | The project is open and honest about the quality of its code. 
Various levels of quality and maturity for various modules are natural and 
acceptable as long as they are clearly communicated. | **YES** We encourage 
user to [report issues](https://github.com/apache/hertzbeat/issues).            
                                                                                
  |
 | **QU20** | The project puts a very high priority on producing secure 
software.                                                                       
                                                    | **YES** All security 
reports are actively handled.                                                   
                                                                                
  |
 | **QU30** | The project provides a well-documented, secure and private 
channel to report security issues, along with a documented way of responding to 
them.                                              | **Yes** The official 
Github Repo provides a [security 
doc](https://github.com/apache/hertzbeat/blob/master/SECURITY.md)               
                                                 |
@@ -61,7 +65,7 @@ The following table is filled according to the [Apache 
Maturity Model](https://c
 ### Community
 
 | **ID**   | **Description**                                                   
                                                                                
                     | **Status**                                               
                                                                                
                                                                     |
-| -------- | 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | **CO10** | The project has a well-known homepage that points to all the 
information required to operate according to this maturity model.               
                          | **YES** The [official 
website](https://hertzbeat.apache.org/) includes all information user need to 
run Apache HertzBeat.                                                           
                          |
 | **CO20** | The community welcomes contributions from anyone who acts in good 
faith and in a respectful manner, and who adds value to the project.            
                     | **Yes** We provide contributing guides for every 
component. And we also have a [general contributing 
guide](https://hertzbeat.apache.org/docs/community/contribution)                
                         |
 | **CO30** | Contributions include source code, documentation, constructive 
bug reports, constructive discussions, marketing and generally anything that 
adds value to the project. | **YES** All good contributions including code and 
non-code are welcomed.                                                          
                                                                            |
@@ -72,17 +76,17 @@ The following table is filled according to the [Apache 
Maturity Model](https://c
 
 ### Consensus
 
-| **ID**   | **Description**                                                   
                                                                                
                                                                        | 
**Status**                                                                      
                             |
-| -------- | 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
|--------------------------------------------------------------------------------------------------------------|
-| **CS10** | The project maintains a public list of its contributors who have 
decision power. The project's PPMC (Project Management Committee) consists of 
those contributors.                                                        | 
**Yes** See [members](https://hertzbeat.apache.org/team/) with all PPMC members 
and committers.              |
+| **ID**   | **Description**                                                   
                                                                                
                                                                        | 
**Status**                                                                      
                               |
+|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|
+| **CS10** | The project maintains a public list of its contributors who have 
decision power. The project's PPMC (Project Management Committee) consists of 
those contributors.                                                        | 
**Yes** See [members](https://hertzbeat.apache.org/team/) with all PPMC members 
and committers.                |
 | **CS20** | Decisions require a consensus among PPMC members and are 
documented on the project's main communications channel. The PPMC takes 
community opinions into account, but the PPMC has the final word.               
         | **YES** All decisions are made by votes on 
<[email protected]>, and with at least 3 +1 votes from PPMC. |
-| **CS30** | The project uses documented voting rules to build consensus when 
discussion is not sufficient.                                                   
                                                                         | 
**YES** The project uses the standard ASF voting rules.                         
                             |
-| **CS40** | In Apache projects, vetoes are only valid for code commits. The 
person exercising the veto must justify it with a technical explanation, as per 
the Apache voting rules defined in CS30.                                  | 
**YES** Apache HertzBeat community has not used the veto power yet except for 
code commits.                  |
-| **CS50** | All "important" discussions happen asynchronously in written form 
on the project's main communications channel. Offline, face-to-face or private 
discussions that affect the project are also documented on that channel. | 
**YES** All important discussions and conclusions are recorded in written form. 
                             |
+| **CS30** | The project uses documented voting rules to build consensus when 
discussion is not sufficient.                                                   
                                                                         | 
**YES** The project uses the standard ASF voting rules.                         
                               |
+| **CS40** | In Apache projects, vetoes are only valid for code commits. The 
person exercising the veto must justify it with a technical explanation, as per 
the Apache voting rules defined in CS30.                                  | 
**YES** Apache HertzBeat community has not used the veto power yet except for 
code commits.                    |
+| **CS50** | All "important" discussions happen asynchronously in written form 
on the project's main communications channel. Offline, face-to-face or private 
discussions that affect the project are also documented on that channel. | 
**YES** All important discussions and conclusions are recorded in written form. 
                               |
 
 ### Independence
 
 | **ID**   | **Description**                                                   
                       | **Status**                                             
                                                                                
                                   |
-| -------- | 
----------------------------------------------------------------------------------------
 
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+|----------|------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | **IN10** | The project is independent from any corporate or organizational 
influence.               | **YES** The PPMC members and committer of Apache 
HertzBeat are from several different companies, and majority of them are NOT 
From the company that donated this project. |
 | **IN20** | Contributors act as themselves, not as representatives of a 
corporation or organization. | **YES** The contributors act on their own 
initiative without representing a corporation or organization.                  
                                                |
diff --git a/home/docs/help/kafka_client.md b/home/docs/help/kafka_client.md
index f35c4fe7d..ccff28798 100644
--- a/home/docs/help/kafka_client.md
+++ b/home/docs/help/kafka_client.md
@@ -51,7 +51,7 @@ keywords: [open-source monitoring system, open-source message 
middleware monitor
 |   Metric Name   | Unit | Help Description                   |
 |-----------|--|------------------------------------|
 | GroupId | None | Consumer Group Id                  |
-| Group Member Num     | None | Number of Consumer Instances       |
+| group_member_num     | None | Number of Consumer Instances       |
 | Subscribed Topic Name      | None | Topic Name Subscribed by the Group |
-| Offsets of Each Partition     | None | Offsets for Each Partition         |
+| offset_of_each_partition     | None | Offsets for Each Partition         |
 | Lag      | None | Lag of Consumer                    |
diff --git a/home/docs/help/pulsar.md b/home/docs/help/pulsar.md
index 1424bd3f5..a938c6f02 100644
--- a/home/docs/help/pulsar.md
+++ b/home/docs/help/pulsar.md
@@ -47,7 +47,7 @@ keywords: [open-source monitoring system, open-source 
database monitoring, Hbase
 |----------------------|------|------------------------------------|
 | Max File Descriptors | NONE | Maximum Number of File Descriptors |
 
-#### Metric Set: jvm_memory_pool_allocated_bytes
+#### Metric Set: jvm_memory_pool_allocated_bytes_total
 
 Number of bytes of memory allocated in a specific memory pool in the Java 
Virtual Machine (JVM). In Pulsar, this typically refers to the amount of memory 
allocated for various purposes in the JVM (such as heap memory, non-heap 
memory, etc.).
 
@@ -67,6 +67,6 @@ Maximum number of bytes of memory that can be allocated in a 
specific memory poo
 
 Message publishing latency on the broker side.
 
-#### Metric Set: pulsar_metadata_store_ops_latency_ms
+#### Metric Set: pulsar_metadata_store_ops_latency_ms_bucket
 
 Latency of metadata store operations on the broker side.
diff --git 
a/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/community/maturity.md 
b/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/community/maturity.md
index 449d3e42e..d5f2c74e6 100644
--- 
a/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/community/maturity.md
+++ 
b/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/community/maturity.md
@@ -8,7 +8,7 @@ sidebar_position: 0
 
 The goals of this maturity model are to describe how Apache projects operate 
in a concise and high-level way, and to provide a basic framework that projects 
may choose to use to evaluate themselves.
 
-More details can be found 
[here](https://community.apache.org/apache-way/apache-project-maturity-model.html).
+More details can be found in the [Apache Project Maturity 
Model](https://community.apache.org/apache-way/apache-project-maturity-model.html).
 
 ## Status of this assessment
 
diff --git 
a/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/help/kafka_client.md 
b/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/help/kafka_client.md
index f88304473..ee72dd0e1 100644
--- 
a/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/help/kafka_client.md
+++ 
b/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/help/kafka_client.md
@@ -51,7 +51,7 @@ keywords: [开源监控系统, 开源消息中间件监控, Kafka监控]
 |   指标名称    | 指标单位 | 指标帮助描述 |
 |-----------|------|-------|
 | GroupId | 无    | 消费者组ID    |
-| Group Member Num      | 无   | 消费者实例数量|
+| group_member_num      | 无   | 消费者实例数量|
 | Subscribed Topic Name       | 无   | 订阅主题名称    |
-| Offsets of Each Partition      | 无   | 各分区偏移量   |
+| offset_of_each_partition      | 无   | 各分区偏移量   |
 | Lag      | 无   | 落后偏移量   |
diff --git 
a/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/help/pulsar.md 
b/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/help/pulsar.md
index f37070d86..1db66c891 100644
--- a/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/help/pulsar.md
+++ b/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/help/pulsar.md
@@ -47,7 +47,7 @@ keywords: [开源监控系统, 开源数据库监控, HbaseMaster监控]
 |----------------------|------|---------|
 | Max File Descriptors | 无    | 最大文件描述符 |
 
-#### 指标集合: jvm_memory_pool_allocated_bytes
+#### 指标集合: jvm_memory_pool_allocated_bytes_total
 
 Java虚拟机(JVM)中特定内存池已分配的内存字节数。在Pulsar中,这通常指的是用于各种目的的JVM内存(如堆内存、非堆内存等)中已经分配出去的内存量。
 
@@ -67,6 +67,6 @@ JVM中特定内存池可分配的最大内存字节数。这是该内存池允
 
 Broker端消息发布延迟
 
-#### 指标集合:pulsar_metadata_store_ops_latency_ms
+#### 指标集合:pulsar_metadata_store_ops_latency_ms_bucket
 
 Broker端元数据存储操作延迟
diff --git 
a/home/i18n/zh-cn/docusaurus-plugin-content-docs/version-v1.6.x/help/kafka_client.md
 
b/home/i18n/zh-cn/docusaurus-plugin-content-docs/version-v1.6.x/help/kafka_client.md
index f88304473..ee72dd0e1 100644
--- 
a/home/i18n/zh-cn/docusaurus-plugin-content-docs/version-v1.6.x/help/kafka_client.md
+++ 
b/home/i18n/zh-cn/docusaurus-plugin-content-docs/version-v1.6.x/help/kafka_client.md
@@ -51,7 +51,7 @@ keywords: [开源监控系统, 开源消息中间件监控, Kafka监控]
 |   指标名称    | 指标单位 | 指标帮助描述 |
 |-----------|------|-------|
 | GroupId | 无    | 消费者组ID    |
-| Group Member Num      | 无   | 消费者实例数量|
+| group_member_num      | 无   | 消费者实例数量|
 | Subscribed Topic Name       | 无   | 订阅主题名称    |
-| Offsets of Each Partition      | 无   | 各分区偏移量   |
+| offset_of_each_partition      | 无   | 各分区偏移量   |
 | Lag      | 无   | 落后偏移量   |
diff --git 
a/home/i18n/zh-cn/docusaurus-plugin-content-docs/version-v1.6.x/help/pulsar.md 
b/home/i18n/zh-cn/docusaurus-plugin-content-docs/version-v1.6.x/help/pulsar.md
index f37070d86..1db66c891 100644
--- 
a/home/i18n/zh-cn/docusaurus-plugin-content-docs/version-v1.6.x/help/pulsar.md
+++ 
b/home/i18n/zh-cn/docusaurus-plugin-content-docs/version-v1.6.x/help/pulsar.md
@@ -47,7 +47,7 @@ keywords: [开源监控系统, 开源数据库监控, HbaseMaster监控]
 |----------------------|------|---------|
 | Max File Descriptors | 无    | 最大文件描述符 |
 
-#### 指标集合: jvm_memory_pool_allocated_bytes
+#### 指标集合: jvm_memory_pool_allocated_bytes_total
 
 Java虚拟机(JVM)中特定内存池已分配的内存字节数。在Pulsar中,这通常指的是用于各种目的的JVM内存(如堆内存、非堆内存等)中已经分配出去的内存量。
 
@@ -67,6 +67,6 @@ JVM中特定内存池可分配的最大内存字节数。这是该内存池允
 
 Broker端消息发布延迟
 
-#### 指标集合:pulsar_metadata_store_ops_latency_ms
+#### 指标集合:pulsar_metadata_store_ops_latency_ms_bucket
 
 Broker端元数据存储操作延迟
diff --git a/home/versioned_docs/version-v1.6.x/help/kafka_client.md 
b/home/versioned_docs/version-v1.6.x/help/kafka_client.md
index f35c4fe7d..ccff28798 100644
--- a/home/versioned_docs/version-v1.6.x/help/kafka_client.md
+++ b/home/versioned_docs/version-v1.6.x/help/kafka_client.md
@@ -51,7 +51,7 @@ keywords: [open-source monitoring system, open-source message 
middleware monitor
 |   Metric Name   | Unit | Help Description                   |
 |-----------|--|------------------------------------|
 | GroupId | None | Consumer Group Id                  |
-| Group Member Num     | None | Number of Consumer Instances       |
+| group_member_num     | None | Number of Consumer Instances       |
 | Subscribed Topic Name      | None | Topic Name Subscribed by the Group |
-| Offsets of Each Partition     | None | Offsets for Each Partition         |
+| offset_of_each_partition     | None | Offsets for Each Partition         |
 | Lag      | None | Lag of Consumer                    |
diff --git a/home/versioned_docs/version-v1.6.x/help/pulsar.md 
b/home/versioned_docs/version-v1.6.x/help/pulsar.md
index 1424bd3f5..a938c6f02 100644
--- a/home/versioned_docs/version-v1.6.x/help/pulsar.md
+++ b/home/versioned_docs/version-v1.6.x/help/pulsar.md
@@ -47,7 +47,7 @@ keywords: [open-source monitoring system, open-source 
database monitoring, Hbase
 |----------------------|------|------------------------------------|
 | Max File Descriptors | NONE | Maximum Number of File Descriptors |
 
-#### Metric Set: jvm_memory_pool_allocated_bytes
+#### Metric Set: jvm_memory_pool_allocated_bytes_total
 
 Number of bytes of memory allocated in a specific memory pool in the Java 
Virtual Machine (JVM). In Pulsar, this typically refers to the amount of memory 
allocated for various purposes in the JVM (such as heap memory, non-heap 
memory, etc.).
 
@@ -67,6 +67,6 @@ Maximum number of bytes of memory that can be allocated in a 
specific memory poo
 
 Message publishing latency on the broker side.
 
-#### Metric Set: pulsar_metadata_store_ops_latency_ms
+#### Metric Set: pulsar_metadata_store_ops_latency_ms_bucket
 
 Latency of metadata store operations on the broker side.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to