Въведение в Прометей и Графана

Prometheus е система за мониторинг с отворен код, базирана на показатели. Той събира данни от услуги и хостове, като изпраща HTTP заявки до крайни точки на показателите. След това съхранява резултатите в база данни с времеви серии и ги прави достъпни за анализ и предупреждение.

Защо да наблюдавате?

  • Активира сигнали, когато нещата се объркат, за предпочитане преди да се объркат. За да може някой да го погледне.
  • Той предоставя представа за разрешаване на анализ, отстраняване на грешки и разрешаване на проблема.
  • Позволява ви да видите тенденции/промени във времето. Например колко активни сесии в даден момент. Това помага при дизайнерските решения и планирането на капацитета.

Мониторингът обикновено е свързан със събития. Едно събитие може да включва получаване на HTTP заявка, изпращане на отговор, четене от диск, влизане на потребител. Мониторингът на система може да включва профилиране, регистриране, проследяване, показатели, предупреждение и визуализация.

Blackbox срещу Whitebox мониторинг

Мониторингът попада в две основни категории:

Blackbox мониторинг

При мониторинга на Blackbox мониторингът е на ниво приложение или хост, тъй като те се наблюдават отвън. Това може да бъде доста ограничаващо.

Наблюдение на Whitebox

Наблюдението на Whitebox означава наблюдение на вътрешността на дадена услуга. Това ще разкрие данни за състоянието и производителността на вътрешните компоненти.

Четирите златни сигнала

Според Googleако можете да измерите само четири показателя на вашата насочена към потребителите система, съсредоточете се върху следните четири, наречени Четирите златни сигнала:

#1. Латентност

Времето, необходимо за обслужване на заявка – успешно или неуспешно. Важно е да се проследяват не само успешните заявки, но и неуспешните.

  Как да изтриете хоризонтална линия в Word

#2. Трафик

Мярка за това колко голямо е търсенето на вашата система. За уеб услуга това обикновено са HTTP заявки в секунда.

#3. Грешки

Процентът на неуспешните заявки.

#4. Насищане

Колко пълна е вашата услуга. Увеличаването на латентността често е важен индикатор за насищане. Много системи влошават производителността много преди да постигнат 100% използване.

Видове метрики на Prometheus

Метриките на Prometheus са от четири основни типа:

#1. Брояч

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

  • Общ брой получени HTTP заявки
  • Броят на изключенията.

#2. Габарит

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

#3. Хистограма

Хистограмата взема проби от наблюденията и ги брои в конфигурируеми кофи. Те се използват за неща като продължителност на заявката или размер на отговора. Например, можете да измерите продължителността на заявка за конкретна HTTP заявка. Хистограмата ще има набор от кофи, да речем 1ms, 10 ms и 25ms. Вместо да съхранява всяка продължителност за всяка заявка, Prometheus ще съхранява честотата на заявките, които попадат в определена кофа.

#4. Резюме

Подобно на наблюденията на примерни хистограми, обикновено се изисква продължителност или размер на отговора. Той ще предостави общ брой наблюдения и сбор от всички наблюдавани стойности, което ви позволява да изчислите средната стойност на наблюдаваните стойности. Например за една минута сте имали три заявки, които са отнели 2,3,4 секунди. Сумата ще бъде 9, а броят ще бъде 3. Забавянето ще бъде 3 секунди.

  Ограничете отворените раздели в Chrome и убийте допълнителни с xTab

Компоненти на екосистемата Prometheus

Сървърът Prometheus

Събира показатели, съхранява ги и ги прави достъпни за заявки, изпраща предупреждения въз основа на събраните показатели.

Остъргване

Прометей е система, базирана на изтегляне. За да извлече показатели, Prometheus изпраща HTTP заявка, наречена скрейп. Той изпраща скрейпове до цели въз основа на своята конфигурация.

Всяка цел (статично дефинирана или динамично открита) се изчерпва на редовен интервал (интервал на изтриване). Всяко скрейп чете /metrics HTTP крайната точка, за да получи текущото състояние на клиентските показатели и запазва стойностите в базата данни с времеви серии на Prometheus.

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

Клиентски библиотеки

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

Prometheus предлага официални клиентски библиотеки за Go, Java, Python и Ruby. Prometheus има отворена екосистема. Има също създадени от общността клиентски библиотеки, налични за C, PHP, Node.js, C#/.NET и много други.

Износители

Много приложения излагат показатели във формат, различен от Prometheus. За тях и за приложения, които не притежавате или за които нямате достъп до код, не можете да добавяте инструменти директно. Например MySQL, Kafka, JMX, HAProxy и NGINX сървър. В тези сценарии вие използвате износители.

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

  Разбиране на кредитирането и вземането на заеми в криптовалута за начинаещи

Някои от популярните износители са:

  • Windows – за Windows сървърни показатели
  • Възел – за показатели на Linux сървър
  • Черна кутия – за показатели за ефективност на DNS и уебсайтове
  • JMX – за метрики на приложения, базирани на Java

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

Предупреждаване

Предупреждението с Prometheus се състои от две части –

Правилата за предупреждение изпращат предупреждения до Alertmanager.

След това Alertmanager управлява тези сигнали. Той изпраща известия, като използва много готови интеграции като имейл, Slack, Hipchat и PagerDuty. Alertmanager може също да извърши заглушаване или агрегиране, за да намали броя на известията.

Ето ръководството за наблюдение на Linux сървъра с помощта на Prometheus и Dashboard.

Визуализация с табла за управление

Prometheus има редица API, чрез които заявките на PromQL могат да произвеждат необработени данни за визуализации.

Въпреки че Prometheus включва браузър за изрази, който може да се използва за ad hoc заявки, най-добрият наличен инструмент е Графана. Grafana се интегрира напълно с Prometheus и може да произвежда голямо разнообразие от табла за управление.

Ще трябва да конфигурирате Prometheus като източник на данни за Grafana.

Можете да добавите табла за управление чрез:

  • Импортиране на изградени от общността табла за управление
  • Изграждане на вашия собствен
  • Използване на предварително дефинирано табло.

Ето как изглежда предварително дефинирано табло за експортиране на възли:

Grafana има модул worldPing, който ви позволява да наблюдавате показателите за ефективност на сайта и DNS в световен мащаб.

Резюме

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

Grafana е най-добрият наличен инструмент за визуализация на показатели и се интегрира безпроблемно с Прометей.