Spring Boot Actuator: поддержка Cloud Foundry

Модуль actuator Spring Boot включает дополнительную поддержку, которая активируется при развертывании на совместимый экземпляр Cloud Foundry. Путь /cloudfoundryapplication обеспечивает альтернативный безопасный маршрут ко всем компонентам @Endpoint.

Расширенная поддержка позволяет дополнить пользовательские интерфейсы управления Cloud Foundry (например, веб-приложение, которое вы можете использовать для просмотра развернутых приложений) информацией об actuator Spring Boot. Например, страница состояния приложения может содержать полную информацию о работоспособности вместо типичного состояния “running” или “stopped”.

Путь к /cloudfoundryapplication недоступен для обычных пользователей. Чтобы использовать конечную точку, с запросом должен быть передан действительный токен UAA.

Отключение расширенной поддержки Cloud Foundry Actuator

Если вы хотите полностью отключить конечные точки /cloudfoundryapplication, вы можете добавить следующий параметр в файл application.properties:

management.cloudfoundry.enabled=false

Cloud Foundry самозаверяющие сертификаты

По умолчанию проверка безопасности для конечных точек /cloudfoundryapplication выполняет вызовы SSL для различных служб Cloud Foundry. Если ваши службы Cloud Foundry UAA или Cloud Controller используют самозаверяющие сертификаты, вам необходимо установить следующее свойство (в application.properties):

management.cloudfoundry.skip-ssl-validation=true

Пользовательский контекстный путь

Если контекстный путь сервера был настроен на что-либо, кроме /, конечные точки Cloud Foundry не будут доступны в корне приложения. Например, если server.servlet.context-path=/app, конечные точки Cloud Foundry будут доступны в /app/cloudfoundryapplication/*.

Если вы ожидаете, что конечные точки Cloud Foundry будут всегда доступны в /cloudfoundryapplication/*, независимо от контекстного пути сервера, вам необходимо явно настроить его в своем приложении. Конфигурация будет отличаться в зависимости от используемого веб-сервера. Для Tomcat можно добавить следующую конфигурацию:

@Bean
public TomcatServletWebServerFactory servletWebServerFactory() {
    return new TomcatServletWebServerFactory() {

        @Override
        protected void prepareContext(Host host, ServletContextInitializer[] initializers) {
            super.prepareContext(host, initializers);
            StandardContext child = new StandardContext();
            child.addLifecycleListener(new Tomcat.FixContextListener());
            child.setPath("/cloudfoundryapplication");
            ServletContainerInitializer initializer = getServletContextInitializer(getContextPath());
            child.addServletContainerInitializer(initializer, Collections.emptySet());
            child.setCrossContext(true);
            host.addChild(child);
        }

    };
}

private ServletContainerInitializer getServletContextInitializer(String contextPath) {
    return (c, context) -> {
        Servlet servlet = new GenericServlet() {

            @Override
            public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
                ServletContext context = req.getServletContext().getContext(contextPath);
                context.getRequestDispatcher("/cloudfoundryapplication").forward(req, res);
            }

        };
        context.addServlet("cloudfoundry", servlet).addMapping("/*");
    };
}


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки