Возникли проблемы с реализацией пользовательского индикатора работоспособности привода Spring Boot.

Я пытался следовать документации, но каждый раз вижу только «статус: UP». Я даже дошел до универсального возврата Health.down.build(), но все равно вижу только «статус: UP». Я не уверен, что я сделал неправильно. У меня нет ошибок.


person slothish1    schedule 11.07.2016    source источник
comment
Вы проверили, что ваш пользовательский HealthIndicator вызывается? Как вы его добавили? Возможно, вы можете поделиться кодом, показывающим, что вы пробовали до сих пор?   -  person Andy Wilkinson    schedule 11.07.2016
comment
Просто вызывается с помощью: MyCustomHealthIndicator myCustomHealthIndicator = new MyCustomHealthIndicator(); myCustomHealthIndicator.health(); Нужно ли мне создавать собственный объект Health?   -  person slothish1    schedule 12.07.2016
comment
Ваш HealthIndicator должен быть бобом. Это фасоль?   -  person Andy Wilkinson    schedule 12.07.2016
comment
Мой метод health() уже имеет аннотацию \@Override (как показано в примере в документации), поэтому вы говорите, что я должен добавить аннотацию \@Bean или я должен сам определить ее как bean-компонент в файле xml?   -  person slothish1    schedule 12.07.2016
comment
Это должен быть bean-компонент, поэтому вам нужно либо вернуть его экземпляр из метода @Bean в классе @Configuration, либо вам нужно аннотировать класс с помощью @Component. Пример последнего приведен в документации.   -  person Andy Wilkinson    schedule 12.07.2016
comment
Именно так у меня настроено, поэтому я предполагаю, что health() почему-то никогда не вызывается. Я посмотрю некоторые и обновлю вопрос по мере необходимости   -  person slothish1    schedule 12.07.2016
comment
Нужно ли сборщику использовать то, что возвращает метод health(), чтобы отображать правильную информацию на localhost:8080/health как в индикаторе работоспособности дискового пространства, или должен ли автономный вызов health() отдельно в коде 'update' что выводится в конечной точке работоспособности? Нужно ли задавать свойства для конечной точки? Я отключил чувствительность и безопасность, поэтому я вижу базу данных и дисковое пространство, но все еще не мое.   -  person slothish1    schedule 13.07.2016
comment
Я действительно думаю, что вы должны поделиться кодом, который воспроизводит вашу проблему. Иначе очень сложно понять, что ты делаешь.   -  person Andy Wilkinson    schedule 13.07.2016


Ответы (1)


Ваш пользовательский HealthIndicator регистрируется на ходу, если вы добавляете аннотацию @Component к своему классу. Если вы затем вызовете метод actuator/health, я думаю, вы получите итоговый статус:

{"status":"DOWN"}

Просто добавьте это в свой application.properties, чтобы увидеть подробное представление результата HealthIndicator:

management.endpoint.health.show-details=always

и вы получите что-то вроде этого:

{
"status": "DOWN",
"details": {
    "MyCustomHealthCheck": {
        "status": "DOWN",
        "details": {
            "remote.system.down": "There is something wrong with system XXX"
        }
    },
    "diskSpace": {
        "status": "UP",
        "details": {
            "total": 499963174912,
            "free": 434322321408,
            "threshold": 10485760
        }
    }
}

}

person Martin Strube    schedule 23.04.2019