fix(性能测试): 修复自定义监控查询时,输入promQL中包括特殊字符不能正常使用的问题
--bug=1028478 --user=刘瑞斌 【性能测试】github#26031,【性能测试】监控磁盘IO使用率,在prometheus页面使用promQL语句(读+写之和)可以正常查询到,将表达式放到MS监控里,没有监控数据出现 https://www.tapd.cn/55049933/s/1402006
This commit is contained in:
parent
345c519f12
commit
b52c642414
|
@ -17,11 +17,14 @@ import io.metersphere.request.MetricRequest;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.http.HttpEntity;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -82,8 +85,18 @@ public class MetricQueryService {
|
||||||
String start = df.format(startTime / 1000.0);
|
String start = df.format(startTime / 1000.0);
|
||||||
String end = df.format(endTime / 1000.0);
|
String end = df.format(endTime / 1000.0);
|
||||||
try {
|
try {
|
||||||
Map response = restTemplate.getForObject(prometheusHost + "/api/v1/query_range?query={promQL}&start={start}&end={end}&step={step}", Map.class, promQL, start, end, step);
|
LogUtil.debug(prometheusHost + "/api/v1/query_range?query=" + promQL + "&start=" + start + "&end" + end + "&step=" + step);
|
||||||
LogUtil.info(prometheusHost + "/api/v1/query_range?query={" + promQL + "}&start={" + start + "}&end{" + end + "}&step={" + step + "}");
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.add("Content-Type", "application/x-www-form-urlencoded");
|
||||||
|
// 设置请求参数
|
||||||
|
MultiValueMap<String, Object> postParameters = new LinkedMultiValueMap<>();
|
||||||
|
postParameters.add("query", promQL);
|
||||||
|
postParameters.add("start", start);
|
||||||
|
postParameters.add("end", end);
|
||||||
|
postParameters.add("step", step);
|
||||||
|
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(postParameters, headers);
|
||||||
|
|
||||||
|
Map response = restTemplate.postForObject(prometheusHost + "/api/v1/query_range", httpEntity, Map.class);
|
||||||
metricData = handleResult(seriesName, response, instance);
|
metricData = handleResult(seriesName, response, instance);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.error("query prometheus metric fail.");
|
LogUtil.error("query prometheus metric fail.");
|
||||||
|
|
Loading…
Reference in New Issue