Как программно получить метрики http.server.requests - PullRequest
0 голосов
/ 31 января 2020

Похоже, я не получил показатели весенней загрузки

У меня есть приложение весенней загрузки 2 и org.springframework.boot: spring-boot-starter-activator

Как получить данные из этого ответа программно?

https://localhost/actuator/metrics/http.server.requests?tag=status:200

{
"name": "http.server.requests",
"baseUnit": "seconds",
"measurements": [
    {
        "statistic": "COUNT",
        "value": 1.0
    },
    {
        "statistic": "TOTAL_TIME",
        "value": 250.654721314
    },
    {
        "statistic": "MAX",
        "value": 0.0
    }
],
"availableTags": [
    {
        "tag": "exception",
        "values": [
            "ClientAbortException"
        ]
    },
    {
        "tag": "method",
        "values": [
            "GET"
        ]
    },
    {
        "tag": "uri",
        "values": [
            "/users/metric"
        ]
    },
    {
        "tag": "outcome",
        "values": [
            "SUCCESS"
        ]
    }
]

}

Я пытался

@Autowired
private SimpleMeterRegistry meterRegistry;


    Counter counter = meterRegistry.counter("http.server.requests");
    Iterable<Measurement> measure = counter.measure();

, но у него нет данных, которые мне нужны. Это ноль

1 Ответ

1 голос
/ 31 января 2020

Вы можете получить COUNT как . Однако я предлагаю использовать Spring Boot Admin , который показывает все соответствующие метрики и другие детали.

int count = 0;
      StringBuilder result = new StringBuilder();
      URL url = new URL(URLtoMap);  //http://localhost:8080/actuator/metrics/http.server.requests?tag=uri:" + endPoint + "";
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.setRequestMethod("GET");
      BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
      String line;
      while ((line = rd.readLine()) != null) {
         result.append(line);
      }
      rd.close();

      try {
            JSONObject jsonObject =new JSONObject(result.toString().replace("\"", "")); 
            JSONObject jsonCountObject = new JSONObject(jsonObject.getJSONArray("measurements").get(0).toString());
            count =(int) jsonCountObject.get("value");
        }
        catch (JSONException e) {
            e.printStackTrace();
        }

      return count;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...