123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package com.jjt.biz.service.impl;
- import cn.hutool.http.HttpRequest;
- import cn.hutool.http.HttpResponse;
- import cn.hutool.http.HttpUtil;
- import cn.hutool.http.Method;
- import cn.hutool.json.JSONArray;
- import cn.hutool.json.JSONObject;
- import cn.hutool.json.JSONUtil;
- import com.jjt.biz.service.IPrometheusService;
- import com.jjt.common.utils.StringUtils;
- import com.jjt.common.utils.sign.Base64;
- import com.jjt.system.service.ISysConfigService;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import org.yaml.snakeyaml.util.UriEncoder;
- import javax.annotation.Resource;
- import java.nio.charset.StandardCharsets;
- import java.text.DecimalFormat;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * 告警记录Service业务层处理
- *
- * @author jjt
- * @date 2024-08-08
- */
- @Service
- @Slf4j
- public class PrometheusServiceImpl implements IPrometheusService {
- @Resource
- private ISysConfigService configService;
- /**
- * 获取接口地址
- *
- * @return 接口地址
- */
- private String baseUri() {
- return configService.selectConfigByKey("pm.url");
- }
- /**
- * 即时查询
- *
- * @param param 查询参数
- * @return 结果
- */
- @Override
- public Float query(String param) {
- if (StringUtils.isNotEmpty(param)) {
- if (StringUtils.isNotEmpty(param)) {
- String uri = baseUri() + "/api/v1/query";
- param = UriEncoder.encode(param);
- Map<String, Object> map = new HashMap<>(16);
- map.put("query", param);
- HttpRequest request = HttpUtil.createPost(uri);
- request.setMethod(Method.GET);
- String auth = configService.selectConfigByKey("pm.param");
- if (StringUtils.isNotEmpty(auth)) {
- String baseAuth = "Basic " + Base64.encode(auth.getBytes());
- request.header("Authorization", baseAuth);
- }
- request.form(map);
- request.setConnectionTimeout(2000);
- try (HttpResponse execute = request.execute()) {
- if (!execute.isOk()) {
- throw new RuntimeException("status:" + execute.getStatus() + "\tres:" + execute.body());
- }
- String res = new String(execute.body().getBytes(), StandardCharsets.UTF_8);
- JSONObject object = JSONUtil.parseObj(res, true);
- JSONArray array = object.getJSONObject("data").getJSONArray("result");
- JSONArray value = array.getJSONObject(0).getJSONArray("value");
- DecimalFormat df = new DecimalFormat("#0.00");
- return Float.parseFloat(df.format(value.getFloat(1)));
- } catch (Exception e) {
- log.error("调用prometheus接口失败, url=" + uri + ",param=" + param, e);
- return null;
- }
- } else {
- return null;
- }
- } else {
- return null;
- }
- }
- }
|