Spring Boot Admin ile Uygulamaların Monitör Edilmesi
Bu yazıda Spring Boot Admin ile Spring Boot uygulamalarımızı nasıl izleyebileceğimiz üzerine duracağız. Spring Boot Admin Nedir gibi daha temel soruların cevabı önceki yazılarımızda mevcut aşağıdaki linklerden ulaşabilirsiniz.
https://bilisim.io/2017/10/11/springboot-admin-nedir-nasil-kullanilir/
Bu yazının konusu sadece Spring Boot Admin ve ona uygulamaların nasıl bağlanacağı üzerine olacaktır.
Server
Basit bir Spring Boot uygulaması oluşturuyoruz ve aşağıdaki dependency ekliyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>2.2.2</version> </dependency> |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@SpringBootApplication @EnableAdminServer public class BurrdaAdminServerApplication { public static void main(String[] args) { SpringApplication.run(BurrdaAdminServerApplication.class, args); } } |
Yapmamız gereken tek işlem @EnableAdminServer eklemek.
Uygulamayı ayağa kaldırdığımızda aşağıdaki gibi bir ekran göreceğiz.
Client
Admin uygulaması, kendisine bağlanan uygulamaların bilgilerini alabilmesi için client uygulamalar actuator içermelidir. Aynı zamanda bu uygulamaların actuator end-pointleri açık olmalıdır. Yeni versiyonlarda kapalı gelmektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> |
Uygulama Server’ın nerede olduğunu bilmesini gerekmektedir ve kayıt olurken kullanacağı uygulama ismini aşağıdaki gibi vermemiz gerekir.
1 2 3 4 5 6 7 8 9 10 11 |
spring: application: name: email-service boot: admin: client: url: http://localhost:8765 |
Spring Boot 2 de end-pointer kapalı olduğu için oları açmamız gerek.
1 2 3 4 5 6 7 8 9 10 11 12 |
management: endpoint: health: show-details: always endpoints: web: exposure: include: '*' |
Notifications
Ayrıca uygulamaların durumlarını izlemek için aşağıdaki uygulamaları kullanabilirsiniz. Ben slack kullanarak yapmayı tercih ettim. Aslında uygulaması oldukça basit. Slack içerisinde nasıl oluşturacağınız yazıyor aslında fakat ben bir kaç temel adıma değineceğim.
Yeni bir channel oluşturun.
Incoming WebHooks ekleyin.
Oluşturduğunuz grubu seçerek bir web-hook oluşturun.
Slack tarafındaki işlem bu kadar. Admin tarafında ise aşağıdaki gibi bir konfigürasyon yeterli olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
spring: boot: admin: notify: slack: enabled: true message: '#{instance.registration.name} (#{instance.id}) is #{event.statusInfo.status}' username: Spring Boot Admin webhook-url: https://hooks.slack.com/services/... |
Faydalı olması dileğiyle.