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 dda9250243 [feature] Add statusCode metrics data. (#3446)
dda9250243 is described below

commit dda9250243c56640aace628a111be27dcf544f8c
Author: Duansg <siguod...@gmail.com>
AuthorDate: Tue Jun 17 22:32:31 2025 +0800

    [feature] Add statusCode metrics data. (#3446)
    
    Co-authored-by: tomsun28 <tomsu...@outlook.com>
    Co-authored-by: Logic <zqr10...@dromara.org>
    Co-authored-by: aias00 <liuhon...@apache.org>
    Co-authored-by: kangli <lik...@apache.org>
    Co-authored-by: liutianyou <tianyou....@qq.com>
---
 .../collector/collect/http/HttpCollectImpl.java    | 10 ++++++---
 .../collect/http/HttpCollectImplTest.java          | 26 ++++++++++++++++++++++
 .../collector/constants/CollectorConstants.java    |  2 +-
 .../src/main/resources/define/app-api.yml          |  6 +++++
 4 files changed, 40 insertions(+), 4 deletions(-)

diff --git 
a/hertzbeat-collector/hertzbeat-collector-basic/src/main/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImpl.java
 
b/hertzbeat-collector/hertzbeat-collector-basic/src/main/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImpl.java
index 21d1bd1c68..e38ef6c4bc 100644
--- 
a/hertzbeat-collector/hertzbeat-collector-basic/src/main/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImpl.java
+++ 
b/hertzbeat-collector/hertzbeat-collector-basic/src/main/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImpl.java
@@ -166,7 +166,7 @@ public class HttpCollectImpl extends AbstractCollect {
                     case DispatchConstants.PARSE_XML_PATH ->
                             parseResponseByXmlPath(resp, metrics, builder, 
responseTime);
                     case DispatchConstants.PARSE_WEBSITE ->
-                            parseResponseByWebsite(resp, metrics, 
metrics.getHttp(), builder, responseTime);
+                            parseResponseByWebsite(resp, metrics, 
metrics.getHttp(), builder, responseTime, statusCode);
                     case DispatchConstants.PARSE_SITE_MAP ->
                             parseResponseBySiteMap(resp, 
metrics.getAliasFields(), builder);
                     case DispatchConstants.PARSE_HEADER ->
@@ -237,11 +237,15 @@ public class HttpCollectImpl extends AbstractCollect {
     }
 
     private void parseResponseByWebsite(String resp, Metrics metrics, 
HttpProtocol http,
-                                        CollectRep.MetricsData.Builder 
builder, Long responseTime) {
+                                        CollectRep.MetricsData.Builder 
builder, Long responseTime, int statusCode) {
         CollectRep.ValueRow.Builder valueRowBuilder = 
CollectRep.ValueRow.newBuilder();
         int keywordNum = CollectUtil.countMatchKeyword(resp, 
http.getKeyword());
         for (String alias : metrics.getAliasFields()) {
-            addColumnForSummary(responseTime, valueRowBuilder, keywordNum, 
alias);
+            if (CollectorConstants.STATUS_CODE.equalsIgnoreCase(alias)) {
+                valueRowBuilder.addColumn(Integer.toString(statusCode));
+            } else {
+                addColumnForSummary(responseTime, valueRowBuilder, keywordNum, 
alias);
+            }
         }
         builder.addValueRow(valueRowBuilder.build());
     }
diff --git 
a/hertzbeat-collector/hertzbeat-collector-basic/src/test/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImplTest.java
 
b/hertzbeat-collector/hertzbeat-collector-basic/src/test/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImplTest.java
index 9ec23f5b6e..9aebc36af0 100644
--- 
a/hertzbeat-collector/hertzbeat-collector-basic/src/test/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImplTest.java
+++ 
b/hertzbeat-collector/hertzbeat-collector-basic/src/test/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImplTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.hertzbeat.collector.collect.http;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
@@ -25,6 +26,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.ArrayList;
 
+import com.google.common.collect.Lists;
 import org.apache.hertzbeat.collector.dispatch.DispatchConstants;
 import org.apache.hertzbeat.common.entity.job.Metrics;
 import org.apache.hertzbeat.common.entity.job.protocol.HttpProtocol;
@@ -73,6 +75,30 @@ class HttpCollectImplTest {
         assert "http".equals(protocol);
     }
 
+    @Test
+    void parseResponseByWebsite() {
+        HttpProtocol http = HttpProtocol.builder().build();
+        http.setMethod("GET");
+        http.setHost("http://127.0.0.1";);
+        http.setUrl("/");
+        http.setPort("8428");
+        http.setParseType("website");
+        http.setEnableUrlEncoding("true");
+        Metrics metrics = Metrics.builder()
+                .http(http)
+                .aliasFields(Lists.newArrayList("responseTime", "keyword", 
"statusCode"))
+                .build();
+        CollectRep.MetricsData.Builder builder = 
CollectRep.MetricsData.newBuilder();
+        httpCollectImpl.collect(builder, metrics);
+
+        assertNotNull(builder.getValuesList());
+        for (CollectRep.ValueRow row : builder.getValuesList()) {
+            assertNotNull(row.getColumns(0));
+            assertEquals(row.getColumns(1), "0");
+            assertEquals(row.getColumns(2), "200");
+        }
+    }
+
     @Test
     void parseResponseByXmlPath() throws Exception {
         // Create a sample XML response
diff --git 
a/hertzbeat-collector/hertzbeat-collector-common/src/main/java/org/apache/hertzbeat/collector/constants/CollectorConstants.java
 
b/hertzbeat-collector/hertzbeat-collector-common/src/main/java/org/apache/hertzbeat/collector/constants/CollectorConstants.java
index 0dcfb201b0..a52092e2f0 100644
--- 
a/hertzbeat-collector/hertzbeat-collector-common/src/main/java/org/apache/hertzbeat/collector/constants/CollectorConstants.java
+++ 
b/hertzbeat-collector/hertzbeat-collector-common/src/main/java/org/apache/hertzbeat/collector/constants/CollectorConstants.java
@@ -47,6 +47,6 @@ public interface CollectorConstants extends NetworkConstants {
 
     String RESPONSE_TIME = "responseTime";
 
-    String STATUS_CODE = "StatusCode";
+    String STATUS_CODE = "statusCode";
 
 }
\ No newline at end of file
diff --git a/hertzbeat-manager/src/main/resources/define/app-api.yml 
b/hertzbeat-manager/src/main/resources/define/app-api.yml
index a2e1c28e63..a1b6214089 100644
--- a/hertzbeat-manager/src/main/resources/define/app-api.yml
+++ b/hertzbeat-manager/src/main/resources/define/app-api.yml
@@ -304,6 +304,12 @@ metrics:
           zh-CN: 关键词数量
           en-US: Keyword
           ja-JP: キーワード
+      - field: statusCode
+        type: 0
+        i18n:
+          zh-CN: 状态码
+          en-US: Status Code
+          ja-JP: 状態コード
     # the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, 
sdk
     protocol: http
     # the config content when protocol is http


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@hertzbeat.apache.org
For additional commands, e-mail: notifications-h...@hertzbeat.apache.org

Reply via email to