Ratonga Aroturuki, OpenTracing me Jaeger

Ratonga Aroturuki, OpenTracing me Jaeger

Ka whakamahia e matou te hoahoanga microservice i roto i a maatau kaupapa. I te wa e pa ana nga mahi, he nui te wa ka pau ki te tirotiro me te tarai i nga raarangi. I te wa e takiuru ana i nga wa o nga mahi takitahi ki te konae rangitaki, he uaua ki te mohio he aha te take i tono ai enei mahi, ki te whai i te raupapa o nga mahi, i te huringa wa ranei o tetahi mahi e pa ana ki tetahi atu i roto i nga ratonga rereke.

Hei whakaiti i nga mahi a-ringa, i whakatau matou ki te whakamahi i tetahi o nga taputapu rapu. Mo te pehea me te take ka taea e koe te whakamahi i te tirotiro me te pehea i mahia ai e matou, ka korerohia i roto i tenei tuhinga.

He aha nga raruraru ka taea te whakaoti ma te whai

  1. Rapua nga paatete mahi i roto i te ratonga kotahi me te rakau whakamate katoa i waenga i nga ratonga whakauru katoa. Hei tauira:
    • He maha nga waea poto poto i waenga i nga ratonga, hei tauira, ki te geocoding, ki te putunga raraunga ranei.
    • He roa te I/O e tatari ana, penei i te whakawhiti whatunga, te panui kōpae ranei.
    • Wero raraunga roa.
    • Nga mahi roa e hiahia ana i te cpu.
    • Ko nga waahanga o te waehere kaore e hiahiatia kia whiwhi i te hua whakamutunga ka taea te tango, te whakaroa ranei.
  2. Ka tino marama ki te raupapa he aha te mea e kiia ana me te aha ka puta ina mahia te mahi.
    Ratonga Aroturuki, OpenTracing me Jaeger
    Ka taea te kite, hei tauira, i tae mai te Tono ki te ratonga WS -> te ratonga WS i tapirihia nga raraunga ma te ratonga R -> ka tukuna he tono ki te ratonga V -> te ratonga V i utaina te maha o nga raraunga mai i te R ratonga -> i haere ki te ratonga P -> i haere ano te ratonga P ki te ratonga R -> ratonga V i warewarehia te hua ka haere ki te ratonga J -> katahi ka whakahokia mai te whakautu ki te ratonga WS, i te haere tonu ki te tatau i tetahi atu mea i roto i te papamuri.
    Kaore he tohu penei, he tuhinga taipitopito ranei mo te mahi katoa, he tino uaua ki te mohio ki nga mea e tupu ana ina titiro koe ki te waehere mo te wa tuatahi, a ka marara te waehere ki nga ratonga rereke ka huna i muri i te paihere o nga ipu me nga atanga.
  3. Kohikohi korero mo te rakau whakamate mo te wetewete i muri mai. I ia wahanga o te mahi, ka taea e koe te taapiri i nga korero ki te tohu e waatea ana i tenei waahanga katahi ka mohio he aha nga raraunga whakauru i arai atu ki tetahi ahuatanga rite. Hei tauira:
    • ID Kaiwhakamahi
    • Ngā Tika
    • Momo tikanga kua tohua
    • He hapa te takiuru, te mahi ranei
  4. Te huri i nga tohu ki roto i te waahanga o nga inenga me etahi atu tātaritanga i roto i te ahua o nga inenga.

He aha te tohu ka taea te takiuru. Awha

I roto i te whaiwhai i reira ko te ariā o te whanganga, he tairitenga tenei o te kotahi poro, ki te papatohu. He:

  • Ingoa, ko te ingoa o te tikanga i mahia
  • Ko te ingoa o te ratonga i hangaia ai te mokowhiti
  • Nou ake ID ahurei
  • Ko etahi momo korero meta i roto i te ahua o te matua / uara kua uru ki roto. Hei tauira, ko nga tawhā tikanga, ko te tikanga ranei i mutu ki te hapa, kaore ranei
  • Nga wa tiimata me te mutunga mo tenei waa
  • ID atanga matua

Ka tukuna atu ia whanganga ki te kaikohi mokowhiti kia penapenahia ki te paataka mo te arotake a muri ake ina oti ana tana mahi. I nga ra kei mua, ka taea e koe te hanga rakau mo nga waahi katoa ma te hono ma te id matua. I te wa e wetewete ana, ka kitea e koe, hei tauira, nga waahi katoa i roto i etahi ratonga i roa ake i te wa roa. I tua atu, ma te haere ki tetahi waahi motuhake, tirohia te rakau katoa o runga me raro o tenei whanganga.

Ratonga Aroturuki, OpenTracing me Jaeger

Opentrace, Jagger me te pehea i whakatinanahia ai mo a maatau kaupapa

He paerewa noa tuwheratanga, e whakaatu ana me pehea me te aha me kohia, me te kore e herea ma te whai ki tetahi whakatinanatanga motuhake i roto i tetahi reo. Hei tauira, i Java, ko nga mahi katoa me nga tohu ka mahia ma te Opentrace API noa, a, i raro i a ia, hei tauira, ko Jaeger, he mahinga taunoa kore ranei e kore e taea te huna.
Kei te whakamahi matou Hoko hei whakatinanatanga o Opentrace. He maha nga waahanga kei roto:

Ratonga Aroturuki, OpenTracing me Jaeger

  • Ko te Jaeger-agent he kaihoko a-rohe e mau tonu ana ki ia miihini me nga ratonga ka uru ki roto i te tauranga taunoa o te rohe. Mena karekau he kaihoko, ka monokia nga tohu o nga ratonga katoa kei runga i tenei miihini
  • Jaeger-collector - ka tukuna e nga kaihoko katoa nga tohu kua kohia ki a ia, ka waiho ki roto i te papaa raraunga kua tohua
  • Ko te papaunga raraunga ko ta ratou cassandra pai ake, engari ka whakamahia e matou te elasticsearch, he whakatinanatanga mo etahi atu papaaarangi e rua me te whakatinanatanga mahara-kore e penapena tetahi mea ki te kōpae.
  • Ko te Jaeger-query he ratonga ka haere ki te paataka raraunga me te whakahoki i nga tohu kua kohia mo te tātari
  • He atanga tukutuku a Jaeger-ui mo te rapu me te tiro tohu, ka haere ki te jaeger-query

Ratonga Aroturuki, OpenTracing me Jaeger

Ko tetahi waahanga motuhake ka kiia ko te whakatinanatanga o te opentrace jaeger mo nga reo motuhake, ka tukuna atu nga waahanga ki te jaeger-agent.
Te hono a Jagger ki Java ka heke iho ki te whakatinana i te atanga io.opentracing.Tracer, ka mutu nga tohu katoa ka rere ki te tino kaihoko.

Ratonga Aroturuki, OpenTracing me Jaeger

Mo te waahanga puna, ka taea e koe te hono opentracing-puna-kapua-starter me te whakatinanatanga mai i a Jaeger opentracing-spring-jaeger-cloud-starter ka whirihora aunoa i te rapu mo nga mea katoa e haere ana i roto i enei waahanga, hei tauira nga tono http ki nga kaiwhakahaere, nga tono ki te papaaarangi ma te jdbc, etc.

Nga tohu takiuru ki Java

I tetahi waahi i te taumata o runga, me hanga te Span tuatahi, ka taea te mahi aunoa, hei tauira, na te kaiwhakahaere o te puna ka tae mai he tono, ma te ringaringa ranei mena kaore he. Kātahi ka tukuna mā te Whānui i raro nei. Mena kei te pirangi tetahi tikanga i raro nei ki te taapiri i te Span, ka tangohia te ActiveSpan o naianei mai i te Scope, ka hangaia he Span hou me te kii ko tona matua ko te ActiveSpan ka puta, ka whakahohe i te Span hou. I te wa e waea ana ki nga ratonga o waho, ka tukuna atu ki a raatau te waahi hohe o naianei, ka hangaia e aua ratonga nga waahanga hou me te tohutoro ki tenei waahanga.
Ka haere nga mahi katoa ma te tauira Tracer, ka taea e koe te tiki ma te tikanga DI, GlobalTracer.get ranei () hei taurangi o te ao ki te kore e mahi te tikanga DI. Ma te taunoa, mena kaore ano kia arawhitihia te kaiwhai, ka hoki mai a NoopTracer kaore he mahi.
I tua atu, ka whiwhihia te whānuitanga o naianei mai i te kaiwhaiwhai ma te ScopeManager, ka hangaia he awhi hou mai i te waa o naianei me te herenga o te whanganga hou, katahi ka katia te Whanui i hangaia, ka kati i te whanga i hangaia ka whakahoki i te Mahinga o mua ki te ahua kaha. Ka herea te awhe ki tetahi miro, no reira, i te wa o te hotaka miro-maha, kaua e wareware ki te whakawhiti i te mokowhiti kaha ki tetahi atu miro, mo te whakahohe ano i te Awhe o tetahi atu miro e pa ana ki tenei whanganga.

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 nga hotaka miro-maha, kei reira ano hoki a TracedExecutorService me nga takai rite e tuku aunoa ana i te waa o naianei ki te miro ina whakarewahia nga mahi tukutahi:

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

Mo nga tono http waho kei reira TracingHttpClient

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

Nga raruraru i pa ki a matou

  • Ko nga pini me te DI e kore e mahi i nga wa katoa mena kaore i te whakamahia te kaiwhaiwhai ki tetahi ratonga, waahanga ranei, na Waea Aunoa Kare pea a Tracer e mahi, me whakamahi koe i te GlobalTracer.get().
  • Karekau nga korero e mahi mena ehara i te waahanga, ratonga ranei, mena ka karangahia te tikanga mai i tetahi tikanga tata o te akomanga kotahi. Me tupato koe ki te tirotiro he aha te mahi me te whakamahi i nga mahi a-ringa ki te kore a @Traced e mahi. Ka taea hoki e koe te taapiri i tetahi taapiri taapiri mo nga korero java, katahi ka mahi ki nga waahi katoa.
  • I te puna tawhito me te koanga o te puna, karekau e mahi te whirihoranga aunoa o te kapua puna tuwhera na te kino o te DI, katahi ka hiahia koe kia mahi aunoa nga tohu o nga waahanga o te puna, ka taea e koe ma te whakataurite me 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
  • Whakamātauria ki ngā rauemi e kore e mahi i roto i te groovy, me whakamahi koe tamata mutunga.
  • Me whai i ia ratonga tana ake puna.application.ingoa i raro i nga tohu ka tuhia. He aha te ingoa motuhake mo te hoko me te whakamatautau, kia kore ai e pokanoa ki a raatau.
  • Mena kei te whakamahi koe i te GlobalTracer me te tomcat, na nga ratonga katoa e whakahaere ana i tenei tomcat kotahi te GlobalTracer, no reira he ingoa ratonga o ratou katoa.
  • A, no te taapiri i nga tohu ki tetahi tikanga, me tino mohio koe kaore e karangahia i nga wa maha i roto i te kopae. He mea tika ki te taapiri i tetahi tohu noa mo nga waea katoa, e whakamana ana i te waa mahi katoa. Ki te kore, ka hanga he taumahatanga taikaha.
  • Kia tae ki te jaeger-ui, he nui rawa nga tono i tukuna mo te maha o nga tohu, a na te mea kaore ratou i tatari mo te whakautu, ka mahia ano e ratou. Ko te mutunga mai, ka timata a jaeger-query ki te kai i te maha o te mahara me te puhoi te rapa. I awhinahia ma te whakaara ano i te patai-jaeger

Te whakatauira, te penapena me te tiro tohu

E toru nga momo tohu tohu:

  1. Const e tuku ana, e penapena nga tohu katoa.
  2. Te tūponotanga ka tātari i ngā tohu me ētahi tūponotanga.
  3. Te whakatau i te whakawhāiti i te maha o nga tohu mo ia hekona. Ka taea e koe te whirihora i enei tautuhinga i runga i te kiritaki, i runga i te kaihoko-jaeger, i runga ranei i te kaikohi. Inaianei ka whakamahia e matou te const 1 i roto i te taapu utu, na te mea kaore i te maha nga tono, engari ka roa te waa. I te wa kei te heke mai, mena ka nui te taumaha o te punaha, ka taea e koe te whakawhāiti.

Mena ka whakamahi koe i te cassandra, ma te taunoa ka penapena nga tohu mo nga ra e rua. Kei te whakamahi matou kirihipi me nga tohu ka rongoa mo nga wa katoa kaore e mukua. Ka hangaia he tohu motuhake mo ia ra, hei tauira jaeger-service-2019-03-04. I te wa kei te heke mai, me whirihora e koe te horoi aunoa o nga tohu tawhito.

Hei tiro i nga tohu ka hiahia koe:

  • Tīpakohia te ratonga e hiahia ana koe ki te tarai i nga tohu, hei tauira, tomcat7-taunoa mo te ratonga e rere ana i te tomcat me te kore e whai ingoa ake.
  • Na ka kowhiri i te mahi, te waahi wa me te wa mahi iti rawa, hei tauira mai i te 10 hēkona, kia roa noa nga mahi whakamate.
    Ratonga Aroturuki, OpenTracing me Jaeger
  • Haere ki tetahi o nga tohu ka kite i nga mea e puhoi haere ana i reira.
    Ratonga Aroturuki, OpenTracing me Jaeger

Ano, ki te mohiotia etahi tono id, katahi ka kitea e koe he tohu ma tenei id ma te rapu tohu, mena kua uru tenei id ki te waahi tohu.

Tuhinga

Tefito

Ataata

Source: will.com

Tāpiri i te kōrero