Ts'ebetso ea Ts'ebeletso, OpenTracing le Jaeger

Ts'ebetso ea Ts'ebeletso, OpenTracing le Jaeger

Re sebelisa meralo ea microservice mererong ea rona. Ha mathata a ts'ebetso a etsahala, nako e ngata e sebelisoa ho lekola le ho arola likutung. Ha u kenya linako tsa ts'ebetso ea motho ka mong faeleng ea log, hangata ho thata ho utloisisa hore na ke eng e lebisitseng kopong ea ts'ebetso ena, ho latela tatellano ea liketso kapa ho fetoha ha nako ea ts'ebetso e le 'ngoe ho ea ho e' ngoe litšebeletsong tse fapaneng.

E le ho fokotsa mosebetsi oa matsoho, re ile ra etsa qeto ea ho sebelisa e 'ngoe ea lisebelisoa tsa ho lata. Mabapi le hore na ke hobane'ng ha u ka sebelisa ho ts'oara le hore na re e entse joang, 'me ho tla tšohloa sehloohong sena.

Ke mathata afe a ka rarolloang ka ho latela mohlala

  1. Fumana litšitiso tsa ts'ebetso ka har'a ts'ebeletso e le 'ngoe le sefateng sohle sa ts'ebetso lipakeng tsa lits'ebeletso tsohle tse nkang karolo. Ka mohlala:
    • Mehala e mengata e khuts'oane e latellanang lipakeng tsa lits'ebeletso, mohlala, ho geocoding kapa ho database.
    • I/O e emetse nako e telele, joalo ka phetisetso ea marang-rang kapa ho baloa ha disk.
    • Phatlalatso e telele ea data.
    • Ts'ebetso e telele e hlokang cpu.
    • Likarolo tsa khoutu tse sa hlokeng ho fumana sephetho sa ho qetela 'me li ka tlosoa kapa tsa lieha.
  2. Utloisisa ka tatellano hore na ho bitsoa eng le hore na ho etsahala'ng ha opereishene e etsoa.
    Ts'ebetso ea Ts'ebeletso, OpenTracing le Jaeger
    Ho ka bonoa hore, mohlala, Kopo e fihlile ts'ebeletso ea WS -> ts'ebeletso ea WS e kentse data ka ts'ebeletso ea R -> ebe e romela kopo ho ts'ebeletso ea V -> tšebeletso ea V e laetse data e ngata ho tsoa ho R. tšebeletso -> e ile ea ea tšebeletsong ea P -> tšebeletso ea P e ile ea boela ea ea tšebeletsong ea R -> tšebeletso ea V e ile ea hlokomoloha sephetho 'me ea ea tšebeletsong ea J -> eaba e khutlisetsa karabo ho tšebeletso ea WS, ha e ntse e tsoela pele ho bala ntho e' ngoe hape bokamorao.
    Ntle le mohlala o joalo kapa litokomane tse qaqileng bakeng sa ts'ebetso eohle, ho thata haholo ho utloisisa se etsahalang ha u sheba khoutu ka lekhetlo la pele, 'me khoutu e hasane ho pholletsa le litšebeletso tse fapaneng' me e patiloe ka mor'a letšoele la li-bins le li-interfaces.
  3. Pokello ea tlhahisoleseling mabapi le sefate sa polao bakeng sa tlhahlobo e chechisitsoeng e latelang. Karolong e 'ngoe le e' ngoe ea ts'ebetso, o ka eketsa tlhaiso-leseling e fumanehang mothating ona ebe o fumana hore na data ea ho kenya e lebisitse boemong bofe bo tšoanang. Ka mohlala:
    • Theneketso
    • Litokelo
    • Mofuta oa mokhoa o khethiloeng
    • Phoso ea ho kena kapa ea ho phethahatsa
  4. Ho fetola mesaletsa hore e be sehlotšoana sa metrics le tlhahlobo e eketsehileng e seng e ntse e le ka sebopeho sa metrics.

Ke mohlala ofe o ka hlahang. Span

Ha ho lateloa ho na le mohopolo oa span, ena ke analogue ea log e le 'ngoe, ho console. Spa e na le:

  • Lebitso, hangata lebitso la mokhoa o ileng oa phethisoa
  • Lebitso la tšebeletso eo nako e entsoeng ka eona
  • ID ea hau e ikhethang
  • Mofuta o mong oa tlhaiso-leseling ea meta ka sebopeho sa senotlolo / boleng bo kentsoeng ho eona. Ka mohlala, mekhoa ea mekhoa kapa mokhoa o felile ka phoso kapa che
  • Linako tsa ho qala le ho qetela bakeng sa nako ena
  • ID ea nako ea motsoali

Nako e 'ngoe le e' ngoe e romelloa ho 'mokelli oa span hore e bolokoe polokelong ea litaba bakeng sa tlhahlobo ea morao-rao hang ha e qeta ho e phetha. Nakong e tlang, o ka haha ​​​​sefate sa mefuta eohle ka ho hokahanya ka id ea motsoali. Ha u hlahloba, u ka fumana, ka mohlala, likarolo tsohle tsa tšebeletso tse ileng tsa nka nako e telele ho feta nako e itseng. Ho feta moo, ka ho ea sebakeng se itseng, sheba sefate sohle ka holimo le ka tlas'a bolelele bona.

Ts'ebetso ea Ts'ebeletso, OpenTracing le Jaeger

Opentrace, Jagger le kamoo re e sebelisitseng merero ea rona

Ho na le tekanyetso e tloaelehileng opentrace, e hlalosang hore na ho bokelloa joang le hore na ho lokela ho bokelloa eng, ntle le ho tlamisoa ka ho latella ts'ebetsong e itseng puong efe kapa efe. Ka mohlala, ho Java, mosebetsi oohle o nang le litsela o etsoa ka Opentrace API e tloaelehileng, 'me tlas'a eona, mohlala, Jaeger kapa ts'ebetsong e se nang letho e sa etsang letho e ka patoa.
Re sebelisa Motsomi joalo ka ts'ebetsong ea Opentrace. E na le likarolo tse 'maloa:

Ts'ebetso ea Ts'ebeletso, OpenTracing le Jaeger

  • Jaeger-agent ke moemeli oa lehae eo hangata a kengoang mochining o mong le o mong mme lits'ebeletso li kenngoa ho ona boema-kepe ba lehae ba kamehla. Haeba ho se na moemeli, mesaletsa ea lits'ebeletso tsohle mochining ona hangata e koetsoe
  • Jaeger-mokelli - baemeli bohle ba romela mesaletsa e bokeletsoeng ho eona, 'me e e beha polokelong e khethiloeng
  • Database ke cassandra eo ba e ratang, empa re sebelisa elasticsearch, ho na le ts'ebetsong bakeng sa lisebelisoa tse ling tse 'maloa le ts'ebetsong ea memori e sa bolokeng letho ho disk.
  • Jaeger-query ke ts'ebeletso e eang polokelong ea litaba ebe e khutlisa mesaletsa e seng e bokelitsoe bakeng sa tlhahlobo
  • Jaeger-ui ke sehokelo sa marang-rang sa ho batla le ho shebella mesaletsa, e ea ho jaeger-query.

Ts'ebetso ea Ts'ebeletso, OpenTracing le Jaeger

Karolo e arohaneng e ka bitsoa ts'ebetsong ea opentrace jaeger bakeng sa lipuo tse itseng, tseo ka tsona li-spans li romeloang ho jaeger-agent.
Ho hokela Jagger ho Java e theohela ho kenya ts'ebetsong sebopeho sa io.opentracing.Tracer, ka mor'a moo mesaletsa eohle ho eona e tla fofela ho moemeli oa sebele.

Ts'ebetso ea Ts'ebeletso, OpenTracing le Jaeger

Hape bakeng sa karolo ea selemo, o ka kopanya opentracing-spring-cloud-starter le ts'ebetsong ho tsoa ho Jaeger opentracing-spring-jaeger-cloud-starter e tla itlhophisa ka bo eona ho latela ntho e 'ngoe le e' ngoe e fetang ka likarolo tsena, mohlala http likopo ho balaoli, likopo ho database ka jdbc, joalo-joalo.

Melaetsa ea ho kena ho Java

Sebakeng se seng boemong bo phahameng, Span ea pele e tlameha ho bōptjoa, sena se ka etsoa ka mokhoa o itekanetseng, ka mohlala, ke molaoli oa selemo ha kopo e amoheloa, kapa ka letsoho haeba ho se na letho. Ebe e fetisoa ka Scope e ka tlase. Haeba mokhoa ofe kapa ofe o ka tlase o batla ho eketsa Span, ho nka ActiveSpan ea hajoale ho tsoa ho Scope, ho theha Span e ncha mme e re motsoali oa eona ke sephetho se sebetsang, mme se etsa hore Span e ncha e sebetse. Ha o letsetsa lits'ebeletso tsa kantle, nako ea hona joale e sebetsang e fetisetsoa ho bona, 'me litšebeletso tseo li theha li-span tse ncha mabapi le nako ena.
Mosebetsi oohle o feta mohlala oa Tracer, o ka o fumana ka mochine oa DI, kapa GlobalTracer.get () e le phetoho ea lefats'e haeba mochine oa DI o sa sebetse. Ka ho sa feleng, haeba tracer e sa qalisoa, NoopTracer e tla khutla e sa etse letho.
Ho feta moo, sebaka sa hajoale se fumanoa ho tsoa ho tracer ka ScopeManager, ho etsoa sebaka se secha ho tloha ho sa hajoale se tlamang sebaka se secha, ebe sebaka se bōpiloeng sea koaloa, se koalang sebaka se entsoeng ebe se khutlisetsa Scope e fetileng ho eona. boemo bo sebetsang. Scope e tlameletsoe khoeleng, kahoo ha ho etsoa mananeo a mefuta-futa, u se ke ua lebala ho fetisetsa sebaka se sebetsang ho khoele e 'ngoe, bakeng sa ts'ebetso e eketsehileng ea Scope ea khoele e 'ngoe mabapi le nako ena.

io.opentracing.Tracer tracer = ...; // GlobalTracer.get()

void DoSmth () {
   try (Scope scope = tracer.buildSpan("DoSmth").startActive(true)) {
      ...
   }
}
void DoOther () {
    Span span = tracer.buildSpan("someWork").start();
    try (Scope scope = tracer.scopeManager().activate(span, false)) {
        // Do things.
    } catch(Exception ex) {
        Tags.ERROR.set(span, true);
        span.log(Map.of(Fields.EVENT, "error", Fields.ERROR_OBJECT, ex, Fields.MESSAGE, ex.getMessage()));
    } finally {
        span.finish();
    }
}

void DoAsync () {
    try (Scope scope = tracer.buildSpan("ServiceHandlerSpan").startActive(false)) {
        ...
        final Span span = scope.span();
        doAsyncWork(() -> {
            // STEP 2 ABOVE: reactivate the Span in the callback, passing true to
            // startActive() if/when the Span must be finished.
            try (Scope scope = tracer.scopeManager().activate(span, false)) {
                ...
            }
        });
    }
}

Bakeng sa lenaneo le nang le mefuta e mengata, ho boetse ho na le TracedExecutorService le li-wrappers tse tšoanang tse fetisetsang nako ea hona joale khoeleng ha mesebetsi ea asynchronous e qala:

private ExecutorService executor = new TracedExecutorService(
    Executors.newFixedThreadPool(10), GlobalTracer.get()
);

Bakeng sa likopo tsa kantle tsa http ho na le TracingHttpClient

HttpClient httpClient = new TracingHttpClientBuilder().build();

Mathata ao re ileng ra tobana le ona

  • Linaoa le DI ha li sebetse kamehla haeba tracer e sa sebelisoe ts'ebeletso kapa karolo, joale Autowired Tracer e kanna ea se sebetse mme o tla tlameha ho sebelisa GlobalTracer.get().
  • Litlhaloso ha li sebetse haeba e se karolo kapa tšebeletso, kapa haeba mokhoa o bitsoa ho tsoa ho mokhoa oa boahelani oa sehlopha se le seng. U tlameha ho ba hlokolosi ho lekola hore na ho sebetsa eng le ho sebelisa tlhahiso ea trace ea matsoho haeba @Traced e sa sebetse. U ka boela ua hokela compiler e eketsehileng bakeng sa litlatsetso tsa java, joale li lokela ho sebetsa hohle.
  • Sebuteng sa khale sa selemo le sa selemo, "opentraing spring cloud cloud autoconfiguration" ha e sebetse ka lebaka la likokoana-hloko ho DI, joale haeba u batla hore mesaletsa ea likarolo tsa selemo e sebetse ka bo eona, u ka e etsa ka papiso. github.com/opentracing-contrib/java-spring-jaeger/blob/master/opentracing-spring-jaeger-starter/src/main/java/io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.java
  • Leka ka lisebelisoa ha e sebetse ho groovy, o tlameha ho sebelisa leka qetellong.
  • Tšebeletso e 'ngoe le e 'ngoe e tlameha ho ba le lebitso la eona la selemo.application.name leo ho tla kenngoa mesaletsa ka lona. Ke eng e etsang lebitso le arohaneng bakeng sa thekiso le teko, e le hore u se ke ua kena-kenana le bona hammoho.
  • Haeba u sebelisa GlobalTracer le tomcat, joale litšebeletso tsohle tse sebetsang ho tomcat ena li na le GlobalTracer e le 'ngoe, kahoo kaofela li tla ba le lebitso le tšoanang la tšebeletso.
  • Ha u eketsa mekhoa ea mokhoa, u lokela ho etsa bonnete ba hore ha e bitsoe hangata ka loop. Hoa hlokahala ho kenyelletsa mohlala o le mong o tloaelehileng bakeng sa mehala eohle, e tiisang nako eohle ea mosebetsi. Ho seng joalo, ho tla bōptjoa mojaro o feteletseng.
  • Hang ha ba le jaeger-ui, ho ile ha etsoa likōpo tse ngata haholo bakeng sa mehlala e mengata, ’me kaha ha baa ka ba emela karabo, ba ile ba boela ba etsa joalo. Ka lebaka leo, jaeger-query e ile ea qala ho ja mohopolo o mongata le ho liehisa rekere. E thusitsoe ke ho qala hape jaeger-query

Ho etsa sampole, ho boloka le mesaletsa ea ho shebella

Ho na le mefuta e meraro mehlala ea mehlala:

  1. Const e romellang le ho boloka mesaletsa eohle.
  2. Probabilistic e sefang mohlala ka monyetla o itseng.
  3. Ratelimiting e fokotsang palo ea mesaletsa ka motsotsoana. U ka hlophisa litlhophiso tsena ho moreki, ebang ke ho jaeger-agent kapa ho mokelli. Hona joale re sebelisa const 1 ho "valuator stack", kaha ha ho na likopo tse ngata, empa li nka nako e telele. Nakong e tlang, haeba sena se tla baka mojaro o feteletseng ho sistimi, o ka e fokotsa.

Haeba u sebelisa cassandra, ka ho sa feleng e boloka mesaletsa ea matsatsi a mabeli feela. Re sebelisa lebotho le mesaletsa e boloketsoe nako eohle 'me ha e hlakoloe. Lenane le ikhethileng le etsoa letsatsi le leng le le leng, mohlala, jaeger-service-2019-03-04. Nakong e tlang, o hloka ho lokisa ho hloekisa ka mokhoa o itekanetseng oa mekhoa ea khale.

E le hore u bone li-tracks u hloka:

  • Kgetha tshebeletso eo o batlang ho sefa ka yona, ho etsa mohlala, tomcat7-default bakeng sa tshebeletso e sebetsang ho tomcat mme e ke keng ya ba le lebitso la yona.
  • Ebe u khetha ts'ebetso, nako ea nako le bonyane nako ea ts'ebetso, mohlala ho tloha metsotsoana e 10, ho nka lipolao tse telele feela.
    Ts'ebetso ea Ts'ebeletso, OpenTracing le Jaeger
  • E-ea ho e 'ngoe ea litsela 'me u bone hore na ke eng e neng e fokotseha moo.
    Ts'ebetso ea Ts'ebeletso, OpenTracing le Jaeger

Hape, haeba id e itseng ea kopo e tsejoa, joale u ka fumana mohlala ka id ena ka patlo ea tag, haeba id ena e kentsoe nakong ea ho latela mohlala.

Litokomane

Articles

Видео

Source: www.habr.com

Eketsa ka tlhaloso