Как создать более одной конечной точки проверки работоспособности с помощью Spring Boot Actuator

Чем я хочу заниматься

  • Создайте две (разные) конечные точки с помощью Spring Boot Actuator

Моя среда

  • Spring загрузки 1.4.2
  • пружина-пыльник-пускатель-привод, встроенный в Spring Boot 1.4.2

Подробно

Я создаю веб-приложение с помощью Spring Boot, и мне нужно будет создать две отдельные конечные точки: одну для простой проверки работоспособности приложения, включая соединение с БД приложения и т. Д. (Это будет реализовано с помощью поведения по умолчанию «/ health») и другой - просто для проверки, готово ли приложение к приему HTTP-запросов (скажем, "/ httpcheck").

Я думаю, что для реализации функции проверки работоспособности это самый быстрый способ использовать Spring Boot Actuator (по умолчанию / health сопоставляется с конечной точкой проверки работоспособности). Я также понимаю, что мы можем настроить эту конечную точку, расширив AbstractHealthIndicator (чтобы он включал проверку работоспособности БД).

Но, насколько я мог видеть, я не мог найти способ создать более одной конечной точки для выполнения различных проверок работоспособности. Есть ли у вас какие-либо идеи?

Заранее спасибо.


person lethe2211    schedule 13.02.2017    source источник


Ответы (2)


Спасибо за Ваш ответ. Фактически, я решил эту проблему, реализовав новую конечную точку (/ httpcheck), чтобы просто проверить, работает ли ее HTTP-стек хорошо или нет.

HttpCheckEndpoint.java

@Component
@ConfigurationProperties(prefix = "endpoints.httpcheck") // Specifies the prefix on application.yml
public class HttpCheckEndpoint extends AbstractMvcEndpoint {

    public HttpCheckEndpoint() {
        super("/httpcheck", false);
    }

    /**
     * Check if simply the app can connect to their own HTTP stack and return 200 OK.
     * <ul>
     * <li>Method: GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS</li>
     * <li>Endpoint: "/httpcheck"</li>
     * </ul>
     */
    @RequestMapping
    @ResponseBody
    public ResponseEntity<String> checkHttpConnecton() {
        if (!isEnabled()) {
            return new ResponseEntity<String>("", HttpStatus.NOT_FOUND);
        } else {
            return new ResponseEntity<String>("{\"status\": \"UP\"}", HttpStatus.OK);
        }
    }

}

application.yml

endpoints:
  enabled: false # Default enabled/disabled on endpoints on Spring Boot Actuator
  health: # Health check (already prepared in Spring Boot Actuator)
    enabled: true
  httpcheck: # Simple HTTP connection check (newly created by myself)
    enabled: true

Я подтвердил, что это сработало, но не уверен, что это лучшее решение ...

person lethe2211    schedule 26.02.2017

Решение

  1. Вы можете использовать конечные точки Jolokia в своем приложении Spring-boot и зарегистрировать его в o.s.b.a.e.jmx.EndpointMBeanExporter вместе с вашими подключаемыми модулями Actuator.
  2. <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId> <version>1.2.2</version> </dependency>
  3. Конфигурации Jolokia в application.properties

         jolokia.config.debug=true
         endpoints.jolokia.enabled=true
    
person Praveen Kumar K S    schedule 13.02.2017
comment
Спасибо за ответ и извиняюсь за опоздание. Я подтвердил, что это сработало. Насколько я понимаю, jolokia контролирует приложение через JMX, верно? - person lethe2211; 26.02.2017
comment
Да, это дает вам более гибкий способ проверки работоспособности без какого-либо специального программирования для вашего сценария. Вы можете добавить это как зависимость в свой файл pom и несколько записей в application.properties / application. yml файл. - person Praveen Kumar K S; 26.02.2017