Skip to content

Commit d4f6fc1

Browse files
LiuTianyouCalvin979Aias00
authored
[Fix] fix clickhouse monitor (apache#2874)
Co-authored-by: Calvin <[email protected]> Co-authored-by: aias00 <[email protected]>
1 parent e999360 commit d4f6fc1

File tree

4 files changed

+28
-23
lines changed

4 files changed

+28
-23
lines changed

hertzbeat-collector/hertzbeat-collector-basic/src/main/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImpl.java

+21-20
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ public void collect(CollectRep.MetricsData.Builder builder,
156156
parseResponseByWebsite(resp, metrics, metrics.getHttp(), builder, responseTime, response);
157157
case DispatchConstants.PARSE_SITE_MAP ->
158158
parseResponseBySiteMap(resp, metrics.getAliasFields(), builder);
159+
case DispatchConstants.PARSE_HEADER ->
160+
parseResponseByHeader(builder, metrics.getAliasFields(), response);
159161
default ->
160162
parseResponseByDefault(resp, metrics.getAliasFields(), metrics.getHttp(), builder, responseTime);
161163
}
@@ -196,6 +198,24 @@ public void collect(CollectRep.MetricsData.Builder builder,
196198
}
197199
}
198200

201+
private void parseResponseByHeader(CollectRep.MetricsData.Builder builder, List<String> aliases, CloseableHttpResponse response) {
202+
CollectRep.ValueRow.Builder valueRowBuilder = CollectRep.ValueRow.newBuilder();
203+
for (String alias : aliases) {
204+
if (!StringUtils.hasText(alias)) {
205+
valueRowBuilder.addColumns(CommonConstants.NULL_VALUE);
206+
continue;
207+
}
208+
final Header firstHeader = response.getFirstHeader(alias);
209+
if (Objects.isNull(firstHeader)) {
210+
valueRowBuilder.addColumns(CommonConstants.NULL_VALUE);
211+
continue;
212+
}
213+
214+
valueRowBuilder.addColumns(firstHeader.getValue());
215+
}
216+
builder.addValues(valueRowBuilder.build());
217+
}
218+
199219
@Override
200220
public String supportProtocol() {
201221
return DispatchConstants.PROTOCOL_HTTP;
@@ -207,30 +227,11 @@ private void parseResponseByWebsite(String resp, Metrics metrics, HttpProtocol h
207227
CollectRep.ValueRow.Builder valueRowBuilder = CollectRep.ValueRow.newBuilder();
208228
int keywordNum = CollectUtil.countMatchKeyword(resp, http.getKeyword());
209229
for (String alias : metrics.getAliasFields()) {
210-
if ("summary".equalsIgnoreCase(metrics.getName())) {
211-
addColumnForSummary(responseTime, valueRowBuilder, keywordNum, alias);
212-
} else if ("header".equalsIgnoreCase(metrics.getName())) {
213-
addColumnFromHeader(valueRowBuilder, alias, response);
214-
}
230+
addColumnForSummary(responseTime, valueRowBuilder, keywordNum, alias);
215231
}
216232
builder.addValues(valueRowBuilder.build());
217233
}
218234

219-
private void addColumnFromHeader(CollectRep.ValueRow.Builder valueRowBuilder, String alias, CloseableHttpResponse response) {
220-
if (!StringUtils.hasText(alias)) {
221-
valueRowBuilder.addColumns(CommonConstants.NULL_VALUE);
222-
return;
223-
}
224-
225-
final Header firstHeader = response.getFirstHeader(alias);
226-
if (Objects.isNull(firstHeader)) {
227-
valueRowBuilder.addColumns(CommonConstants.NULL_VALUE);
228-
return;
229-
}
230-
231-
valueRowBuilder.addColumns(firstHeader.getValue());
232-
}
233-
234235
private void addColumnForSummary(Long responseTime, CollectRep.ValueRow.Builder valueRowBuilder, int keywordNum, String alias) {
235236
if (NetworkConstants.RESPONSE_TIME.equalsIgnoreCase(alias)) {
236237
valueRowBuilder.addColumns(responseTime.toString());

hertzbeat-collector/hertzbeat-collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/DispatchConstants.java

+4
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,10 @@ public interface DispatchConstants {
194194
* Analysis method Sitemap site-wide availability monitoring rules
195195
*/
196196
String PARSE_SITE_MAP = "sitemap";
197+
/**
198+
* Analysis method resolution: response header
199+
*/
200+
String PARSE_HEADER = "header";
197201
/**
198202
* Parsing method prometheus exporter data
199203
*/

hertzbeat-manager/src/main/resources/define/app-api.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -352,5 +352,5 @@ metrics:
352352
digestAuthUsername: ^_^username^_^
353353
digestAuthPassword: ^_^password^_^
354354
# http response data parse type: default-hertzbeat rule, jsonpath-jsonpath script, website-for website monitoring, prometheus-prometheus exporter rule
355-
parseType: website
356-
keyword: ^_^keyword^_^
355+
parseType: header
356+
keyword: ^_^keyword^_^

hertzbeat-manager/src/main/resources/define/app-clickhouse.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ params:
104104
# collect metrics config list
105105
metrics:
106106
# metrics - ping_available
107-
- name: ping_available
107+
- name: summary
108108
i18n:
109109
zh-CN: ping的可用性
110110
en-US: ping_available

0 commit comments

Comments
 (0)