WedX - журнал о программировании и компьютерных науках

Восстановление работоспособности привода пружинного ботинка ВНИЗ

Когда я получаю доступ к конечной точке /health из моего приложения Spring Boot (1.2.4.RELEASE), он возвращает статус DOWN:

{
    status: "DOWN"
}

Есть ли какие-нибудь начальные проекты или библиотеки, которые, как известно, перезаписывают статус? Есть ли еще какая-то причина (кроме написания кастомной), почему он вернет DOWN?

09.06.2015

Ответы:


1

В свойствах Spring установите endpoints.health.sensitive = false. Конечная точка /health затем вернет список различных индикаторов работоспособности, и вы сможете оттуда выполнять отладку.

Для производственной среды вы должны включить безопасность вокруг /health конечной точки.

Изменить

Как Винсент указал ниже, вам также понадобится management.security.enabled = false, если конечная точка работоспособности защищена, что, по-видимому, используется по умолчанию в более поздних версиях Spring Boot.

Обычная проблема, которую я видел с Spring Boot из коробки, заключается в том, что он автоматически настраивает Solr, и без дополнительной настройки конечная точка /health указывает, что Solr - это DOWN. Легкий способ исправить это - отключить автоконфигурацию Solr в вашем Application.java с помощью этой аннотации: @SpringBootApplication(exclude={SolrAutoConfiguration.class})

09.06.2015
  • Есть ли способ сохранить чувствительность к false, чтобы в процессе производства не было видно, что именно не работает, но также регистрировать фактическое состояние каждого компонента, чтобы служба ВЫКЛЮЧАЕТСЯ, я могу проверить журналы и посмотреть, что происходит? 15.09.2016
  • Хорошая точка зрения на Solr, однако более простой способ отключить его - использовать свойство: management.health.solr.enabled = true. 29.03.2017

  • 2

    Если URL-адрес работоспособности показывает ошибку «ВНИЗ» или HTTP 503 - служба недоступна, попробуйте добавить указанное ниже свойство в application.properties.

    URL - https://HOST:PORT/actuator/health

    management.endpoint.health.show-details=always
    

    Теперь URL-адрес должен показывать больше, чем просто ВНИЗ. Если хост Solr недоступен, игнорируйте проверку Solr, используя следующее исключение:

    @SpringBootApplication(exclude = { SolrAutoConfiguration.class })
    

    Теперь здоровье должно подойти. Проверка работоспособности в основном проверяет предварительно определенную внутреннюю проверку работоспособности (Пример - DataSourceHealthIndicator, DiskSpaceHealthIndicator, CassandraHealthIndicator и т. Д.).

    Если один из индикаторов работоспособности не работает, работоспособность будет снижена, и вы сможете увидеть ошибку как ответ после добавления свойства, упомянутого выше, в application.properties..

    08.11.2018
  • management.endpoint.health.show-details = always хороший, он фактически показывает, какой раздел службы не работает, чтобы вы могли предпринять соответствующие действия. 30.06.2020
  • Спасибо. Свойство в качестве названия свойства предлагает подробную информацию о состоянии проверки! Очень полезно! 05.02.2021

  • 3

    в моем случае мне понадобились оба этих свойства, чтобы получить более подробную информацию:

    endpoints.health.sensitive: false
    management.security.enabled: false
    

    В противном случае все, что я получал, - это статус DOWN.

    У меня возникла проблема с подключением RabbitMQ: мое приложение еще не использует его, но мы начали подключать связанный с ним код. Приложение работает нормально, но мы получали статус состояния DOWN, что было довольно озадачивающим: Spring Boot на удивление тихий в журналах, так как при запуске не отображается никаких ошибок (мне, вероятно, придется изменить мою конфигурацию, чтобы сделать ее более подробной)

    14.10.2016

    4

    У меня была такая же проблема с Springboot 2.1.0, где / actator / health возвращало { status: "DOWN" }, хотя приложение было запущено. Добавление management.health.defaults.enabled=false в файл свойств устранило проблему.

    01.04.2019
  • Это удаляет всю остальную информацию, так что это не имеет смысла. 27.05.2021

  • 5

    Вы, наверное, используете Consul 1.0. В Spring Could Consul 1.1.0 или около того есть известная проблема с Consul 1.0. См. Это - https://github.com/spring-cloud/spring-cloud-consul/issues/365 и это - https://github.com/hashicorp/consul/issues/3635

    Вам нужно будет перейти на Spring Could Consul 1.3.0.RELEASE.

    12.12.2017

    6

    По этой ссылке: https://github.com/indrabasak/spring-consul-example/blob/master/client/README.md, мы должны строго использовать указанные ниже свойства, чтобы избежать ошибки ниже.

    management.security.enabled=false
    management.health.consul.enabled=false
    

    введите здесь описание изображения

    12.04.2018
  • Состояние отказа работоспособности из-за сбоя проверки работоспособности консула в приложении Springboot было разрешено с помощью вашего предложения management.health.consul.enabled = false 03.09.2018

  • 7

    Для Springboot 2.3.2 и выше просто добавив

    1. management.health.defaults.enabled = false решил мою проблему.
    2. Нажатие того же API с / management / health теперь возвращает UP
    24.11.2020

    8

    Я исправил это, используя приведенный ниже код.

    Написал контроллер, который принимает отображение «/ private / health» (вместо этого вы можете использовать / health).

    import io.swagger.annotations.Api;
    import org.springframework.http.HttpStatus;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseStatus;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping
    @Api(value = "Heath Service Health", description = "Heath Service Health")
    public class HeathController {
      @GetMapping(value = "/private/health")
      @ResponseStatus(HttpStatus.OK)
      HealthStatusDto healthCheck() {
        return HealthStatusDto.builder().status("UP").build();
      }
    }
    

    Класс ниже не является обязательным. Вместо того, чтобы возвращать HealthStatusDto в указанном выше контроллере, вы можете вернуть любое другое сообщение в виде строки.

    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    
    @Data
    @AllArgsConstructor
    @Builder
    public final class HealthStatusDto {
      private final String status;
    }
    

    Добавьте ниже конфигурацию в application.yml

    # actuator
    # Disable Spring security
    management:
      security:
        enabled: false
    
    # Disable actuators
    endpoints:
      actuator:
        enabled: false
      enabled: false
    

    Надеюсь это поможет

    30.10.2018

    9

    Я построил фильтр для регистрации реакции работоспособности в случае сбоя.

    package br.gov.go.sspj.k9.util;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint;
    import org.springframework.stereotype.Component;
    
    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    @Component
    public class BadHealthCheckLogFilter implements Filter {
    
      private @Autowired HealthMvcEndpoint hme;
    
      @Override
      public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        chain.doFilter(request, response);
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        if (req.getRequestURI().endsWith("/health") && res.getStatus() != 200)
          log.error(hme.invoke(req, null).toString());
      }
    
      @Override
      public void init(FilterConfig filterConfig) {
      }
    
      @Override
      public void destroy() {
      }
    }
    
    15.02.2019
  • На самом деле я сделал то же самое - с другой стороны, проверка работоспособности вызывается дважды (может быть проблема с производительностью при использовании настраиваемых проверок работоспособности). 28.03.2019

  • 10

    Если вы только что добавили конечную точку и она не работает, возможно, что-то из проверок по умолчанию не работает, см. ссылка, чтобы узнать, что отмечено по умолчанию. в моем случае я забыл запустить эластичную программу, поэтому проверка работоспособности показала "неработоспособность", как указал Рашми, вы можете отключить настройки по умолчанию с помощью management.health.defaults.enabled=false, но лучше найти настоящую причину, по которой

    09.08.2019

    11

    management.endpoint.health.show-details =, это всегда помогает отладить, почему Health is DOWN, это помогло мне решить мою проблему.

    26.10.2020

    12

    У меня возникла та же проблема, когда я обновил приложение с Spring boot 1.5 до 2.3.5.RELEASE.

    Добавление endpoints.health.sensitive и других свойств, упомянутых в других ответах на application.properties, не сработало для меня.

    Я исправил проблему, исключив RabbitAutoConfiguration.

    @EnableAutoConfiguration(exclude = { RabbitAutoConfiguration.class })

    10.11.2020

    13

    В моем случае Spring (v2.1.5.RELEASE)

    endpoints.actuator.enabled = true management.health.defaults.enabled = false

    добавление вышеуказанных свойств решило мою проблему.

    присвоение статуса UP

    03.03.2021
    Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]