Български

Разгледайте събирането на метрики с Prometheus и Grafana. Научете как да наблюдавате ефективно приложенията и инфраструктурата си с тези мощни инструменти с отворен код.

Събиране на метрики: Изчерпателно ръководство с Prometheus и Grafana

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

Какво е събиране на метрики?

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

Защо е важно събирането на метрики?

Представяне на Prometheus и Grafana

Prometheus е набор от инструменти за мониторинг и сигнализация на системи с отворен код, първоначално разработен в SoundCloud. Той е отличен в събирането и съхранението на данни за времеви редове, които са данни, индексирани по времеви печати. Prometheus използва модел, базиран на извличане (pull-based), за да събира метрики от цели (напр. сървъри, приложения) на редовни интервали. Той предлага мощен език за заявки (PromQL) за анализ на събраните данни и дефиниране на правила за сигнализация.

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

Заедно, Prometheus и Grafana формират мощно и гъвкаво решение за мониторинг, което може да бъде адаптирано към широк спектър от среди и случаи на употреба. Те се използват широко в DevOps и SRE (Site Reliability Engineering) практики по целия свят.

Архитектура и концепции на Prometheus

Разбирането на основните компоненти на Prometheus е от съществено значение за ефективното внедряване и използване:

Работен процес на Prometheus

  1. Целите (Приложения, Сървъри и т.н.) излагат метрики. Тези метрики обикновено се излагат чрез HTTP крайpoint.
  2. Prometheus Server събира метрики от конфигурирани цели. Той периодично извлича метрики от тези крайpoints.
  3. Prometheus съхранява събраните метрики в своята база данни за времеви редове.
  4. Потребителите заявят метриките, използвайки PromQL. Това им позволява да анализират данните и да създават графики и табла.
  5. Правилата за сигнализация се оценяват въз основа на съхранените метрики. Ако условието на правило бъде изпълнено, се задейства сигнал.
  6. Alertmanager обработва задействаните сигнали. Той дедупликира, групира и ги маршрутизира към съответните канали за известяване.

Архитектура и концепции на Grafana

Grafana допълва Prometheus, като предоставя лесен за използване интерфейс за визуализация и анализ на събраните метрики:

Работен процес на Grafana

  1. Конфигуриране на източници на данни: Свържете Grafana към вашия Prometheus сървър.
  2. Създаване на табла: Проектирайте табла за визуализация на вашите метрики.
  3. Добавяне на панели към табла: Добавете панели, за да покажете конкретни данни от Prometheus, използвайки PromQL заявки.
  4. Конфигуриране на сигнализация (по избор): Настройте правила за сигнализация в Grafana, за да получавате известия въз основа на конкретни прагове на метрики.
  5. Споделяне на табла: Споделете табла с вашия екип, за да си сътрудничите при мониторинг и анализ.

Настройване на Prometheus и Grafana

Този раздел предоставя ръководство стъпка по стъпка за настройване на Prometheus и Grafana.

Инсталиране на Prometheus

1. Изтегляне на Prometheus:

Изтеглете най-новата версия на Prometheus от официалния уебсайт: https://prometheus.io/download/. Изберете подходящия пакет за вашата операционна система (напр. Linux, Windows, macOS).

2. Разархивиране на архива:

Разархивирайте изтегления архив в директория по ваш избор.

3. Конфигуриране на Prometheus:

Създайте конфигурационен файл `prometheus.yml`. Този файл дефинира целите, които Prometheus ще събира, и други опции за конфигурация. Основна конфигурация може да изглежда така:


global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

Тази конфигурация дефинира две задачи за събиране: една за самия Prometheus (събиране на собствените му метрики) и една за node_exporter, работещ на localhost порт 9100. `scrape_interval` посочва колко често Prometheus ще събира целите.

4. Стартиране на Prometheus:

Изпълнете изпълнимия файл на Prometheus от директорията, където сте разархивирали архива:

./prometheus --config.file=prometheus.yml

Prometheus ще стартира и ще слуша на порт 9090 по подразбиране. Можете да получите достъп до уеб интерфейса на Prometheus във вашия браузър на http://localhost:9090.

Инсталиране на Grafana

1. Изтегляне на Grafana:

Изтеглете най-новата версия на Grafana от официалния уебсайт: https://grafana.com/grafana/download. Изберете подходящия пакет за вашата операционна система.

2. Инсталиране на Grafana:

Следвайте инструкциите за инсталиране за вашата операционна система. Например, на Debian/Ubuntu:


sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana

3. Стартиране на Grafana:

Стартирайте услугата Grafana:

sudo systemctl start grafana-server

4. Достъп до Grafana:

Grafana ще стартира и ще слуша на порт 3000 по подразбиране. Можете да получите достъп до уеб интерфейса на Grafana във вашия браузър на http://localhost:3000.

Потребителското име и паролата по подразбиране са `admin` и `admin`. Ще бъдете подканени да промените паролата при първоначален вход.

Свързване на Grafana към Prometheus

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

1. Добавяне на източник на данни:

В уеб интерфейса на Grafana навигирайте до Конфигурация > Източници на данни и кликнете върху Добавяне на източник на данни.

2. Избор на Prometheus:

Изберете Prometheus като тип на източника на данни.

3. Конфигуриране на връзката с Prometheus:

Въведете URL адреса на вашия Prometheus сървър (напр. `http://localhost:9090`). Конфигурирайте други опции, ако е необходимо (напр. удостоверяване).

4. Запазване и тестване:

Кликнете върху Запазване и тест, за да проверите дали Grafana може успешно да се свърже с Prometheus.

Създаване на табла в Grafana

След като свържете Grafana към Prometheus, можете да създавате табла за визуализация на вашите метрики.

1. Създаване на ново табло:

В уеб интерфейса на Grafana кликнете върху иконата + в страничната лента и изберете Табло.

2. Добавяне на панел:

Кликнете върху Добавяне на празен панел, за да добавите нов панел към таблото.

3. Конфигуриране на панела:


rate(process_cpu_seconds_total{job="node_exporter"}[5m])

Тази заявка изчислява скоростта на промяна на CPU времето, използвано от процесите, събрани от node_exporter, за период от 5 минути.

4. Запазване на таблото:

Кликнете върху иконата за запазване, за да запазите таблото.

PromQL: Езикът за заявки на Prometheus

PromQL е мощен език за заявки, използван за извличане и манипулиране на метрики, съхранявани в Prometheus. Той ви позволява да извършвате широк набор от операции, включително:

Примери за PromQL


rate(process_cpu_seconds_total{job="node_exporter"}[5m])

node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes

(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100

rate(http_requests_total[5m])

Изучаването на PromQL е от съществено значение за ефективното използване на Prometheus и Grafana. Обърнете се към документацията на Prometheus за изчерпателно ръководство на езика.

Сигнализация с Prometheus и Alertmanager

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

Дефиниране на правила за сигнализация

Правилата за сигнализация се дефинират във файла за конфигурация `prometheus.yml`. Ето пример за правило за сигнализация, което се задейства, когато използването на CPU надвишава 80%:


rule_files:
  - "rules.yml"

След това, във файл на име `rules.yml`, поставете правила като това:


groups:
- name: example
  rules:
  - alert: HighCPUUsage
    expr: rate(process_cpu_seconds_total{job="node_exporter"}[5m]) > 0.8
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "High CPU usage detected"
      description: "CPU usage is above 80% on {{ $labels.instance }}"

Обяснение:

Конфигуриране на Alertmanager

Alertmanager обработва маршрутизирането и известяването на сигнали. Трябва да конфигурирате Alertmanager, за да посочите къде трябва да се изпращат сигналите (напр. имейл, Slack, PagerDuty). Обърнете се към документацията на Alertmanager за подробни инструкции за конфигурация.

Минимална конфигурация `alertmanager.yml` може да изглежда така:


global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 12h
  receiver: 'web.hook'

receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://localhost:8080/'

Тази конфигурация изпраща сигнали към webhook на localhost порт 8080. Можете да персонализирате секцията `receivers`, за да използвате услуги като Slack или имейл вместо това.

Практически примери и случаи на употреба

Prometheus и Grafana могат да се използват за наблюдение на широк спектър от приложения и инфраструктурни компоненти. Ето някои практически примери:

Пример: Мониторинг на архитектура с микроуслуги

В архитектура с микроуслуги, Prometheus и Grafana могат да се използват за наблюдение на здравето и производителността на отделните услуги, както и на цялостната система. Всяка услуга може да излага собствените си метрики, като скорости на заявки, времена за реакция и нива на грешки. Prometheus може след това да събира тези метрики, а Grafana може да се използва за тяхното визуализиране. Това ви позволява бързо да идентифицирате тесни места в производителността или откази в конкретни услуги.

Разширени техники и добри практики

За да извлечете максимума от Prometheus и Grafana, разгледайте следните разширени техники и добри практики:

Отстраняване на често срещани проблеми

Дори и при внимателно планиране и внедряване, може да срещнете проблеми при използването на Prometheus и Grafana. Ето някои често срещани проблеми и техните решения:

Алтернативни решения за мониторинг

Въпреки че Prometheus и Grafana са мощни инструменти, те не са единствените опции за събиране и визуализация на метрики. Други популярни решения за мониторинг включват:

Най-доброто решение за мониторинг за вашата организация ще зависи от вашите специфични изисквания и бюджет.

Заключение

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

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