Инструменты мониторинга и управления виртуализацией

Мониторинг и управление виртуальными машинами и контейнерами являются критически важными задачами для поддержания стабильной и эффективной ИТ-инфраструктуры. В этой документации мы рассмотрим инструменты мониторинга, такие как Prometheus, Grafana и Nagios, настройку мониторинга виртуальных машин и контейнеров, а также управление и настройку алертинга. Все примеры будут приведены для НАЙС ОС с использованием пакетного менеджера tdnf.

Введение в инструменты мониторинга

Для мониторинга и управления виртуализацией существует множество инструментов, среди которых выделяются Prometheus, Grafana и Nagios. Эти инструменты обеспечивают сбор данных, визуализацию и управление оповещениями, что позволяет эффективно контролировать состояние вашей ИТ-инфраструктуры.

Prometheus

Prometheus — это система мониторинга и алертинга с открытым исходным кодом, разработанная для сбора и обработки метрик. Prometheus использует язык запросов PromQL для анализа данных и предоставляет API для интеграции с другими инструментами.

Grafana

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

Nagios

Nagios — это система мониторинга, которая позволяет контролировать состояния серверов, сервисов и сетевого оборудования. Nagios предоставляет функции алертинга и уведомлений, что позволяет оперативно реагировать на проблемы.

Настройка мониторинга виртуальных машин и контейнеров

Для настройки мониторинга виртуальных машин и контейнеров необходимо установить и настроить Prometheus и Grafana, а также настроить сбор данных с помощью экспортеров.

Установка Prometheus

Для установки Prometheus на НАЙС ОС выполните следующие шаги:


sudo tdnf install -y wget
wget https://github.com/prometheus/prometheus/releases/download/v2.31.1/prometheus-2.31.1.linux-amd64.tar.gz
tar xvf prometheus-2.31.1.linux-amd64.tar.gz
sudo mv prometheus-2.31.1.linux-amd64 /usr/local/prometheus
sudo ln -s /usr/local/prometheus/prometheus /usr/local/bin/prometheus

Создайте файл конфигурации Prometheus:


sudo nano /usr/local/prometheus/prometheus.yml

Добавьте следующие строки:


global:
  scrape_interval: 15s

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

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

Запустите Prometheus:


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

Установка Node Exporter

Node Exporter используется для сбора метрик с хостовой системы. Для установки 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
sudo mv node_exporter-1.3.1.linux-amd64 /usr/local/node_exporter
sudo ln -s /usr/local/node_exporter/node_exporter /usr/local/bin/node_exporter

Запустите Node Exporter:


node_exporter

Установка Grafana

Для установки Grafana на НАЙС ОС выполните следующие шаги:


wget https://dl.grafana.com/oss/release/grafana-8.2.2.linux-amd64.tar.gz
tar xvf grafana-8.2.2.linux-amd64.tar.gz
sudo mv grafana-8.2.2 /usr/local/grafana
sudo ln -s /usr/local/grafana/bin/grafana-server /usr/local/bin/grafana-server

Запустите Grafana:


grafana-server --homepath=/usr/local/grafana

Откройте браузер и перейдите по адресу http://localhost:3000, чтобы получить доступ к интерфейсу Grafana.

Настройка Grafana для работы с Prometheus

Для добавления Prometheus в качестве источника данных в Grafana выполните следующие шаги:

  1. Откройте интерфейс Grafana и войдите в систему.
  2. Перейдите в раздел Configuration > Data Sources.
  3. Нажмите кнопку Add data source.
  4. Выберите Prometheus из списка источников данных.
  5. Введите URL Prometheus (например, http://localhost:9090) и нажмите кнопку Save & Test.

Создание панелей мониторинга в Grafana

Для создания панели мониторинга в Grafana выполните следующие шаги:

  1. Перейдите в раздел Create > Dashboard.
  2. Нажмите кнопку Add new panel.
  3. Выберите источник данных Prometheus и введите запрос для отображения данных (например, node_cpu_seconds_total).
  4. Настройте визуализацию панели и нажмите кнопку Save.

Мониторинг Docker-контейнеров

Для мониторинга Docker-контейнеров используйте cAdvisor, который собирает метрики контейнеров и предоставляет их Prometheus. Для установки cAdvisor выполните следующие шаги:


docker run -d --name=cadvisor --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 google/cadvisor:latest

Добавьте cAdvisor в конфигурацию Prometheus:


sudo nano /usr/local/prometheus/prometheus.yml

Добавьте следующие строки:


  - job_name: 'cadvisor'
    static_configs:
      - targets: ['localhost:8080']

Перезапустите Prometheus:


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

Управление и настройка алертинга

Для эффективного управления и настройки алертинга необходимо настроить правила оповещений и интеграцию с инструментами уведомлений.

Настройка алертинга в Prometheus

Для настройки алертинга в Prometheus необходимо создать файл конфигурации правил оповещений. Создайте файл alert.rules.yml:


sudo nano /usr/local/prometheus/alert.rules.yml

Добавьте следующие правила:


groups:
  - name: example
    rules:
    - alert: HighCPUUsage
      expr: node_cpu_seconds_total > 80
      for: 5m
      labels:
        severity: critical
      annotations:
        summary: "High CPU usage detected"
        description: "CPU usage is above 80% for more than 5 minutes."

Обновите конфигурацию Prometheus для использования правил оповещений:


sudo nano /usr/local/prometheus/prometheus.yml

Добавьте следующие строки:


rule_files:
  - "alert.rules.yml"

Перезапустите Prometheus:


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

Установка и настройка Alertmanager

Alertmanager используется для управления оповещениями, создаваемыми Prometheus. Для установки Alertmanager выполните следующие шаги:


wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
tar xvf alertmanager-0.23.0.linux-amd64.tar.gz
sudo mv alertmanager-0.23.0.linux-amd64 /usr/local/alertmanager
sudo ln -s /usr/local/alertmanager/alertmanager /usr/local/bin/alertmanager

Создайте файл конфигурации Alertmanager:


sudo nano /usr/local/alertmanager/alertmanager.yml

Добавьте следующие строки:


global:
  resolve_timeout: 5m

route:
  receiver: 'default'

receivers:
  - name: 'default'
    email_configs:
      - to: 'your-email@example.com'
        from: 'alertmanager@example.com'
        smarthost: 'smtp.example.com:587'
        auth_username: 'alertmanager@example.com'
        auth_password: 'yourpassword'

Запустите Alertmanager:


alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml

Интеграция Prometheus с Alertmanager

Для интеграции Prometheus с Alertmanager обновите файл конфигурации Prometheus:


sudo nano /usr/local/prometheus/prometheus.yml

Добавьте следующие строки:


alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - localhost:9093

Перезапустите Prometheus:


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

Настройка алертинга в Grafana

Grafana также поддерживает настройку алертинга на основе панелей мониторинга. Для создания алерта выполните следующие шаги:

  1. Откройте панель мониторинга Grafana.
  2. Выберите панель, для которой вы хотите настроить алерт.
  3. Нажмите кнопку Edit и перейдите в раздел Alert.
  4. Нажмите кнопку Create Alert и настройте условия срабатывания алерта.
  5. Настройте действия при срабатывании алерта (например, отправка уведомлений по электронной почте).
  6. Нажмите кнопку Save для сохранения настроек.

Управление и настройка уведомлений

Для эффективного управления уведомлениями необходимо настроить интеграцию с различными системами уведомлений, такими как Slack, PagerDuty или электронная почта.

Интеграция с Slack

Для интеграции Alertmanager с Slack выполните следующие шаги:

  1. Создайте новый Incoming Webhook в Slack и получите URL вебхука.
  2. Обновите файл конфигурации Alertmanager:
  3. 
    sudo nano /usr/local/alertmanager/alertmanager.yml
    

    Добавьте следующие строки в раздел receivers:

    
    receivers:
      - name: 'default'
        slack_configs:
          - api_url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
            channel: '#alerts'
            username: 'alertmanager'
    

    Перезапустите Alertmanager:

    
    alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
    

    Интеграция с PagerDuty

    Для интеграции Alertmanager с PagerDuty выполните следующие шаги:

    1. Создайте новый сервис в PagerDuty и получите ключ интеграции.
    2. Обновите файл конфигурации Alertmanager:
    3. 
      sudo nano /usr/local/alertmanager/alertmanager.yml
      

      Добавьте следующие строки в раздел receivers:

      
      receivers:
        - name: 'default'
          pagerduty_configs:
            - service_key: 'YOUR_PAGERDUTY_SERVICE_KEY'
      

      Перезапустите Alertmanager:

      
      alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
      

      Интеграция с электронной почтой

      Для настройки уведомлений по электронной почте обновите файл конфигурации Alertmanager:

      
      sudo nano /usr/local/alertmanager/alertmanager.yml
      

      Добавьте следующие строки в раздел receivers:

      
      receivers:
        - name: 'default'
          email_configs:
            - to: 'your-email@example.com'
              from: 'alertmanager@example.com'
              smarthost: 'smtp.example.com:587'
              auth_username: 'alertmanager@example.com'
              auth_password: 'yourpassword'
      

      Перезапустите Alertmanager:

      
      alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
      

      Инструменты мониторинга и управления виртуализацией, такие как Prometheus, Grafana и Nagios, предоставляют мощные возможности для сбора данных, визуализации и управления оповещениями. Настройка мониторинга виртуальных машин и контейнеров, управление и настройка алертинга помогут вам эффективно контролировать состояние вашей ИТ-инфраструктуры и быстро реагировать на возникающие проблемы.