Почетак рада са Графана Темпом

Хајде да научимо основе Графана Темпо, дистрибуираног позадинског програма за праћење.

Дистрибуирано праћење је начин да се добију детаљне информације о перформансама система. То је начин да се визуелизује животни циклус захтева који пролази кроз апликацију. Апликација би се могла састојати од више услуга присутних на једном чвору или дистрибуираних преко чворова.

Дакле, коришћењем дистрибуираног праћења, можете добити консолидовани преглед свих услуга. А Графана Темпо је све о томе.

Шта је Графана Темпо?

Било је неких великих ажурирања из Графана Лабс-а на конференцији ОбсервабилитиЦон ове године, а Графана Темпо је била једна од њих. Графана Лабс је додао још један пројекат, „Графана Темпо“, свом портфолију отвореног кода.

Графана Темпо је опен-соурце дистрибуирани бацкенд за праћење који је веома скалабилан и лак за коришћење. Темпо је потпуно компатибилан са другим протоколима за праћење као што су Зипкин, Јаегер, ОпенТелеметри и ОпенЦенсус. Тренутно подржава Темпо механизам за откривање података у Локију, платформе за праћење као што су Прометхеус и Графана. Графана 7.3+ нуди беспрекорно искуство између Графане и Темпа.

Зашто користити Темпо?

Темпо се користи за повезивање метрика, трагова и евиденција. Постоје ситуације у којима корисник добија исту врсту грешке више пута. Ако желим да разумем шта се дешава, мораћу да погледам тачне трагове. Али због смањења узорковања, неке вредне информације које сам можда тражио би се изгубиле. Са Темпом, сада не морамо да смањујемо узорковање дистрибуираних података праћења. Можемо да ускладиштимо комплетан траг у складишту објеката као што је С3 или ГЦС, чинећи Темпо веома исплативим.

Такође, Темпо вам омогућава брже отклањање грешака/решавање проблема тако што вам омогућава да брзо пређете са метрике на релевантне трагове специфичних евиденција које су забележиле неке проблеме.

  Зашто сам волео Мицрософт Боба, Мицрософтово најчудније стварање

Испод су опције конфигурације које се користе у Темпу.

  • Дистрибутер: Користе се за конфигурисање опција пријема за примање распона, а затим их шаљу ингесторима.
  • Ингестер: Они се користе за креирање група трагова и шаљу их у ТемпоДБ за складиштење.
  • Компактор: емитује блокове из складишта као што су С3 или ГЦС, комбинује их и записује назад у складиште.
  • Складиштење: Ово се користи за конфигурисање ТемпоДБ-а. Морате поменути име позадинске меморије (С3 или ГЦС) са другим параметрима у овој конфигурацији.
  • Листа чланова: Користи се за координацију између Темпо компоненти.
  • Аутентификација/Сервер: Темпо користи Веавеворкс/Цоммон сервер. Користи се за подешавање конфигурације сервера.

Темпо Арцхитецтуре

Горњи дијаграм приказује радну архитектуру Графана Темпо.

Прво, дистрибутер прима распоне у различитим форматима од Зипкин, Јаегер, ОпенТелеметри, ОпенЦенсус и шаље ове распоне ингесторима хеширајући ИД праћења. Ингестер затим ствара групе трагова који се називају блокови.

Затим шаље те блокове у позадинско складиште (С3/ГЦС). Када имате ИД праћења који желите да решите, користићете Графана УИ и ставити ИД праћења у траку за претрагу. Сада је куериер одговоран за добијање детаља било из ингестер или објектног складишта о ИД-у праћења који сте унели.

Прво, проверава да ли је тај ИД трага присутан у ингестеру; ако га не пронађе, онда проверава позадину меморије. Користи једноставну ХТТП крајњу тачку да изложи трагове. У међувремену, компактор узима блокове из складишта, комбинује их и шаље назад у складиште како би смањио број блокова у складишту.

Подесите Темпо користећи Доцкер

У овом одељку ћу подесити Графана Темпо корак по корак користећи Доцкер. Прво, потребан вам је Темпо бацкенд, па поставите доцкер мрежу.

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

Преузмите конфигурациону датотеку Темпо.

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

Испод је листа опција протокола које добијате:

  7 поузданих ВПН-а за мала и средња предузећа

Протокол
Лука
Отворите телеметрију
55680
Јаегер – Тхрифт Цомпацт
6831
Јаегер – Тхрифт Бинари
6832
Јаегер – Тхрифт ХТТП
14268
Јегер – ГРПЦ
14250
Зипкин
9411

Користећи конфигурациону датотеку темпа, покрените доцкер контејнер. Ево ја бирам Јаегер – Тхрифт Цомпацт формат (порт 6831) за слање трагова.

[[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

Сада морате да покренете Темпо контејнер упита. Дакле, прво преузмите конфигурациону датотеку темпо упита.

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

Користећи конфигурациону датотеку темпо упита, покрените доцкер контејнер.

[[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

Сада ће Јаегер УИ бити доступан на хттп://лоцалхост:16686, као што је приказано испод.

У траку за претрагу можете да додате ИД трага из евиденције коју желите да решите и он ће генерисати трагове за вас.

Покретање демо апликације на Темпу

Време је да покренемо демо пример који је дао Графана Темпо. Покренућу пример доцкер-цомпосе, тако да ако покушавате исто, морате имати инсталиран доцкер-цомпосе на вашој машини.

Преузмите зип датотеку Графана Темпо: хттпс://гитхуб.цом/графана/темпо

Извуците га у почетну фасциклу и идите у директоријум доцкер-цомпосе. Наћи ћете више примера доцкер-цомпосе; Користим пример где се подаци апликације чувају локално.

[[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

Покрените наредбу испод да бисте покренули стек.

[[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

Видите, покренуо је контејнере за Графану, Локи, Темпо, Темпо-куери и Прометхеус.

[[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

Такође можете да одете у свој претраживач и проверите да ли су Графана, Јаегер УИ, Прометхеус покренути.

  Како видети своје омиљене ставке на Роблок-у

Сада синтетички-лоад-генератор који ради унутар контејнера генерише ИД-ове трага које ставља у темпо. Покрените наредбу испод и можете да видите евиденцију.

[[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 

Ово су ИД-ови трагова које морате проследити да бисте генерисали трагове.

Копирам један од ИД-ова праћења и стављам га у траку за претрагу корисничког интерфејса Јаегер-а.

Можете видети да је успешно генерисао трагове у вези са ИД-ом трага који сам навео.

Закључак

Дакле, то је било све о Графани Темпо. Само напред и почните да користите Темпо за генерисање трагова да бисте детаљно разумели метрике и проблеме у вашим евиденцијама.

Све се снима у Темпу, и нећете пропустити ниједан детаљ због довнсамплинга, што се дешавало раније. Темпо је једноставан за програмере или производни тим да разумеју основни узрок грешака или упозорења која се могу појавити у евиденцији.