Hajautettu tracing viivehuippujen löytämiseen
Opitte käyttämään hajautettua tracingia yksittäisen pyynnön seuraamiseen palvelusta toiseen, viivehuippujen tunnistamiseen ja tracejen korrelointiin lokien kanssa tuotannon vianmäärityksen aikana.
Hajautettu tracing viivehuippujen löytämiseen on ilmainen Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-kurssilla on yhteensä 4 oppituntia.
Miksi hajautettua jäljitystä tarvitaan
Mikropalvelujärjestelmässä yksi käyttäjän pyyntö voi levitä kymmeniin palveluihin. Kun pyyntö on hidas, mikä palvelu on syyllinen?
Hajautettu jäljitys ratkaisee tämän liittämällä pyyntöön yhteisen trace_id-tunnuksen ja tallentamalla jokaisesta sen käsittelemästä toiminnosta spanin.
- Jäljitys = koko pyynnön kulku
- Span = yksi ajastettu työyksikkö
Spanin rakenne
Jokainen span sisältää ajoitus- ja kontekstitiedot, joiden avulla kutsupuu voidaan muodostaa uudelleen.
trace_idyhdistää yhden pyynnön kaikki spanitspan_idyksilöi toiminnonparent_idtallentaa sen kutsujan- alku- ja loppuaikaleimat ilmaisevat keston
{
"trace_id": "abc123",
"span_id": "s2",
"parent_id": "s1",
"name": "db.query.users",
"start_ms": 1042,
"end_ms": 1310
}Kontekstin välittäminen
Jotta spanit liittyvät samaan jäljitykseen, trace_id-tunnuksen on kuljettava pyynnön mukana. Tätä kutsutaan kontekstin välittämiseksi.
Useimmat järjestelmät lisäävät vakiomuotoiset otsakkeet, kuten traceparent-otsakkeen (W3C Trace Context), lähteviin HTTP-kutsuihin ja viestien metatietoihin.
Jos välittäminen katkeaa, jäljitykset pirstoutuvat ja kutsupuu hajoaa.
GET /orders HTTP/1.1
traceparent: 00-abc123-s1-01Koodin instrumentointi
Luotte spanit niiden toimintojen ympärille, joita haluatte mitata. Automaattinen instrumentointi kattaa yleiset kirjastot, kun taas manuaaliset spanit tallentavat oman logiikkanne.
Alla oleva esimerkki ympäröi funktion spanilla OpenTelemetry-käytäntöjen mukaisesti.
with tracer.start_as_current_span('charge_card') as span:
span.set_attribute('amount', 42)
result = payment.charge(42)
span.set_attribute('status', result.status)Vesiputokin lukeminen
Jäljityskäyttöliittymät näyttävät spanit vesiputokina. Levein palkki, joka EI pelkästään odota alikutsua, on yleensä pullonkaulanne.
- Pitkät palkit ilman lapsia = paikallinen suorittimen tai I/O:n kustannus
- Lapsia täynnä olevat pitkät palkit = downstream-palvelun kustannus
- Spanien väliset aukot = jonoutuminen tai jäljittämätön työ
Otantastrategiat
Jokaisen pyynnön jäljittäminen on kallista. Otanta pitää määrän hallittavana.
- Alkupään otanta: päätös tehdään alussa (esimerkiksi säilytetään 5 %)
- Jälkiperusteinen otanta: päätös tehdään jäljityksen päätyttyä, ja hitaat tai virheelliset jäljitykset säilytetään
Viiveiden vianjäljityksessä pitkään kestoon perustuva jälkiperusteinen otanta on erittäin arvokasta.
Jäljitysten ja lokien korrelointi
Jäljitys kertoo missä; lokit kertovat miksi. Liittäkää aktiivinen trace_id jokaiseen lokiriviin, jotta voitte siirtyä hitaasta spanista suoraan sen lokeihin.
import logging
logging.info('cache miss', extra={'trace_id': current_trace_id()})Spanin attribuutit ja tapahtumat
Attribuutit ovat spanin avain–arvo-tunnisteita (tietokantalause, HTTP-tila). Tapahtumat ovat spanin sisäisiä aikaleimattuja pisteitä (uudelleenyritys, lukon hankinta).
Monipuolisten attribuuttien avulla voitte suodattaa jäljityksiä, esimerkiksi hakea kaikki spanit, joissa db.rows > 10000, ja tehdä jäljityksestä kyselytyökalun.
span.add_event('retry', {'attempt': 2})
span.set_attribute('db.rows', 12044)Kriittisen polun löytäminen
Kokonaisviive ei ole kaikkien spanien summa. Rinnakkaiset spanit menevät osittain päällekkäin. Kriittinen polku on niiden spanien ketju, joka todella määrittää päästä päähän -keston.
Kriittiseen polkuun kuulumattoman spanin optimointi ei nopeuta pyyntöä.
Asynkronisten toimintojen ja jonojen jäljittäminen
Jonoissa kuluttaja suoritetaan myöhemmin kuin tuottaja. Välittäkää konteksti viestin sisällä, jotta kuluttajan span linkittyy takaisin follows-from-suhteella eikä isä–lapsi-suhteella.
producer: msg.headers['traceparent'] = inject_context()
consumer: ctx = extract_context(msg.headers)Vianjäljityksen työnkulku
Toimikaa seuraavasti, kun tuotannossa oleva päätepiste on hidas:
- Suodattakaa päätepisteen jäljitykset ja järjestäkää ne keston mukaan
- Avatkaa hitain jäljitys ja lukekaa vesiputoki
- Tunnistakaa kriittisen polun hallitseva span
- Siirtykää spanin lokeihin
trace_id-tunnuksen avulla - Korjatkaa ongelma ja tarkistakaa viivejakauma uudelleen
Pikatarkistus
Testatkaa, miten hyvin ymmärrätte hajautetun jäljityksen.
Kertaus
Opitte, kuinka hajautettu jäljitys muodostaa pyynnön kulun palveluiden läpi trace_id-tunnuksen, spanien ja kontekstin välityksen avulla.
- Lukekaa vesiputokia pullonkaulojen löytämiseksi
- Keskittykää kriittiseen polkuun, älkää kaikkien spanien kokonaisaikaan
- Käyttäkää jälkiperusteista otantaa hitaiden jäljitysten säilyttämiseen
- Korreloikaa spanit lokien kanssa kokonaiskuvan saamiseksi
Opi Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Hajautettu tracing viivehuippujen löytämiseen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-oppimispolun 3 oppituntia, myös oppitunnin “Hajautettu tracing viivehuippujen löytämiseen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Hajautettu tracing viivehuippujen löytämiseen”?
Opitte käyttämään hajautettua tracingia yksittäisen pyynnön seuraamiseen palvelusta toiseen, viivehuippujen tunnistamiseen ja tracejen korrelointiin lokien kanssa tuotannon vianmäärityksen aikana. Harjoittelet Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Hajautettu tracing viivehuippujen löytämiseen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-oppitunnilla?
Kyllä. Jokainen Tuotannon vianmäärityksen ja häiriötilanteisiin reagoinnin toimintamalli-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Reaaliaikaisten sovellusten etävirheenkorjaus
- Jälkikäteinen virheenkorjaus core dump -tiedostojen avulla
- Muistin ja suorittimen profilointitekniikat
- Hajautettu tracing viivehuippujen löytämiseen