Вступ до Прометея і Графана

Prometheus — це система моніторингу з відкритим вихідним кодом на основі показників. Він збирає дані зі служб і хостів, надсилаючи HTTP-запити на кінцеві точки метрик. Потім він зберігає результати в базі даних часових рядів і робить їх доступними для аналізу та попередження.

Чому монітор?

  • Вмикає сповіщення, коли щось піде не так, бажано до того, як піде не так. Щоб хтось міг на це поглянути.
  • Він надає інформацію, щоб увімкнути аналіз, налагодження та вирішення проблеми.
  • Це дає змогу бачити тенденції/зміни з часом. Наприклад, скільки активних сеансів у будь-який момент часу. Це допомагає у прийнятті дизайнерських рішень і плануванні потужності.

Моніторинг зазвичай стосується подій. Подія може включати отримання HTTP-запиту, надсилання відповіді, читання з диска, вхід користувача. Моніторинг системи може включати профілювання, журналювання, трасування, показники, попередження та візуалізацію.

Моніторинг Blackbox проти Whitebox

Моніторинг поділяється на дві основні категорії:

Моніторинг Blackbox

У моніторингу Blackbox моніторинг здійснюється на рівні програми або хоста, оскільки вони спостерігаються ззовні. Це може бути досить обмеженим.

Моніторинг Whitebox

Моніторинг Whitebox означає моніторинг внутрішньої роботи служби. Він відкриває дані про стан і продуктивність внутрішніх компонентів.

Чотири золоті сигнали

За даними Googleякщо ви можете виміряти лише чотири показники вашої орієнтованої на користувача системи, зосередьтеся на наступних чотирьох, які називаються Чотири золоті сигнали:

#1. Затримка

Час, необхідний для обслуговування запиту – успішного чи невдалого. Важливо відстежувати не тільки успішні запити, а й невдалі.

#2. трафік

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

  9 найкращих інструментів для усунення несправностей мережі, які ми переглянули у 2020 році

#3. Помилки

Рівень невдалих запитів.

#4. насиченість

Наскільки повний ваш сервіс. Збільшення затримки часто є важливим показником насичення. Багато систем знижують продуктивність набагато раніше, ніж досягають 100% використання.

Типи метрики Prometheus

Метрики Prometheus бувають чотирьох основних типів:

#1. Лічильник

Значення лічильника завжди зростатиме. Він ніколи не може зменшитися, але його можна скинути до нуля. Отже, якщо сканування не вдається, це означає лише пропущену точку даних. Сукупне збільшення буде доступним під час наступного читання. приклади:

  • Загальна кількість отриманих запитів HTTP
  • Кількість винятків.

#2. Калібр

Датчик — це моментальний знімок у будь-який заданий момент часу. Він може як збільшуватися, так і зменшуватися. Якщо вибірка даних не вдається, ви втрачаєте вибірку; наступна вибірка може показати інше значення: наприклад, дисковий простір, використання пам’яті.

#3. Гістограма

Гістограма відбирає вибірку спостережень і підраховує їх у сегментах, які можна налаштувати. Вони використовуються для таких речей, як тривалість запиту або розмір відповіді. Наприклад, ви можете виміряти тривалість запиту для конкретного запиту HTTP. Гістограма матиме набір сегментів, скажімо, 1 мс, 10 мс і 25 мс. Замість того, щоб зберігати кожну тривалість для кожного запиту, Prometheus зберігатиме частоту запитів, які потрапляють у певне відро.

#4. Резюме

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

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

Сервер Prometheus

Збирає показники, зберігає їх і робить доступними для запитів, надсилає сповіщення на основі зібраних показників.

Зішкріб

Прометей це система на основі витягування. Щоб отримати показники, Prometheus надсилає HTTP-запит, який називається скануванням. Він надсилає сканування цілям на основі своєї конфігурації.

Кожна ціль (статично визначена чи динамічно виявлена) очищується через регулярний інтервал (інтервал очищення). Кожне сканування зчитує кінцеву точку HTTP /metrics, щоб отримати поточний стан метрик клієнта та зберігає значення в базі даних часових рядів Prometheus.

  10 Хмарних інструментів кросбраузерного тестування [2022]

Існує більше баз даних часових рядів для рішень моніторингу, які ви можете вивчити.

Клієнтські бібліотеки

Щоб контролювати службу, вам потрібно додати інструментарій до свого коду. Існують клієнтські бібліотеки для всіх популярних мов і середовищ виконання. Використовуючи ці бібліотеки, як тільки ви додасте кілька рядків коду, ваш код може почати видавати показники. Це називається прямим інструментуванням. Ці бібліотеки дозволяють визначати внутрішні показники, а також показувати їх через кінцеву точку 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
  • Вузол – для метрик сервера Linux
  • Чорна скринька – для показників продуктивності DNS і веб-сайту
  • JMX – для метрик додатків на основі Java

Після того, як додатки будуть оснащені інструментами або експортери будуть на місці, вам потрібно повідомити Prometheus, де вони знаходяться. Це можна зробити за допомогою статичної конфігурації. У випадку динамічного середовища це неможливо зробити; тому використовується виявлення служби.

  Як подати заявку на отримання Apple Card

Оповіщення

Оповіщення з Prometheus складається з двох частин –

Правила сповіщень надсилають сповіщення Alertmanager.

Потім Alertmanager керує цими сповіщеннями. Він надсилає сповіщення за допомогою багатьох готових інтеграцій, таких як електронна пошта, Slack, Hipchat і PagerDuty. Alertmanager також може виконувати мовчання або агрегацію, щоб зменшити кількість сповіщень.

Ось посібник із моніторингу сервера Linux за допомогою Prometheus і Dashboard.

Візуалізація за допомогою інформаційних панелей

Prometheus має низку API, за допомогою яких запити PromQL можуть створювати необроблені дані для візуалізації.

Хоча Prometheus містить браузер виразів, який можна використовувати для спеціальних запитів, найкращим доступним інструментом є Графана. Grafana повністю інтегрується з Prometheus і може створювати широкий спектр інформаційних панелей.

Вам потрібно буде налаштувати Prometheus як джерело даних для Grafana.

Ви можете додати інформаційні панелі:

  • Імпорт панелей інструментів, створених спільнотою
  • Створення власного
  • Використання попередньо визначеної інформаційної панелі.

Ось як виглядає попередньо визначена інформаційна панель експортера вузлів:

У Grafana є модуль worldPing, який дозволяє відстежувати показники продуктивності сайту та DNS у всьому світі.

Резюме

У Prometheus дуже мало вимог. Це може бути досить просто запустити, оскільки це один двійковий файл із файлом конфігурації. Він може обробляти тисячі цілей і приймати мільйони зразків за секунду. Prometheus призначений для відстеження загальної системи, здоров’я, поведінки системи.

Grafana — це найкращий доступний інструмент для візуалізації показників, який легко інтегрується з ним Прометей.