This is an automated email from the ASF dual-hosted git repository.
liutianyou 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 d4f6fc1ae [Fix] fix clickhouse monitor (#2874)
d4f6fc1ae is described below
commit d4f6fc1ae8988ca95ce535bcbcd1666febd68203
Author: liutianyou <[email protected]>
AuthorDate: Tue Dec 17 14:20:27 2024 +0800
[Fix] fix clickhouse monitor (#2874)
Co-authored-by: Calvin <[email protected]>
Co-authored-by: aias00 <[email protected]>
---
.../collector/collect/http/HttpCollectImpl.java | 41 +++++++++++-----------
.../collector/dispatch/DispatchConstants.java | 4 +++
.../src/main/resources/define/app-api.yml | 4 +--
.../src/main/resources/define/app-clickhouse.yml | 2 +-
4 files changed, 28 insertions(+), 23 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 0a43f7316..c398791fd 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
@@ -156,6 +156,8 @@ public class HttpCollectImpl extends AbstractCollect {
parseResponseByWebsite(resp, metrics,
metrics.getHttp(), builder, responseTime, response);
case DispatchConstants.PARSE_SITE_MAP ->
parseResponseBySiteMap(resp,
metrics.getAliasFields(), builder);
+ case DispatchConstants.PARSE_HEADER ->
+ parseResponseByHeader(builder,
metrics.getAliasFields(), response);
default ->
parseResponseByDefault(resp,
metrics.getAliasFields(), metrics.getHttp(), builder, responseTime);
}
@@ -196,6 +198,24 @@ public class HttpCollectImpl extends AbstractCollect {
}
}
+ private void parseResponseByHeader(CollectRep.MetricsData.Builder builder,
List<String> aliases, CloseableHttpResponse response) {
+ CollectRep.ValueRow.Builder valueRowBuilder =
CollectRep.ValueRow.newBuilder();
+ for (String alias : aliases) {
+ if (!StringUtils.hasText(alias)) {
+ valueRowBuilder.addColumns(CommonConstants.NULL_VALUE);
+ continue;
+ }
+ final Header firstHeader = response.getFirstHeader(alias);
+ if (Objects.isNull(firstHeader)) {
+ valueRowBuilder.addColumns(CommonConstants.NULL_VALUE);
+ continue;
+ }
+
+ valueRowBuilder.addColumns(firstHeader.getValue());
+ }
+ builder.addValues(valueRowBuilder.build());
+ }
+
@Override
public String supportProtocol() {
return DispatchConstants.PROTOCOL_HTTP;
@@ -207,30 +227,11 @@ public class HttpCollectImpl extends AbstractCollect {
CollectRep.ValueRow.Builder valueRowBuilder =
CollectRep.ValueRow.newBuilder();
int keywordNum = CollectUtil.countMatchKeyword(resp,
http.getKeyword());
for (String alias : metrics.getAliasFields()) {
- if ("summary".equalsIgnoreCase(metrics.getName())) {
- addColumnForSummary(responseTime, valueRowBuilder, keywordNum,
alias);
- } else if ("header".equalsIgnoreCase(metrics.getName())) {
- addColumnFromHeader(valueRowBuilder, alias, response);
- }
+ addColumnForSummary(responseTime, valueRowBuilder, keywordNum,
alias);
}
builder.addValues(valueRowBuilder.build());
}
- private void addColumnFromHeader(CollectRep.ValueRow.Builder
valueRowBuilder, String alias, CloseableHttpResponse response) {
- if (!StringUtils.hasText(alias)) {
- valueRowBuilder.addColumns(CommonConstants.NULL_VALUE);
- return;
- }
-
- final Header firstHeader = response.getFirstHeader(alias);
- if (Objects.isNull(firstHeader)) {
- valueRowBuilder.addColumns(CommonConstants.NULL_VALUE);
- return;
- }
-
- valueRowBuilder.addColumns(firstHeader.getValue());
- }
-
private void addColumnForSummary(Long responseTime,
CollectRep.ValueRow.Builder valueRowBuilder, int keywordNum, String alias) {
if (NetworkConstants.RESPONSE_TIME.equalsIgnoreCase(alias)) {
valueRowBuilder.addColumns(responseTime.toString());
diff --git
a/hertzbeat-collector/hertzbeat-collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/DispatchConstants.java
b/hertzbeat-collector/hertzbeat-collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/DispatchConstants.java
index 5f61cf676..e6d00dfa1 100644
---
a/hertzbeat-collector/hertzbeat-collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/DispatchConstants.java
+++
b/hertzbeat-collector/hertzbeat-collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/DispatchConstants.java
@@ -194,6 +194,10 @@ public interface DispatchConstants {
* Analysis method Sitemap site-wide availability monitoring rules
*/
String PARSE_SITE_MAP = "sitemap";
+ /**
+ * Analysis method resolution: response header
+ */
+ String PARSE_HEADER = "header";
/**
* Parsing method prometheus exporter data
*/
diff --git a/hertzbeat-manager/src/main/resources/define/app-api.yml
b/hertzbeat-manager/src/main/resources/define/app-api.yml
index e3eaa9b63..13ad461a8 100644
--- a/hertzbeat-manager/src/main/resources/define/app-api.yml
+++ b/hertzbeat-manager/src/main/resources/define/app-api.yml
@@ -352,5 +352,5 @@ metrics:
digestAuthUsername: ^_^username^_^
digestAuthPassword: ^_^password^_^
# http response data parse type: default-hertzbeat rule,
jsonpath-jsonpath script, website-for website monitoring, prometheus-prometheus
exporter rule
- parseType: website
- keyword: ^_^keyword^_^
\ No newline at end of file
+ parseType: header
+ keyword: ^_^keyword^_^
diff --git a/hertzbeat-manager/src/main/resources/define/app-clickhouse.yml
b/hertzbeat-manager/src/main/resources/define/app-clickhouse.yml
index 2cabe2300..ba9d75e71 100644
--- a/hertzbeat-manager/src/main/resources/define/app-clickhouse.yml
+++ b/hertzbeat-manager/src/main/resources/define/app-clickhouse.yml
@@ -104,7 +104,7 @@ params:
# collect metrics config list
metrics:
# metrics - ping_available
- - name: ping_available
+ - name: summary
i18n:
zh-CN: ping的可用性
en-US: ping_available
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]