Почему деталь readinessState для /health отличается от состояния проверки готовности?

В Spring-Boot 2.4 у меня возникла проблема с конечной точкой работоспособности привода и проверкой готовности. Когда один из моих пользовательских ключевых компонентов не работает, конечная точка /health/readiness говорит DOWN, а конечная точка /health тоже, но деталь readinessState /health по-прежнему говорит UP.

Почему так? Разве readinessState не должен сказать и DOWN?

Ни один из многих учебников, которые я нашел в Интернете, похоже, не затрагивает этот вопрос.

Моя гипотеза: readinessState не имеет ничего общего с готовностью и предоставляет другую информацию. Надеюсь, я ошибаюсь, потому что это было бы бессмысленно, и я понимаю код, кажется, указывает на обратное.


Подробнее о моей конфигурации:

Соответствующая выдержка из application.yml

management:
  endpoints:
    web:
      base-path: /
  endpoint:
    health:
      show-details: ALWAYS
      probes:
        enabled: true
      group:
        readiness:
          include: db, myCustom, diskSpace

И когда я делаю myCustom перейти DOWN, появляются следующие результаты:

GET /health

{
    "status": "DOWN",
    "components": {
        ...,  // other components
        "myCustom": {
            "status": "DOWN"
        },
        "readinessState": {
            "status": "UP"  // here UP
        }
    },
    "groups": [
        "liveness",
        "readiness"
    ]
}

GET /health/readiness

{
    "status": "DOWN",  // but here DOWN
    "components": {
        ...,  // other components
        "myCustom": {
            "status": "DOWN"
        }
    }
}

person AdrienW    schedule 01.02.2021    source источник


Ответы (1)


Состояние готовности отслеживает только определенные группы работоспособности. Это нужно рассказать о вашем пользовательском компоненте.

По умолчанию Spring Boot не добавляет в эти группы другие индикаторы работоспособности.

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-kubernetes-probes-external-state

person Abhijit Sarkar    schedule 01.02.2021
comment
Итак, readinessState — это просто базовая информация о готовности по умолчанию без зависимостей? и я могу включить его в группу готовности с моими кастомными проверками, чтобы в пробе готовности была правильная картинка? - person AdrienW; 01.02.2021
comment
Под настраиваемой проверкой, если вы имеете в виду реализованную вами проверку работоспособности, то все, что вам нужно, это management.endpoint.health.group.readiness.include=readinessState,customCheck. - person Abhijit Sarkar; 01.02.2021