Útmutató a tavaszi indítás adminisztrátorához

1. Áttekintés

A Spring Boot Admin egy webalkalmazás, amelyet a Spring Boot alkalmazások kezelésére és felügyeletére használnak. Minden alkalmazás ügyfélnek számít, és regisztrálódik az admin szerverre. A színfalak mögött a varázslatot a Spring Boot Actuator végpontjai adják.

Ebben a cikkben leírjuk a Spring Boot Admin szerver konfigurálásának lépéseit és azt, hogy miként válik az alkalmazás klienssé.

2. Az adminisztrációs kiszolgáló beállítása

Először is létre kell hoznunk egy egyszerű Spring Boot webalkalmazást, és hozzá kell adnunk a következő Maven-függőséget is:

 de.codecentric spring-boot-admin-starter-server 2.2.2 

Ezek után a @EnableAdminServer elérhető lesz, ezért felvesszük a fő osztályba, az alábbi példa szerint:

@EnableAdminServer @SpringBootApplication nyilvános osztály SpringBootAdminServerApplication {public static void main (String [] args) {SpringApplication.run (SpringBootAdminServerApplication.class, args); }}

Ezen a ponton készen állunk a kiszolgáló elindítására és az ügyfélalkalmazások regisztrálására.

3. Ügyfél beállítása

Most, miután beállítottuk az admin szerverünket, regisztrálhatjuk az első Spring Boot alkalmazást kliensként. Hozzá kell adnunk a következő Maven-függőséget:

 de.codecentric spring-boot-admin-starter-client 2.2.2 

Ezután be kell állítanunk az ügyfelet, hogy tudjon az adminisztrációs kiszolgáló alap URL-jéről. Ehhez csak hozzá kell adnunk a következő tulajdonságot:

spring.boot.admin.client.url = // localhost: 8080

A Spring Boot 2-től kezdődően a végpontoktól eltérő Egészség és info alapértelmezés szerint nincsenek kitéve.

Tegyük ki az összes végpontot:

management.endpoints.web.exposure.include = * management.endpoint.health.show-details = mindig

4. Biztonsági konfiguráció

A Spring Boot Admin szerver hozzáfér az alkalmazás érzékeny végpontjaihoz, így javasoljuk, hogy adjunk hozzá bizonyos biztonsági konfigurációkat az admin és az ügyfélalkalmazásokhoz egyaránt.

Eleinte az admin szerver biztonságának konfigurálására összpontosítunk. Hozzá kell adnunk a következő Maven-függőségeket:

 de.codecentric spring-boot-admin-server-ui-login 1.5.7 org.springframework.boot spring-boot-starter-security 2.1.8. KÖZLEMÉNY 

Ez lehetővé teszi a biztonságot, és hozzáad egy bejelentkezési felületet az adminisztrációs alkalmazáshoz.

Ezután hozzáadunk egy biztonsági konfigurációs osztályt, amint az alább látható:

@Configuration nyilvános osztály A WebSecurityConfig kiterjeszti a WebSecurityConfigurerAdapter {private final AdminServerProperties adminServer; public WebSecurityConfig (AdminServerProperties adminServer) {this.adminServer = adminServer; } A @Orride védett void configure (HttpSecurity http) dobja a {SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler () kivételt; successHandler.setTargetUrlParameter ("redirectTo"); successHandler.setDefaultTargetUrl (this.adminServer.getContextPath () + "/"); http .authorizeRequests () .antMatchers (this.adminServer.getContextPath () + "/ assets / **"). allowAll () .antMatchers (this.adminServer.getContextPath () + "/ login"). allowAll () .anyRequest () .authenticated () .and () .formLogin () .loginPage (this.adminServer.getContextPath () + "/ login") .successHandler (successHandler) .and () .logout () .logoutUrl (this.adminServer. getContextPath () + "/ logout") .and () .httpBasic () .and () .csrf () .csrfTokenRepository (CookieCsrfTokenRepository.withHttpOnlyFalse ()) .ignoringRequestMatchers (new AntPathRequestMonterer (this.) példányok ", HttpMethod.POST.toString ()), új AntPathRequestMatcher (this.adminServer.getContextPath () +" / példányok / * ", HttpMethod.DELETE.toString ()), új AntPathRequestMatcher (this.adminServer. "/ actuator / **")) .and () .rememberMe () .key (UUID.randomUUID (). toString ()) .tokenValiditySeconds (1209600); }}

Van egy egyszerű biztonsági konfiguráció, de hozzáadása után észrevesszük, hogy az ügyfél már nem tud regisztrálni a szerverre.

Az ügyfél regisztrálásához az újonnan védett kiszolgálóhoz további konfigurációt kell adnunk az ügyfél tulajdonságfájljába:

spring.boot.admin.client.username = admin spring.boot.admin.client.password = admin

Itt vagyunk, ahol biztonságossá tettük az admin szerverünket. A termelési rendszerben természetesen azok az alkalmazások lesznek biztonságban, amelyeket figyelni próbálunk. Tehát hozzáadunk biztonságot az ügyfélhöz is - és az adminisztrációs kiszolgáló felhasználói felületén észrevesszük, hogy az ügyféladatok már nem állnak rendelkezésre.

Hozzá kell adnunk néhány metaadatot, amelyet elküldünk az admin szervernek. Ezeket az információkat a kiszolgáló használja az ügyfél végpontjaihoz való csatlakozáshoz:

spring.security.user.name = kliens spring.security.user.password = ügyfél spring.boot.admin.client.instance.metadata.user.name = $ {spring.security.user.name} spring.boot.admin. client.instance.metadata.user.password = $ {spring.security.user.password}

A hitelesítő adatok HTTP-n keresztül történő küldése természetesen nem biztonságos - ezért a kommunikációnak HTTPS-en keresztül kell mennie.

5. Monitoring és kezelési szolgáltatások

A Spring Boot Admin beállítható úgy, hogy csak azokat az információkat jelenítse meg, amelyeket hasznosnak tartunk. Csak meg kell változtatnunk az alapértelmezett konfigurációt, és hozzá kell adnunk a saját szükséges mutatóinkat:

spring.boot.admin.routes.endpoints = env, metrics, trace, jolokia, info, configprops

Ahogy továbbmegyünk, látni fogjuk, hogy van még néhány olyan funkció, amelyet felfedezhetünk. Beszélünk JMX babkezelés felhasználásával Jolokia és még Loglevel menedzsment.

A Spring Boot Admin is támogatja a fürt replikációt a Hazelcast segítségével. Csak hozzá kell adnunk a következő Maven-függőséget, és hagyni kell, hogy az autokonfiguráció elvégezze a többit:

 com.hazelcast hazelcast 3.12.2 

Ha a Hazelcast tartós példányát akarjuk, akkor egyéni konfigurációt fogunk használni:

@Configuration public class HazelcastConfig {@Bean public Config hazelcast () {MapConfig eventStoreMap = new MapConfig ("spring-boot-admin-event-store") .setInMemoryFormat (InMemoryFormat.OBJECT) .setBackupCount (1) .setEvictionPolicy ) .setMergePolicyConfig (új MergePolicyConfig (PutIfAbsentMapMergePolicy.class.getName (), 100)); MapConfig sentNotificationsMap = new MapConfig ("spring-boot-admin-application-store") .setInMemoryFormat (InMemoryFormat.OBJECT) .setBackupCount (1) .setEvictionPolicy (EvictionPolicy.LRU) .setMergePolicyColf (Feldolgozva) (100)); Config config = új Config (); config.addMapConfig (eventStoreMap); config.addMapConfig (sentNotificationsMap); config.setProperty ("hazelcast.jmx", "true"); config.getNetworkConfig () .getJoin () .getMulticastConfig () .setEnabled (hamis); TcpIpConfig tcpIpConfig = config.getNetworkConfig () .getJoin () .getTcpIpConfig (); tcpIpConfig.setEnabled (true); tcpIpConfig.setMembers (Collections.singletonList ("127.0.0.1")); return config; }}

6. Értesítések

Ezután megbeszéljük az értesítések fogadásának lehetőségét az admin szerverről, ha valami történik a regisztrált kliensünkkel. A konfigurációhoz a következő értesítők állnak rendelkezésre:

  • Email
  • PagerDuty
  • OpsGenie
  • Hipchat
  • Laza
  • Csevegjünk

6.1. Email Értesítések

Először az adminisztrációs kiszolgálónkra vonatkozó e-mail értesítések konfigurálására összpontosítunk. Ahhoz, hogy ez megtörténjen, hozzá kell adnunk az e-mail indító függőségét az alábbiak szerint:

 org.springframework.boot spring-boot-starter-mail 2.1.7.KÖZLEMÉNY 

Ezt követően hozzá kell adnunk néhány levelezési konfigurációt:

spring.mail.host = smtp.example.com spring.mail.username = smtp_user spring.mail.password = smtp_ jelszó [e-mail védett]

Most, amikor regisztrált ügyfelünk állapotát UP-ról OFFLINE-re vagy másra változtatja, e-mailt küldünk a fent beállított címre. A többi bejelentő esetében a konfiguráció hasonló.

6.2. Hipchat értesítések

Mint látni fogjuk, a Hipchat-tal való integráció meglehetősen egyszerű; csak néhány kötelező tulajdonságot kell beállítani:

spring.boot.admin.notify.hipchat.auth-token = spring.boot.admin.notify.hipchat.room-id = spring.boot.admin.notify.hipchat.url = // céged.hipchat.com/v2/

Miután ezeket meghatároztuk, a Hipchat szobában észrevesszük, hogy értesítéseket kapunk, amikor az ügyfél állapota megváltozik.

6.3. Testreszabott értesítések konfigurálása

Konfigurálhatunk egy egyedi értesítési rendszert, amelynek rendelkezésére áll néhány hatékony eszköz. Használhatjuk a emlékeztető értesítő ütemezett értesítést küldeni, amíg az ügyfél állapota megváltozik.

Vagy esetleg értesítéseket akarunk küldeni egy szűrt klienscsoportnak. Ehhez használhatjuk a szűrő értesítő:

@Configuration public class NotifierConfiguration {private final instanceRepository repository; privát végleges ObjectProvider egyébJelentők; public NotifierConfiguration (instanceRepository repository, ObjectProvider otherNotifiers) {this.repository = repository; this.otherNotifiers = egyébNotifiers; } @Bean public FilteringNotifier filteringNotifier () {CompositeNotifier delegate = new CompositeNotifier (this.otherNotifiers.getIfAvailable (Gyűjtemények: emptyList)); return new FilteringNotifier (delegálja, ez a repository); } @Bean public LoggingNotifier notifier () {return new LoggingNotifier (repository); } @Primary @Bean (initMethod = "start", destrMethod = "stop") public RemindingNotifier meelde emlékeztető () {RemindingNotifier emlékeztetőNotifier = új RemindingNotifier (filteringNotifier (), adattár); emlékeztetőNotifier.setReminderPeriod (percek időtartama (5)); emlékeztetőNotifier.setCheckReminderInverval (másodpercek időtartama (60)); visszatérési emlékeztetőNotifier; }}

7. Következtetés

Ez a bemutató bemutatja az egyszerű lépéseket, amelyeket meg kell tennie annak érdekében, hogy a Spring Boot Admin segítségével felügyelhesse és kezelhesse Spring Boot alkalmazásait.

Az automatikus konfiguráció lehetővé teszi számunkra, hogy csak néhány kisebb konfigurációt adjunk hozzá, és a végén egy teljesen működő rendszergazdával rendelkezzünk.

És mint mindig, az útmutató példakódja megtalálható a Github oldalon.