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.
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:
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.
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.