Tavaszi felhő - nyomkövető szolgáltatások Zipkinnel

1. Áttekintés

Ebben a cikkben hozzátesszük Zipkin tavaszi felhő projektünkhöz. Zipkin egy nyílt forráskódú projekt, amely mechanizmusokat biztosít a nyomok elküldéséhez, fogadásához, tárolásához és vizualizálásához. Ez lehetővé teszi számunkra, hogy összefüggést hozzunk a szerverek között, és sokkal tisztább képet kapjunk arról, hogy mi történik a szolgáltatásainkban.

Ez a cikk nem az elosztott nyomkövetés vagy a tavaszi felhő bevezető cikke. Ha további információt szeretne az elosztott nyomkövetésről, olvassa el a tavaszi álom bevezetésünket.

2. Zipkin-szolgáltatás

A mi Zipkin szolgáltatás minden üzletünk boltjaként szolgál. Minden egyes tartományt elküldünk ennek a szolgáltatásnak, és nyomokban összegyűjtjük a későbbi azonosítás céljából.

2.1. Beállít

Hozzon létre egy új Spring Boot projektet, és adja hozzá ezeket a függőségeket pom.xml:

 io.zipkin.java zipkin-server io.zipkin.java zipkin-autoconfigure-ui futásidejű 

Referenciaként: a legfrissebb verziót itt találja Maven Central (zipkin-szerver, zipkin-autoconfigure-ui). A függőségek változatai a spring-boot-starter-szülőtől származnak.

2.2. A Zipkin Server engedélyezése

A Zipkin szerveren, hozzá kell adnunk néhány kommentárt a fő alkalmazásosztályhoz:

@SpringBootApplication @EnableZipkinServer nyilvános osztály ZipkinApplication {...}

Az új kommentár @EnableZipkinServer beállítja ezt a kiszolgálót, hogy meghallgassa a bejövő tartományokat, és felhasználói felületünkként működjön a lekérdezéseknél.

2.3. Konfiguráció

Először hozzunk létre egy nevű fájlt bootstrap.tulajdonságok ban ben src / main / resources. Ne feledje, hogy erre a fájlra van szükség a konfigurációnk lekéréséhez a konfigurációs kiszolgálóról.

Adjuk hozzá ezeket a tulajdonságokat:

spring.cloud.config.name = zipkin spring.cloud.config.discovery.service-id = config spring.cloud.config.discovery.enabled = true spring.cloud.config.username = configUser spring.cloud.config.password = configPassword eureka.client.serviceUrl.defaultZone = // discUser: [e-mail védett]: 8082 / eureka /

Most adjunk hozzá egy konfigurációs fájlt a (z) helyen található config repo-hoz c: \ Felhasználók \ {felhasználónév} \ Windows rendszeren vagy / home / {felhasználónév} / on * nix.

Ebben a könyvtárban adjunk hozzá egy nevű fájlt cipzár.tulajdonságok és adja hozzá ezeket a tartalmakat:

spring.application.name = zipkin server.port = 9411 eureka.client.region = alapértelmezett eureka.client.registryFetchIntervalSeconds = 5 logging.level.org.springframework.web = debug

Ne felejtse el végrehajtani a változásokat ebben a könyvtárban, hogy a konfigurációs szolgáltatás észlelje a változásokat és betöltse a fájlt.

2.4. Fuss

Most futtassuk az alkalmazást, és keressük meg a // localhost: 9411 címet. Önnel kellene köszöntenünk Zipkiné honlap:

Nagy! Most készen állunk arra, hogy néhány függőséget és konfigurációt hozzáadjunk szolgáltatásainkhoz, amelyeket nyomon akarunk követni.

3. Szolgáltatás konfigurálása

Az erőforrás-kiszolgálók beállítása nagyjából megegyezik. A következő szakaszokban részletesen bemutatjuk a könyv-szolgáltatás. Ezt követően nyomon követjük a frissítéseknek a minősítés-szolgáltatás és gateway-service.

3.1. Beállít

Ahhoz, hogy elkezdjen átfogó szakaszokat küldeni a Zipkin szerveren, hozzáadjuk ezt a függőséget a mi pom.xml fájl:

 org.springframework.cloud tavasz-felhő-indító-cipzár 

Referenciaként: a legfrissebb verziót itt találja Maven Central (tavasz-felhő-kezdő-cipzár).

3.2. Tavaszi konfigur

Hozzá kell adnunk néhány konfigurációt, hogy könyv-szolgáltatás használni fogja Eureka hogy megtalálja a mi Zipkin szolgáltatás. Nyisd ki BookServiceApplication.java és adja hozzá ezt a kódot a fájlhoz:

@Autowired privát EurekaClient eurekaClient; @Autowired privát SpanMetricReporter spanMetricReporter; @Autowired private ZipkinProperties zipkinProperties; @Value ("$ {spring.sleuth.web.skipPattern}") privát String skipPattern; // ... itt megy a fő módszer @Bean public ZipkinSpanReporter makeZipkinSpanReporter () {return new ZipkinSpanReporter () {private HttpZipkinSpanReporter delegate; privát String baseUrl; @Orride public void report (Span span) {instanceInfo instance = eurekaClient .getNextServerFromEureka ("zipkin", hamis); if (! (baseUrl! = null && instance.getHomePageUrl (). egyenlő (baseUrl))) {baseUrl = instance.getHomePageUrl (); delegate = új HttpZipkinSpanReporter (új RestTemplate (), baseUrl, zipkinProperties.getFlushInterval (), spanMetricReporter); if (! span.name.matches (skipPattern)) delegate.report (span); }}}; }

A fenti konfiguráció regisztrál egy egyéni ZipkinSpanReporter amely megkapja az URL-jét az eurekától. Ez a kód nyomon követi a meglévő URL-t is, és csak az URL-t frissíti HttpZipkinSpanReporter ha az URL megváltozik. Így függetlenül attól, hogy hová telepítjük a Zipkin szerverünket, mindig képesek leszünk megtalálni azt a szolgáltatás újraindítása nélkül.

Importáljuk az alapértelmezett Zipkin tulajdonságokat is, amelyeket a rugós rendszerindítás tölt be, és felhasználjuk őket az egyedi riporter kezeléséhez.

3.3. Konfiguráció

Most adjunk hozzá néhány konfigurációt a mi könyv-szolgáltatás.tulajdonságok fájl a konfigurációs adattárban:

spring.sleuth.sampler.percentage = 1.0 spring.sleuth.web.skipPattern = (^ tisztítás. *)

Zipkin a műveletek mintavételezésével működik egy szerveren. A tavasz.sleuth.sampler.procent 1,0-ra állítjuk a mintavételi arányt 100% -ra. Az átugrási minta egyszerűen egy szokásos kifejezés, amelyet a név egyezik.

Az átugrási minta blokkolja az összes olyan átfutás jelentését, amely a „tisztítás” szóval kezdődik. Ezzel le lehet állítani a tavaszi munkamenet kódbázisából származó szakaszokat.

3.4. Értékelő szolgáltatás

Kövesse ugyanezeket a lépéseket könyv-szolgáltatás szakaszban, alkalmazva a módosításokat a megfelelő fájlokra minősítés-szolgáltatás.

3.5. Gateway szolgáltatás

Kövesse ugyanezeket a lépéseket könyv-szolgáltatás. De amikor hozzáadja a konfigurációt az átjáróhoz.tulajdonságok adja ezeket helyette:

spring.sleuth.sampler.percentage = 1.0 spring.sleuth.web.skipPattern = (^ tisztítás. * |. + favicon. *)

Ez úgy konfigurálja az átjáró szolgáltatást, hogy ne küldjön átterjedéseket a favicon vagy a tavaszi munkamenetről.

3.6. Fuss

Ha még nem tette meg, indítsa el a konfig, felfedezés, átjáró, könyv, értékelés, és cipzár szolgáltatások.

Keresse meg a // localhost: 8080 / book-service / books mappát.

Nyisson meg egy új lapot, és keresse meg a // localhost: 9411 címet. Válassza ki a könyv-szolgáltatást, és nyomja meg a „Nyomok keresése” gombot. Látnia kell egy nyomot a keresési eredmények között. Kattintson a megnyitás nyomára:

A nyomkövetési oldalon láthatjuk a kérést szolgáltatás szerint lebontva. Az első két fesztávolságot a átjáró, és az utolsót a könyv-szolgáltatás. Ez megmutatja, mennyi időt töltött a kérelem feldolgozása a könyv-szolgáltatás, 18,379 ms, és a átjáró, 87,961 ms.

4. Következtetés

Láttuk, milyen egyszerű integrálni Zipkin felhő alkalmazásunkba.

Ez némi szükséges betekintést nyújt abba, hogyan halad a kommunikáció az alkalmazásunkon keresztül. Ahogy alkalmazásunk egyre bonyolultabbá válik, a Zipkin nagyon szükséges információkat nyújthat számunkra arról, hogy hol töltik a kérelmek az idejüket. Ez segíthet meghatározni, hol lelassulnak a dolgok, és jelezheti, hogy alkalmazásunk mely területein kell javítani.

Mint mindig, a forráskódot a Githubon találja.