Darba sākšana ar Grafana Tempo

Apgūsim Grafana Tempo, izplatītās izsekošanas aizmugursistēmas, pamatus.

Izkliedētā izsekošana ir veids, kā iegūt detalizētu informāciju par sistēmas veiktspēju. Tas ir veids, kā vizualizēt pieprasījuma dzīves ciklu, kas tiek nosūtīts caur lietojumprogrammu. Lietojumprogramma var sastāvēt no vairākiem pakalpojumiem, kas atrodas vienā mezglā vai ir sadalīti pa mezgliem.

Tātad, izmantojot izplatīto izsekošanu, varat iegūt visu pakalpojumu konsolidētu skatu. Un Grafana Tempo ir par to visu.

Kas ir Grafana Tempo?

Šogad ObservabilityCon konferencē Grafana Labs sniedza dažus nozīmīgus atjauninājumus, un viens no tiem bija Grafana Tempo. Grafana Labs ir pievienojis vēl vienu projektu „Grafana Tempo” savam atvērtā pirmkoda portfelim.

Grafana temps ir atvērtā koda izplatīta izsekošanas aizmugursistēma, kas ir ļoti mērogojama un viegli lietojama. Tempo ir pilnībā savietojams ar citiem izsekošanas protokoliem, piemēram, Zipkin, Jaeger, OpenTelemetry un OpenCensus. Pašlaik tas atbalsta Tempo datu atklāšanas dzinēju Loki, pārraugot tādas platformas kā Prometheus un Grafana. Grafana 7.3+ piedāvā nevainojamu pieredzi starp Grafana un Tempo.

Kāpēc izmantot Tempo?

Tempo izmanto, lai korelētu metriku, pēdas un žurnālus. Pastāv situācijas, kad lietotājs vairākas reizes saņem tāda paša veida kļūdu. Ja es gribu saprast, kas notiek, man vajadzēs aplūkot precīzas pēdas. Taču izlases samazināšanas dēļ daļa vērtīgas informācijas, ko es varētu meklēt, būtu pazudusi. Izmantojot Tempo, tagad mums nav jāsamazina izplatīto izsekošanas datu izlase. Mēs varam saglabāt visu izsekojumu objektu krātuvē, piemēram, S3 vai GCS, padarot Tempo ļoti rentablu.

Turklāt Tempo nodrošina ātrāku atkļūdošanu/problēmu novēršanu, ļaujot ātri pāriet no metrikas uz attiecīgajām konkrēto žurnālu pēdām, kurās ir reģistrētas dažas problēmas.

  Vērtīgākie uzņēmumi pasaulē

Tālāk ir norādītas Tempo izmantotās konfigurācijas opcijas.

  • Izplatītājs: tos izmanto, lai konfigurētu saņemšanas opcijas, lai saņemtu diapazonus un pēc tam nosūtītu tās lietotājiem.
  • Ingester: tās tiek izmantotas, lai izveidotu izsekojumu partijas un nosūtītu tās uz TempoDB glabāšanai.
  • Blīvētājs: tas straumē blokus no krātuves, piemēram, S3 vai GCS, apvieno tos un ieraksta tos atpakaļ uz krātuvi.
  • Krātuve: to izmanto, lai konfigurētu TempoDB. Šajā konfigurācijā kopā ar citiem parametriem ir jānorāda krātuves aizmugursistēmas nosaukums (S3 vai GCS).
  • Dalībnieku saraksts: to izmanto Tempo komponentu koordinācijai.
  • Autentifikācija/serveris: Tempo izmanto Weaveworks/Common serveri. To izmanto, lai iestatītu servera konfigurācijas.

Tempo arhitektūra

Iepriekš redzamā diagramma parāda Grafana Tempo darba arhitektūru.

Pirmkārt, izplatītājs saņem diapazonus dažādos formātos no Zipkin, Jaeger, OpenTelemetry, OpenCensus un nosūta tos lietotājiem, sajaucot izsekošanas ID. Pēc tam Ingester izveido pēdu partijas, kuras sauc par blokiem.

Pēc tam tas nosūta šos blokus uz aizmugursistēmas krātuvi (S3/GCS). Ja jums ir izsekošanas ID, kuru vēlaties novērst, izmantosit Grafana UI un ievietosit izsekošanas ID meklēšanas joslā. Tagad vaicātājs ir atbildīgs par informācijas iegūšanu no ingester vai objekta krātuves par jūsu ievadīto izsekošanas ID.

Pirmkārt, tā pārbauda, ​​vai šis izsekošanas ID atrodas uztveršanas ierīcē; ja tas to neatrod, tas pārbauda krātuves aizmugursistēmu. Tas izmanto vienkāršu HTTP galapunktu, lai atklātu pēdas. Tikmēr blīvētājs paņem blokus no krātuves, apvieno tos un nosūta atpakaļ uz krātuvi, lai samazinātu bloku skaitu krātuvē.

Tempo iestatīšana, izmantojot Docker

Šajā sadaļā es soli pa solim iestatīšu Grafana Tempo, izmantojot Docker. Pirmkārt, jums ir nepieciešama Tempo aizmugursistēma, tāpēc iestatiet doku tīklu.

[[email protected] ~]$ docker network create docker-tempo

Lejupielādējiet Tempo konfigurācijas failu.

[[email protected] ~]$ curl -o tempo.yaml https://raw.githubusercontent.com/grafana/tempo/master/example/docker-compose/etc/tempo-local.yaml

Tālāk ir sniegts iegūto protokola opciju saraksts:

  Kas ir Patreon un kā tas darbojas?

Protokols
Osta
Atveriet telemetriju
55680
Jēgers – kompakts taupības līdzeklis
6831
Jēgers – taupības binārs
6832
Jaeger — taupības HTTP
14268
Jēgers – GRPC
14250
Zipkins
9411

Izmantojot tempa konfigurācijas failu, palaidiet docker konteineru. Šeit es izvēlos Jēgers – Thrift Compact formāts (ports 6831), lai nosūtītu pēdas.

[[email protected] ~]$ docker run -d --rm -p 6831:6831/udp --name tempo -v $(pwd)/tempo-local.yaml:/etc/tempo-local.yaml --network docker-tempo grafana/tempo:latest -config.file=/etc/tempo-local.yaml

Tagad jums ir jāpalaiž Tempo vaicājuma konteiners. Tāpēc vispirms lejupielādējiet tempo vaicājuma konfigurācijas failu.

[[email protected] ~]$ curl -o tempo-query.yaml https://raw.githubusercontent.com/grafana/tempo/master/example/docker-compose/etc/tempo-query.yaml

Izmantojot tempo vaicājuma konfigurācijas failu, palaidiet docker konteineru.

[[email protected] ~]$ docker run -d --rm -p 16686:16686 -v $(pwd)/tempo-query.yaml:/etc/tempo-query.yaml --network docker-tempo grafana/tempo-query:latest --grpc-storage-plugin.configuration-file=/etc/tempo-query.yaml

Tagad Jaeger lietotāja interfeiss būs pieejams vietnē http://localhost:16686, kā parādīts tālāk.

Meklēšanas joslā varat pievienot izsekošanas ID no žurnāla, kuru vēlaties novērst, un tas ģenerēs izsekošanas datus jūsu vietā.

Demonstrācijas lietojumprogrammas palaišana pakalpojumā Tempo

Ir pienācis laiks palaist demonstrācijas piemēru, ko sniedz Grafana Tempo. Es izpildīšu docker-compose piemēru, tādēļ, ja mēģināt to pašu, jūsu datorā ir jābūt instalētai docker-compose.

Lejupielādējiet Grafana Tempo zip failu: https://github.com/grafana/tempo

Izvelciet to mājas mapē un dodieties uz docker-compose direktoriju. Jūs atradīsiet vairākus docker-compose piemērus; Es izmantoju piemēru, kur lietojumprogrammas dati tiek glabāti lokāli.

[[email protected] ~]$ cd tempo-master/example/docker-compose/
[[email protected] docker-compose]$ ls
docker-compose.loki.yaml docker-compose.s3.minio.yaml docker-compose.yaml etc
example-data readme.md tempo-link.png

Palaidiet tālāk norādīto komandu, lai sāktu steku.

[[email protected] docker-compose]$ docker-compose up -d
Starting docker-compose_prometheus_1 ... done
Starting docker-compose_tempo_1 ... done
Starting docker-compose_grafana_1 ... done
Starting docker-compose_tempo-query_1 ... done
Starting docker-compose_synthetic-load-generator_1 ... done

Varat redzēt, ka tas ir sācis konteinerus Grafana, Loki, Tempo, Tempo-query un Prometheus.

[[email protected] docker-compose]$ docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS         PORTS                                                                                                      NAMES
84cd557ce07b   grafana/tempo-query:latest                 "/go/bin/query-linux…"   10 minutes ago   Up 4 seconds   0.0.0.0:16686->16686/tcp                                                                                   docker-compose_tempo-query_1
f7cd9cf460d9   omnition/synthetic-load-generator:1.0.25   "./start.sh"             10 minutes ago   Up 4 seconds                                                                                                              docker-compose_synthetic-load-generator_1
6d9d9fbdb8f1   grafana/grafana:7.3.0-beta1                "/run.sh"                10 minutes ago   Up 6 seconds   0.0.0.0:3000->3000/tcp                                                                                     docker-compose_grafana_1
d8574ea25028   grafana/tempo:latest                       "/tempo -config.file…"   10 minutes ago   Up 6 seconds   0.0.0.0:49173->3100/tcp, 0.0.0.0:49172->14268/tcp                                                          docker-compose_tempo_1
5f9e53b5a09c   prom/prometheus:latest                     "/bin/prometheus --c…"   10 minutes ago   Up 6 seconds   0.0.0.0:9090->9090/tcp                                                                                     docker-compose_prometheus_1

Varat arī doties uz savu pārlūkprogrammu un pārbaudīt, vai darbojas Grafana, Jaeger UI, Prometheus.

  Lūk, kā skatīties NBA izslēgšanas spēles bez kabeļa

Tagad sintētiskās slodzes ģenerators, kas darbojas konteinerā, ģenerē izsekošanas ID, kurus tas ievieto tempā. Palaidiet tālāk norādīto komandu, un jūs varat skatīt žurnālus.

[[email protected] docker-compose]$ docker-compose logs -f synthetic-load-generator
Attaching to docker-compose_synthetic-load-generator_1
synthetic-load-generator_1 
| using params: 
--jaegerCollectorUrl http://tempo:14268
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /product, 2880 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /cart, 14400 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:34 INFO ScheduledTraceGenerator: Starting trace generation for service frontend, route /checkout, 480 traces/hr
synthetic-load-generator_1 
| 21/04/17 14:24:37 INFO ScheduledTraceGenerator: Emitted traceId 17867942c5e161f2 for service frontend route /currency
synthetic-load-generator_1 
| 21/04/17 14:24:37 INFO ScheduledTraceGenerator: Emitted traceId 3d9cc23c8129439f for service frontend route /shipping
synthetic-load-generator_1 

Šie ir izsekošanas ID, kas jums jānodod, lai izveidotu pēdas.

Es kopēju vienu no izsekošanas ID un ievietoju to Jaeger UI meklēšanas joslā.

Varat redzēt, ka tas ir veiksmīgi ģenerējis pēdas, kas saistītas ar manis norādīto izsekošanas ID.

Secinājums

Tātad tas viss bija par Grafana Tempo. Turpiniet un sāciet izmantot Tempo, lai ģenerētu pēdas, lai detalizēti izprastu metriku un problēmas jūsu žurnālos.

Viss tiek tverts programmā Tempo, un jūs nepalaidīsit garām nevienu detaļu, jo tiek veikta lejupielāde, kas agrāk notika. Izstrādātājam vai ražošanas komandai Tempo ir viegli saprast žurnālos iespējamo kļūdu vai brīdinājumu galveno cēloni.