Въведение в OpenTelemetry за начинаещи

Нека обсъдим OpenTelemetry – неутрален по отношение на доставчика стандартен начин за събиране на телеметрични данни.

Предлагането на по-добра видимост в приложение е голямо предизвикателство за всеки разработчик, тъй като те трябва да заснемат телеметрични данни на приложението. Речникът на Кеймбридж определя телеметрията като наука или процес за събиране на информация за обекти, които са далеч, и изпращане на информацията някъде по електронен път.

Например едно кликване или сесия на потребител на уебсайт генерира много заявки и проследяване, протичащи между мрежи, микроуслуги, бази данни и т.н.

OpenTelemetry е платформа за наблюдение, набор от добре разпределени компоненти, които могат да се използват заедно или а ла карт. Освен това, разработчиците на рамки и библиотеки, които всички ние използваме днес, вече имат стандартен начин за записване на телеметрични данни в тези библиотеки и рамки, като дават на крайните потребители много готови прозрения за това какво правят тези рамки под капака .

За да разберете OpenTelemetry, първо трябва да знаете какво е разпределено проследяване.

Какво е разпределено проследяване?

Тъй като нашите приложения стават по-сложни и повече услуги участват в обслужването на потребителския трафик и завършването на транзакции, става все по-важно да разберем как заявките преминават през нашите услуги и как всяка услуга допринася за цялостното забавяне. Това прави разпределеното проследяване. Той улавя закъснението на потребителските заявки и колко време отнема на всяка микроуслуга в пътя, за да върне отговор.

Когато влезе потребителска заявка, искаме да създадем следа, т.е. общата информация, която описва как нашата система отговаря на потребителска заявка. Следите са съставени от участъци и всеки участък означава конкретна двойка заявка и отговор, участващи в обслужването на потребителска заявка. Родителският обхват описва закъснението, наблюдавано от крайния потребител. И дъщерният обхват се използва, за да се разбере как определена услуга в разпределената система е била извикана и е отговорила с информация за тяхната латентност.

Какво е OpenTelemetry?

OpenTelemetry е проект с отворен код, хостван от CNCF, който предоставя стандартен начин за генериране на телеметрични данни. Създадена е от сливането на OpenTracingстандарт за генериране на данни за проследяване, и OpenCensusкоето беше стандарт за генериране на данни за показатели.

  13 инструмента, които ще ви помогнат да управлявате своята партньорска програма

OpenTelemetry предлага единичен набор от API, агенти, услуги за събиране и библиотеки за улавяне на разпределени следи и показатели от вашето приложение. OpenTelemetry стандартизира начина, по който събираме телеметрични данни и ги изпращаме до бекенд по ваш избор. Това ви осигурява неутрален по отношение на доставчика път към инструментите и ви дава гъвкавостта да промените своя бекенд, без да инструментирате кода си отново.

Така че можете да инструментирате приложенията си с помощта на агент, независим от доставчика, като същевременно изпращате своите показатели и проследявания на доставчик на SaaS като Datadog. След това, ако искате да смените доставчика (напр. от Datadog към Dynatrace), можете да го направите, без да променяте кода на приложението си.

Проектът OpenTelemetry има за цел да предостави единен набор от API библиотеки и агенти за улавяне на показатели и разпределени следи от вашите приложения. Това важи за много езици и платформи. Проектът OpenTelemetry включва също незадължителна услуга за събиране и има специално хранилище за спецификации. За да бъде ясно, OpenTelemetry не е Jaeger или Prometheus, които са наблюдавани бек-ендове. Но помага при експортирането на данни към отворен код и комерсиални бек-ендове.

По-долу са функциите, които OpenTelemetry предоставя:

  • Стандартизиране на събирането на телеметрични данни, които организациите могат да следват, което улеснява преместването между доставчици
  • Семантична конвенция с отворен стандарт за процеса на събиране на данни, независима от доставчика
  • Колектор, който може да бъде разгърнат като агент или шлюз или много различни начини
  • Поддържа множество формати за разпространение на контекст за миграция
  • Цялостно решение за генериране, излъчване, събиране, обработка и експорт на телеметрични данни
  • Възможност за изпращане на данни до различни дестинации паралелно с пълен контрол върху тях

Компоненти на OpenTelemetry

По-долу са основните компоненти на OpenTelemetry:

  • Прото: Този компонент се използва за дефиниране на колектори, библиотеки с инструменти и т.н., които са независими от езика типове интерфейси за OpenTelemetry.
  • Колектор: Колекторите се използват за получаване, обработка и експорт на телеметрични данни. Това внедряване на колектори трябва да бъде агностик на доставчика. По подразбиране всички телеметрични данни се експортират от библиотеките с инструменти на това място.
  • Спецификация: Този компонент описва изискванията и очакванията за внедряването на различни езици, състоящи се от API, SDK и данни. API генерира телеметрични данни, обработка и възможности за експортиране за внедряване на API, предоставени от SDK. Data има семантичните конвенции, за да поддържа всички видове доставчици, без да променя кода.
  • Библиотеки за инструменти: Те са налични на множество езици като част от проекта OpenTelemetry. Тези библиотеки се използват за осигуряване на видимост за други библиотеки, за да направят всички приложения наблюдавани чрез извиквания към OpenTelemetry API.
  Как да плъзгате и пускате между приложения на iPad

OpenTelemetry архитектура

Изображение от New Relic

На високо ниво OpenTelemetry се състои от три основни части:

  • Набор от API за инструменти на приложения, библиотеки и рамки.
  • SDK имплементира API.
  • Допълнителен колектор може да поглъща, обобщава и експортира телеметрични данни, където имате нужда.

Целта на API е да даде възможност за създаване на инструменти за библиотеки и код на приложението. API има четири основни раздела: проследяване, измервателни уреди, споделен контекст и семантични конвенции.

  • API на Tracer поддържа създаване, анотиране и попълване на участъци.
  • API на измервателния уред се състои от множество метрични инструменти. Примери за тези инструменти са наблюдатели, регистратори на стойности, броячи.
  • Можете да проследявате и изпълнявате span контекст, като активирате контекстния API и разпространявате този контекст както вътре, така и извън вашата система.
  • Всички насоки и правила за основно именуване, като именуване на обхвати, атрибути, етикети и метрични инструменти, присъстват в семантичните конвенции. Тези конвенции се прилагат, за да осигурят съгласуваност между различни езикови реализации и за външни инструменти.

В споделен контекст внедряването на контекста се намира между инструмента за проследяване и измервателния уред и позволява всички записи на показатели, които не са наблюдатели, да се появят в контекста на изпълняващ се диапазон. Функция, която позволява на SDK да улавят примерни интервали за стойности на показатели. Можете да персонализирате контекста с пропагатори, които позволяват разпространението на контекста на обхвата във и извън системата, което позволява истинско разпределено проследяване.

Колекторът е съществена част от архитектурата на OpenTelemetry. Това е самостоятелна услуга, която може да получава, обработва и експортира телеметрични данни от различни източници, включително OpenCensus, Zipkin, Jaeger и протокола OpenTelemetry. Използвайки колектори, можете да експортирате обхвати и показатели към множество доставчици и телеметрични системи с отворен код.

Архитектурата OpenTelemetry предлага цялостно решение за телеметрия от кутията. Можете също да направите персонализиране, като използвате множество точки за разширение според нуждите.

  Как да редактирате снимки на вашия iPhone (с помощта на приложението Photos)

Как работи OpenTelemetry?

Във всяка услуга във вашето внедряване инсталирайте клиента OpenTelemetry. Клиентът е SDK; SDK от своя страна има API. Вашите рамки и библиотеки на приложения използват този API за инструменти, за да опишат работата, която вършат. След това SDK експортира събраните наблюдения към услуга за конвейер на данни, наречена Collector.

OpenTelemetry има свой собствен протокол за данни, OTLP, но колекторът може да преведе OTLP в различни формати, включително Зипкин, Йегери Прометей. Трябва да се отбележи, че OpenTelemetry не предоставя собствен бекенд или инструмент за анализ; това е така, защото това е усилие за стандартизация в основата на OpenTelemetry. Целта е да се създаде универсален език за описание на работата на компютрите в облачна среда. Целта не е да стандартизираме начина, по който анализираме тези данни. Вместо това се надяваме, че OpenTelemetry ще помогне да се тласне напред света на наблюдаемостта, като позволи на новите инструменти за анализ да започнат бързо, без да се изгражда наново цялата тази екосистема от софтуер за телеметрия.

Когато изпращате много данни през системата, трябва да вземете предвид много неща. За щастие OpenTelemetry е помислил за всички неща и има решения на всеки от тези въпроси. Първо и най-важно, OpenTelemetry е гъвкав и обработва множество формати за разпространение на контекста. Това означава, че въпреки че има стандарт, все още има възможност за избор в рамките на този стандарт. Така че, ако използвате нещо като контекстния формат на проследяване на w3c или b3 разпространение, това са различни стандарти в стандарта, които позволяват на вашите услуги да свързват точките.

Заключение

OpenTelemetry събира различни наблюдения, като най-важните са разпределените показатели за проследяване и системните ресурси. Вместо да ги третира като отделни сигнали, OpenTelemetry ги сплита заедно и осигурява индексиране и контекст, който ви позволява да обобщавате и кръстосано индексирате всички тези сигнали в задната част.

В допълнение към събирането на данни, OpenTelemetry предоставя средство за обработка и конвейер на данни, което ви позволява да променяте форматите на данните, да манипулирате вашите данни и всички инструменти, от които се нуждаете, за да изградите стабилен телеметричен тръбопровод в модерна система.

И така, това беше всичко за OpenTelemetry, давайте и изпробвайте този инструмент.