Как получить доступ к результатам проверки работоспособности пружинного привода в коде Java? - PullRequest
0 голосов
/ 09 июля 2019

Я настроил привод проверки работоспособности с конечной точкой / приводом / работоспособностью, который выдает что-то вроде следующего для моего приложения, когда вы переходите по URL:

{"status":"UP","app":{"status":"UP"},"db":{"status":"UP"}}

Есть ли способ, которым я могу получить доступэти результаты в моем коде Java с использованием Spring API?Я отслеживаю все, что выходит из строя, и рассылаю слабые уведомления, когда они это делают, меня особенно интересует мониторинг, когда происходит сбой БД.У меня уже есть метод, который создает слабое уведомление, мне просто нужно имя компонента, который вышел из строя (например, дБ).

Может кто-нибудь помочь с этим?

Надеюсь, мойвопрос имеет смысл, я все еще новичок в этом.

Редактировать: у меня @Override Health, если все приложение выходит из строя, оно переходит в это, не уверен, есть ли способ на этом этапеполучить то, что еще не работает в данный момент (дБ и т. д.) и перейти в метод Slack?:

    @Override
    public Health health() {
        System.out.println("HealthIndicator called at " + LocalDateTime.now() + " state=" + (state?"Up":"Down"));
        if(state) {
            return Health.up().build();
        } else { 
    triggerSlackNotifications(failedComponent, status);
            return Health.down().build();
        }
    }

1 Ответ

0 голосов
/ 09 июля 2019

Чтобы получить более подробную информацию о состоянии здоровья, вы можете добавить следующее в application.properties

management.endpoint.health.enabled=true
management.endpoint.health.show-details=always

После этого вы получите дополнительную информацию, как показано ниже.

{
    "status": "UP",
    "details": {
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 467848392704,
                "free": 69999702016,
                "threshold": 10485760
            }
        },
        "db": {
            "status": "UP",
            "details": {
                "database": "MySQL",
                "hello": 1
            }
        },
        "mail": {
            "status": "UP",
            "details": {
                "location": "smtp.gmail.com:<port>"
            }
        }
    }
}

Раствор

@GetMapping("/statusDB")
    public String healthCheck() throws IOException, JSONException
    {

          StringBuilder result = new StringBuilder();
          URL url = new URL("http://localhost:8080/actuator/health");
          HttpURLConnection conn = (HttpURLConnection) url.openConnection();
          conn.getResponseCode();
          BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
          String line;
          while ((line = rd.readLine()) != null) {
             result.append(line);
          }
          rd.close();
          System.out.println("Result: "+result.toString());

          JSONObject jsonObject =new JSONObject(result.toString());
          System.out.println("jsonObject: "+jsonObject);

          return "Status of Database is "+jsonObject.getJSONObject("details").getJSONObject("db").get("status");
    }

enter image description here

...