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 <[email protected]>
AuthorDate: Tue Jun 17 22:32:31 2025 +0800
[feature] Add statusCode metrics data. (#3446)
Co-authored-by: tomsun28 <[email protected]>
Co-authored-by: Logic <[email protected]>
Co-authored-by: aias00 <[email protected]>
Co-authored-by: kangli <[email protected]>
Co-authored-by: liutianyou <[email protected]>
---
.../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: [email protected]
For additional commands, e-mail: [email protected]