Su'ega Auaunaga, OpenTracing ma Jaeger

Su'ega Auaunaga, OpenTracing ma Jaeger

Matou te faʻaogaina le faʻataʻitaʻiga microservice i a matou poloketi. A o'o mai fa'alavelave fa'atinoga, e tele le taimi e fa'aalu i le mata'ituina ma le fa'avasegaina o ogalaau. Pe a faʻamauina taimi o gaioiga taʻitoʻatasi i se faila ogalaau, e masani lava ona faigata ona malamalama i le mea na mafua ai le faʻaogaina o nei gaioiga, e siaki ai le faʻasologa o gaioiga poʻo le suiga o le taimi o le tasi gaioiga e faʻatatau i le isi i auaunaga eseese.

Ina ia faʻaitiitia le galue lima, na matou filifili e faʻaaoga se tasi o mea faigaluega suʻesuʻe. E uiga i le auala ma pe aisea e mafai ai ona e faʻaogaina le suʻeina ma le auala na matou faia ai, ma o le a talanoaina i lenei tusiga.

O a faafitauli e mafai ona foia i le sailia

  1. Su'e fa'amaufa'ailoga fa'atinoga i totonu o le auaunaga e tasi ma le fa'atinoga atoa i le va o au'aunaga uma o lo'o auai. Faataitaiga:
    • Tele telefoni fa'asolosolo pupuu i le va o tautua, mo se fa'ata'ita'iga, i le geocoding po'o se fa'amaumauga.
    • Fa'atali umi I/O, pei o feso'ota'iga feso'ota'iga po'o le faitau tisiki.
    • Fa'amatalaga umi.
    • Ta'aga umi e mana'omia ai le cpu.
    • Vaega o fa'ailoga e le mana'omia e maua ai le fa'ai'uga mulimuli ma e mafai ona aveese pe tuai.
  2. Malamalama manino i le faasologa o le mea e taʻua ma le mea e tupu pe a faia le taotoga.
    Su'ega Auaunaga, OpenTracing ma Jaeger
    E mafai ona iloa, mo se faʻataʻitaʻiga, o le Talosaga na oʻo mai i le WS service -> o le WS service na faʻaopoopoina faʻamatalaga e ala i le R service -> ona tuʻuina atu lea o se talosaga i le V service -> le V service na utaina le tele o faʻamatalaga mai le R auaunaga -> alu i le P auaunaga -> le P auaunaga toe alu i le auaunaga R -> auaunaga V le amanaiaina le taunuuga ma alu i le auaunaga J -> ona toe faafoi atu lea o le tali i le auaunaga WS, ao faaauau pea ona fuafua se isi mea i totonu. le talaaga.
    A aunoa ma se faʻailoga poʻo faʻamatalaga auiliili mo le faagasologa atoa, e matua faigata lava ona malamalama i le mea o loʻo tupu pe a e vaʻavaʻai i le code mo le taimi muamua, ma o le code o loʻo faʻasalalau i auaunaga eseese ma natia i tua o le tele o talone ma fesoʻotaʻiga.
  3. Aoina o fa'amatalaga e uiga i le laau fa'atino mo su'esu'ega tuai. I laʻasaga taʻitasi o le faʻatinoga, e mafai ona e faʻaopoopoina faʻamatalaga i le suʻega o loʻo avanoa i lenei laasaga ona faʻataʻitaʻiina lea poʻo a faʻamatalaga faʻapipiʻi na oʻo atu i se faʻaaliga tutusa. Faataitaiga:
    • ID tagata fa'aoga
    • Aia tatau
    • Ituaiga o auala filifilia
    • Fa'ailoga po'o le fa'atinoina o mea sese
  4. Su'iina fa'asologa i se vaega o fua fa'atatau ma nisi au'ili'iliga ua uma ona fa'atatau i fua fa'atatau.

O le a le fa'ailoga e mafai ona log. Span

I le suʻeina o loʻo i ai le manatu o se span, o se faʻatusa lea o le tasi ogalaau, i le faʻamafanafanaga. O le spa e iai:

  • Igoa, e masani lava o le igoa o le metotia na faia
  • Le igoa o le tautua lea na fa'atupuina ai le umi
  • Lava ID tulaga ese
  • O nisi ituaiga o fa'amatalaga meta i le tulaga o se ki/taua ua uma ona saini i totonu. Mo se faʻataʻitaʻiga, faʻasologa o metotia poʻo le metotia na faʻauʻu i se mea sese pe leai
  • Taimi amata ma fa'ai'uga mo lenei taimi
  • ID o matua

O va'a ta'itasi e lafo atu i le tagata e aoina le sima e teu i totonu o fa'amaumauga mo se toe iloiloga mulimuli ane pe a mae'a lona fa'atinoina. I le lumanaʻi, e mafai ona e fausia se laʻau o mea uma e ala i le faʻafesoʻotaʻi e matua id. A e suʻesuʻe, e mafai ona e mauaina, mo se faʻataʻitaʻiga, o vaʻaiga uma i nisi o auaunaga na sili atu nai lo sina taimi. E le gata i lea, e ala i le alu i se taimi patino, vaai i le laau atoa i luga ma lalo ifo o lenei va.

Su'ega Auaunaga, OpenTracing ma Jaeger

Opentrace, Jagger ma le auala na matou faʻatinoina ai mo a matou poloketi

E i ai se tulaga masani fa'ailoga tatala, o loʻo faʻamatalaina pe faʻafefea ma mea e tatau ona aoina, e aunoa ma le noatia e ala i le suʻeina i se faʻatinoga faʻapitoa i soʻo se gagana. Mo se faʻataʻitaʻiga, i Java, o galuega uma ma faʻailoga e faia e ala i le Opentrace API masani, ma i lalo o ia, mo se faʻataʻitaʻiga, Jaeger poʻo se faʻaogaina faʻaogaina e leai se mea e mafai ona natia.
O loʻo matou faʻaaogaina Hunter o se faʻatinoga o Opentrace. E aofia ai le tele o vaega:

Su'ega Auaunaga, OpenTracing ma Jaeger

  • Jaeger-agent o se sui faʻapitonuʻu e masani ona faʻapipiʻi i masini taʻitasi ma tautua o loʻo faʻapipiʻi i totonu i luga o le taulaga faʻapitonuʻu. Afai e leai se sooupu, o faʻailoga o auaunaga uma i luga o lenei masini e masani ona le atoatoa
  • Jaeger-collector - o sui uma e auina atu i ai faʻamaumauga ua aoina, ma tuʻu i latou i totonu o faʻamaumauga filifilia
  • O le database o le latou cassandra e sili ona fiafia i ai, ae matou te faʻaaogaina elasticsearch, o loʻo i ai faʻatinoga mo isi faʻamaumauga ma se faʻatinoga i totonu o le mafaufau e le faʻasaoina se mea i le tisiki.
  • Jaeger-query o se 'au'aunaga e alu i le database ma toe fa'afo'i mai fa'amaumauga ua uma ona aoina mo su'esu'ega
  • Jaeger-ui ose 'upega tafaʻilagi mo suʻesuʻega ma matamata i faʻailoga, e alu i le jaeger-query

Su'ega Auaunaga, OpenTracing ma Jaeger

O se isi vaega e mafai ona taʻua o le faʻatinoina o le opentrace jaeger mo gagana faʻapitoa, lea e auina atu ai le va i le jaeger-agent.
Faʻafesoʻotaʻi Jagger i Java e oʻo mai i lalo i le faʻatinoina o le io.opentracing.Tracer interface, a maeʻa lea o faʻailoga uma o le a lele atu i le sui moni.

Su'ega Auaunaga, OpenTracing ma Jaeger

E faʻapea foʻi mo le vaega o le tautotogo, e mafai ona e faʻafesoʻotaʻi opentracing-spring-cloud-starter ma le faʻatinoga mai Jaeger opentracing-spring-jaeger-cloud-starter lea o le a otometi lava ona faʻapipiʻi suʻesuʻega mo mea uma e ui atu i nei vaega, mo se faʻataʻitaʻiga talosaga http i pule, talosaga i le database e ala i le jdbc, ma isi.

Fa'ailoga fa'amau i Java

I se mea i le pito i luga, e tatau ona faia le Span muamua, e mafai ona faia otometi, mo se faʻataʻitaʻiga, e le pule o le tautotogo pe a maua se talosaga, poʻo le lima pe a leai se mea. Ona fa'asalalauina lea e ala i le Va'aiga o lo'o i lalo. Afai o nisi o metotia o loʻo i lalo e manaʻo e faʻaopoopo se Span, e manaʻomia le activeSpan o loʻo i ai nei mai le Scope, fatuina se Span fou ma fai mai o lona matua o le gaioiga lea e maua, ma faʻagaoioia le Span fou. A vala'au 'au'aunaga i fafo, o lo'o tu'uina atu ia i latou le va'aiga o lo'o iai nei, ma o na 'au'aunaga e fausia ai ni va'aiga fou e fa'atatau i le taimi lenei.
O galuega uma e alu i le Tracer faʻataʻitaʻiga, e mafai ona e mauaina e ala i le DI mechanical, poʻo GlobalTracer.get () o se fesuiaiga o le lalolagi pe a le galue le masini DI. E le mafai, afai e leʻi amataina le suʻega, o le a toe foʻi mai NoopTracer e leai se mea.
E le gata i lea, o le lautele o loʻo i ai nei e maua mai i le suʻega e ala i le ScopeManager, o se vaʻaiga fou e faia mai le taimi nei ma le fusifusia o le vaʻaiga fou, ona tapunia ai lea o le Scope na faia, lea e tapunia ai le vaeluaga na faia ma toe faʻafoʻi le Scope muamua i. le tulaga toaga. O le lautele o loʻo nonoa i se filo, o lea pe a faʻapipiʻiina le tele o filo, e le tatau ona galo ia te oe le faʻafeiloaʻi o le vaʻa galue i se isi filo, mo le faʻagaoioia atili o le Scope o se isi filo e faʻatatau i lenei va.

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)) {
                ...
            }
        });
    }
}

Mo polokalame e tele-filo, o loʻo iai foʻi TracedExecutorService ma faʻapipiʻi tutusa e otometi ona tuʻuina atu le va o loʻo i ai nei i le filo pe a faʻalauiloa galuega asynchronous:

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

Mo talosaga i fafo http e iai Su'egaHttpClient

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

Faafitauli sa matou feagai

  • Pi ma DI e le galue i taimi uma pe afai e le faʻaaogaina le tracer i se tautua poʻo se vaega, ona Uaea otometi Atonu e le aoga le Tracer ma e tatau ona e faʻaaogaina GlobalTracer.get().
  • E le aoga faʻamatalaga pe afai e le o se vaega poʻo se tautua, pe afai o le metotia e valaʻau mai se auala tuaoi o le vasega lava e tasi. E tatau ona e faʻaeteete e siaki mea e aoga ma faʻaoga tusi tusi faʻasologa pe a le aoga @Traced. E mafai foi ona e faʻapipiʻi se faʻaopoopo faʻapipiʻi mo faʻamatalaga java, ona tatau lea ona latou galulue i soʻo se mea.
  • I le tautotogo tuai ma le tautotogo seevae, o le opentraing spring cloud autoconfiguration e le aoga ona o bug i DI, ona afai e te manaʻo i faʻailoga i vaega tautotogo e galue otometi, e mafai ona e faia e ala i le faʻatusa ma 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
  • Taumafai i punaoa e le aoga i le groovy, e tatau ona e faʻaaogaina le taumafai mulimuli.
  • E tatau ona i ai i au'aunaga ta'itasi lana lava spring.application.name o lo'o fa'amauina ai fa'ailoga. O le a se igoa ese mo le faʻatau ma le suʻega, ina ia le faʻalavelave faʻatasi ma i latou.
  • Afai e te fa'aogaina le GlobalTracer ma le tomcat, o au'aunaga uma o lo'o fa'agaoioi i lenei tomcat e tasi le GlobalTracer, o lea e tutusa uma ai le igoa o le tautua.
  • Pe a faʻaopoopo faʻailoga i se metotia, e tatau ona e mautinoa e le o taʻua i le tele o taimi i se matasele. E manaʻomia le faʻaopoopoina o se tasi masani masani mo telefoni uma, lea e faʻamaonia ai le aofaʻi o taimi faigaluega. A leai, o le a faia se uta tele.
  • I le taimi lava i le jaeger-ui, na tele naua talosaga na faia mo le tele o faʻailoga, ma talu ai latou te leʻi faʻatali mo se tali, na latou toe faia. O se taunuuga, na amata ona 'ai le tele o manatuaga a jaeger-query ma faʻagesegese ai le faʻamalosi. Fesoasoani i le toe amataina o le jaeger-query

Fa'ata'ita'iga, teu ma va'ai fa'ailoga

E tolu ituaiga fa'ailoga fa'ata'ita'iga:

  1. Const lea e lafo ma fa'asaoina fa'ailoga uma.
  2. Probabilistic lea e fa'amama ai fa'ailoga ma nisi avanoa.
  3. Fua'iga e fa'atapula'aina le numera o fa'ailoga ile sekone. E mafai ona e fa'atulagaina nei tulaga i luga o le kalani, pe i luga o le jaeger-agent po'o luga ole aoina. O lea matou te faʻaogaina le const 1 i le faʻaputuga faʻatau, talu ai e le tele ni talosaga, ae e umi se taimi. I le lumanaʻi, afai o lenei mea o le a faʻatupuina ai se avega tele i luga o le faiga, e mafai ona e faʻatapulaaina.

Afai e te faʻaaogaina cassandra, ona le mafai lea ona naʻo le teuina o faʻailoga mo aso e lua. O loʻo matou faʻaaogaina elastikearch ma fa'ailoga e teuina mo taimi uma ma e le tapeina. E faia se isi fa'ailoga mo aso ta'itasi, mo se fa'ata'ita'iga jaeger-service-2019-03-04. I le lumanaʻi, e tatau ona e faʻatulagaina le faʻamamaina otometi o faʻailoga tuai.

Ina ia vaʻai i faʻailoga e te manaʻomia:

  • Filifili le 'auʻaunaga e te manaʻo e faʻamama ai faʻailoga, mo se faʻataʻitaʻiga, tomcat7-default mo se auaunaga o loʻo tamoʻe i le tomcat ma e le mafai ona i ai lona igoa.
  • Ona filifili lea o le taʻaloga, o le vaeluaga o le taimi ma le laʻititi o le taimi faʻagaioiga, mo se faʻataʻitaʻiga mai le 10 sekone, e naʻo le umi o faʻasalaga.
    Su'ega Auaunaga, OpenTracing ma Jaeger
  • Alu i se tasi o fa'ailoga ma va'ai po'o le a le mea o lo'o fa'agesegese i lalo.
    Su'ega Auaunaga, OpenTracing ma Jaeger

E le gata i lea, afai e iloa se id talosaga, ona mafai lea ona e mauaina se faʻailoga e lenei id e ala i se suʻega faʻailoga, pe afai o lenei id o loʻo saini i totonu o le faʻasologa o taimi.

Tusi

Mataupu Faavae

Видео

puna: www.habr.com

Faaopoopo i ai se faamatalaga