Система моніторингу Prometheus ⋆ ALexHost SRL

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Use code at checkout:

Skills
10.12.2024

Система моніторингу Prometheus

Зі зростанням складності систем і додатків моніторинг стає необхідним для забезпечення оптимальної продуктивності, надійності та масштабованості. Prometheus, інструментарій моніторингу та оповіщення з відкритим вихідним кодом, став одним з найпопулярніших рішень для управління та візуалізації метрик з різних систем. Спочатку розроблений SoundCloud, Prometheus зараз є проектом Cloud Native Computing Foundation (CNCF) і має широке застосування в різних галузях.

У цій статті ми розглянемо ключові особливості Prometheus, принцип його роботи та кроки, необхідні для його налаштування для моніторингу вашої інфраструктури та додатків.

Що таке Prometheus?

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

Prometheus відомий кількома ключовими особливостями:

  • Модель даних часових рядів: Prometheus зберігає дані у вигляді часових рядів, тобто показники реєструються через певні проміжки часу.
  • Моніторинг на основі витягування: Замість того, щоб відстежувані системи виштовхували метрики на сервер, Prometheus використовує модель на основі витягування для отримання метрик з кінцевих точок.
  • Потужна мова запитів (PromQL): Prometheus надає потужну мову запитів PromQL, яка дозволяє користувачам фільтрувати та агрегувати метрики в режимі реального часу.
  • Сповіщення: Prometheus інтегрується з Alertmanager для визначення правил і надсилання сповіщень при виконанні певних умов.
  • Виявлення сервісів: Prometheus може автоматично виявляти і витягувати метрики з динамічно мінливих середовищ, таких як Kubernetes.

Як працює Prometheus

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

  1. Збір метрик (скрейпінг): Prometheus періодично збирає метрики з кінцевих точок HTTP (так званих експортерів), які відкриваються додатками або системами.
  2. Зберігання часових рядів даних: Після збору Prometheus зберігає метрики в базі даних часових рядів, де кожна точка даних пов’язана з міткою часу і набором міток.
  3. Запити за допомогою PromQL: Користувачі можуть запитувати збережені метрики за допомогою мови запитів Prometheus, PromQL, щоб генерувати графіки, інформаційні панелі або сповіщення.
  4. Сповіщення: На основі попередньо визначених умов, Prometheus може запускати сповіщення за допомогою Alertmanager, який може надсилати сповіщення електронною поштою, Slack, PagerDuty або іншими сервісами.

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

Компоненти Prometheus

Prometheus складається з декількох основних компонентів, кожен з яких служить для різних цілей:

  1. Сервер Prometheus: Центральний компонент, що відповідає за збір, зберігання та запит метрик. Він сканує цільові кінцеві точки і зберігає метрики в базі даних часових рядів.
  2. Експортери: Це додатки або сервіси, які надають метрики у форматі, сумісному з Prometheus. До поширених експортерів належать
    • Node Exporter: збирає метрики на рівні обладнання та операційної системи.
    • Експортер “чорного ящика”: для зондування кінцевих точок через HTTP, DNS, TCP тощо.
    • Експортери для конкретних програм: Багато баз даних (наприклад, PostgreSQL, MySQL) і сервісів мають власні експортери.
  3. Менеджер сповіщень: Prometheus використовує Alertmanager для обробки сповіщень. Він може надсилати сповіщення до різних отримувачів, таких як Slack, електронна пошта або SMS, а також керувати правилами вимкнення та призупинення сповіщень.
  4. PromQL (Prometheus Query Language): Потужна мова запитів, що використовується для отримання та маніпулювання даними часових рядів.
  5. Pushgateway: Компонент, який використовується для ефемерних або короткочасних завдань, які не можуть отримати метрики за допомогою прямого скрейпу (наприклад, пакетні завдання). Шлюз дозволяє таким завданням передавати свої метрики до Prometheus.
  6. Grafana: Хоча Grafana не є частиною самого Prometheus, це популярний інструмент з відкритим вихідним кодом, який використовується для візуалізації даних Prometheus і створення інтерактивних дашбордів.

Покрокове налаштування Prometheus

Ось як ви можете встановити Prometheus на сервері Linux і почати моніторинг системних показників:

Крок 1: Встановіть Prometheus
  1. Завантажте Prometheus: Відвідайте сторінку завантажень Prometheus, щоб отримати останню версію Prometheus. Виконайте наступні команди, щоб завантажити та розпакувати Prometheus:
    wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz tar -xvf prometheus-2.32.1.linux-amd64.tar.gz cd prometheus-2.32.1.linux-amd64
  2. Запустіть Prometheus: Запустіть наступну команду, щоб запустити Prometheus:
    ./prometheus –config.file=prometheus.yml

    За замовчуванням Prometheus працює на порту 9090, і ви можете отримати доступ до його веб-інтерфейсу, перейшовши за адресою http://localhost:9090 у вашому браузері.

Крок 2: Налаштування Prometheus

Основна конфігурація Prometheus виконується за допомогою файлу prometheus.yml. Цей файл вказує Prometheus, які цілі (експортери) сканувати і як часто.

Ось базова конфігурація prometheus.yml:

global: scrape_interval: 15s # Як часто вилучати метрики scrape_configs: – job_name: “prometheus” static_configs: – targets: [“localhost:9090”] # Скремблювання самого Prometheus

Ви можете додати більше цілей або експортерів за потреби, і Prometheus автоматично почне скребти їх.

Крок 3: Встановіть Node Exporter (для системних метрик)

Для моніторингу системних показників, таких як використання процесора, пам’яті, диска і мережі, ви можете встановити Node Exporter.

  1. Завантажте Node Exporter:
    wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64
  2. Запуск Node Exporter: Виконайте наступну команду для запуску Node Exporter:
    ./node_exporter

    За замовчуванням, Node Exporter працює на порту 9100 і показує такі показники, як використання процесора, статистика пам’яті, дискового вводу/виводу та мережеві показники.

  3. Налаштування Prometheus для експорту вилучених вузлів: додайте наступне завдання до конфігураційного файлу prometheus.yml:
    scrape_configs: – job_name: ‘node_exporter’ static_configs: – targets: [‘localhost:9100’]
  4. Перезапустіть Prometheus: Після внесення змін до конфігураційного файлу перезапустіть Prometheus, щоб почати вилучення метрик з Node Exporter.
Крок 4: Візуалізація метрик за допомогою Grafana

Для візуалізації метрик Prometheus чудовим інструментом є Grafana. Він легко інтегрується з Prometheus і дозволяє створювати інтерактивні дашборди.

  1. Встановіть Grafana: В Linux ви можете встановити Grafana, дотримуючись інструкцій на сайті Grafana.
  2. Налаштуйте Prometheus як джерело даних: Після встановлення Grafana:
    • Увійдіть до Grafana (http://localhost:3000).
    • Перейдіть до Конфігурація > Джерела даних і додайте Prometheus як джерело даних (http://localhost:9090).
  3. Створіть дашборди: Тепер ви можете створювати власні кастомні дашборди або імпортувати готові дашборди з маркетплейсу Grafana, щоб візуалізувати такі показники, як використання процесора, пам’яті, продуктивність диска тощо.
Крок 5: Налаштування сповіщень

Prometheus дозволяє налаштовувати сповіщення на основі певних умов, таких як високе завантаження процесора, мало місця на диску або збої в роботі додатків.

  1. Визначте правила сповіщень: Сповіщення визначаються в окремому файлі rules.yml. Ось приклад правила сповіщення, яке спрацьовує, коли завантаження процесора перевищує 80%:
    groups: – name: example_alerts rules: – alert: HighCPUUsage expr: 100 – (avg by(instance) (rate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: “High CPU usage detected on {{ $labels.instance }}” description: “Використання процесора перевищує 80% більше ніж на 5 хвилин”
  2. Налаштуйте Alertmanager: Встановіть і налаштуйте Alertmanager для надсилання сповіщень електронною поштою, Slack або іншими каналами, коли спрацьовує попередження.

Варіанти використання Prometheus

Prometheus використовується в широкому спектрі сценаріїв для моніторингу різних типів систем, зокрема:

  1. Моніторинг інфраструктури: Збирайте метрики з серверів, баз даних і мережевих пристроїв, щоб переконатися, що ваша інфраструктура працює безперебійно.
  2. Моніторинг додатків: Відстежуйте показники продуктивності, такі як затримка, частота запитів, рівень помилок і споживання ресурсів для додатків, особливо в мікросервісних архітектурах.
  3. Моніторинг Kubernetes: Prometheus інтегрується з Kubernetes і може автоматично виявляти і витягувати метрики з модулів і сервісів в кластері Kubernetes.
  4. Кастомні метрики: Prometheus дозволяє вам налаштовувати власні додатки для відображення користувацьких метрик, забезпечуючи глибоке розуміння поведінки конкретних додатків.

Висновок

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

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

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Use code at checkout:

Skills