SpringBoot Actuator eğer projede bazı bean'ler bulursa otomatik olarak bunlarla ilgili health indicator'ları da yaratıyor. Açıklaması şöyle
The following HealthIndicators are auto-configured by Spring Boot when appropriate. You can also enable/disable selected indicators by configuring management.health.key.enabled, with the key listed in the table below.
Liste uzun
cassandra,couchbase,datasource,diskspace,elasticsearch,hazelcast,influxdb,jms,ldap,mail,mongo,neo4j,ping,rabbit,redis,solr
Bean'leri Kontrol Etmek
Default yüklenen bean'ler aslında çok az çıktı veriyorlar. http://localhost:8080/actuator/health adresine gittiğimizde sadece şu çıktıyı alırız.
{"status": "UP"}
Çünkü açıklaması şöyle. Yani bir sürü yerden toplanan status tek bir değere çevriliyor.
Spring Actuator aggregates statuses from different subsystems of the application in one final status.
application.properties Alanları
show-details Alanı
"always" veya "when_authorized" değerleri alabilir
Örnek
Eğer daha detaylı çıktı olmak istersek şöyle yaparız
management.endpoint.health.show-details=always
Bu sefer şu çıktıyı alırız. Burada PostgreSQL çıktısı görülebilir.
{"status": "UP","details": {"diskspace": {"status": "UP","details": {"total": 498989641727,"free": 80724643840,"threshold": 10485760}},"db": {"status": "UP","details": {"database": "PostgreSQL","hello": 1}}}}
Örnek
Çıktı olarak şunu alırız. Burada MySQL çıktısı görülebilir.
{ "status": "UP", "components": { "db": { "status": "UP", "details": { "database": "MySQL", "validationQuery": "isValid()" } }, "diskSpace": { "status": "UP", "details": { "total": 101057732608, "free": 43956203520, "threshold": 10485760, "exists": true } }, "ping": { "status": "UP" } } }
3. defaults Alanı
Default yüklenen bean'leri kapatmak için şöyle yaparız
management.health.defaults.enabled=false
Belirli bir bean'i çalışmaz hale getirmek için şöyle yaparız
management.health.cassandra.enabled=false
4. show-components Alanı
"always" veya "when_authorized" değerleri alabilir
Örnek
Şöyle yaparız
management:endpoints:web:base-path: /endpoint:health:show-details: alwaysshow-components: always
Çıktı olarak şunu alırız. Burada db ve redis görülebilir.
{"status": "UP","components": {"db": {"status": "UP","details": {"database": "PostgreSQL","validationQuery": "isValid()"}},"diskSpace": {"status": "UP","details": {"total": 499963170816,"free": 309942484992,"threshold": 10485760,"exists": true}},"ping": {"status": "UP"},"redis": {"status": "UP","details": {"version": "6.0.4"}}}}
5. Kubernetes
SpringCloud Kubernetes projesi ile Health Endpoint biraz farklılaşıyor
1. probes Alanı
Örnek
Şöyle yaparız
# enable liveness and readiness probes for the Kubernetes environment management.health.kubernetes.enabled=true management.health.livenessstate.enabled=true management.health.readinessstate.enabled=true management.endpoint.health.probes.enabled=true # comprehensive health information management.endpoint.health.validate-group-membership=true management.endpoint.health.group.liveness.show-details=always management.endpoint.health.group.liveness.show-components=always management.endpoint.health.group.readiness.show-details=always management.endpoint.health.group.readiness.show-components=always
Örnek
Şöyle yaparız
# Change addresses for # /actuator/health/liveness # /actuator/health/readiness management.endpoint.health.probes.add-additional-paths=true management.endpoint.health.group.liveness.additional-path=server:liveness management.endpoint.health.group.readiness.additional-path=server:readiness
HealthIndicator Arayüzü
HealthIndicator Arayüzü yazısına taşıdım
CompositeHealthContributor Arayüzü
Bu arayüzden kalıtan sınıfımız, yine kendi kodladığımız HealthContributor sınıflarını kullanarak bileşik bir health bileşeni yaratabilmeyi sağlar.
Hiç yorum yok:
Yorum Gönder