Хајде да научимо основе Графана Темпо, дистрибуираног позадинског програма за праћење.
Дистрибуирано праћење је начин да се добију детаљне информације о перформансама система. То је начин да се визуелизује животни циклус захтева који пролази кроз апликацију. Апликација би се могла састојати од више услуга присутних на једном чвору или дистрибуираних преко чворова.
Дакле, коришћењем дистрибуираног праћења, можете добити консолидовани преглед свих услуга. А Графана Темпо је све о томе.
Преглед садржаја
Шта је Графана Темпо?
Било је неких великих ажурирања из Графана Лабс-а на конференцији ОбсервабилитиЦон ове године, а Графана Темпо је била једна од њих. Графана Лабс је додао још један пројекат, „Графана Темпо“, свом портфолију отвореног кода.
Графана Темпо је опен-соурце дистрибуирани бацкенд за праћење који је веома скалабилан и лак за коришћење. Темпо је потпуно компатибилан са другим протоколима за праћење као што су Зипкин, Јаегер, ОпенТелеметри и ОпенЦенсус. Тренутно подржава Темпо механизам за откривање података у Локију, платформе за праћење као што су Прометхеус и Графана. Графана 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
Испод је листа опција протокола које добијате:
Протокол
Лука
Отворите телеметрију
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
Ово су ИД-ови трагова које морате проследити да бисте генерисали трагове.
Копирам један од ИД-ова праћења и стављам га у траку за претрагу корисничког интерфејса Јаегер-а.
Можете видети да је успешно генерисао трагове у вези са ИД-ом трага који сам навео.
Закључак
Дакле, то је било све о Графани Темпо. Само напред и почните да користите Темпо за генерисање трагова да бисте детаљно разумели метрике и проблеме у вашим евиденцијама.
Све се снима у Темпу, и нећете пропустити ниједан детаљ због довнсамплинга, што се дешавало раније. Темпо је једноставан за програмере или производни тим да разумеју основни узрок грешака или упозорења која се могу појавити у евиденцији.