С помощью этого руководства вы настроите мониторинг виртуальной машины в сервисе «Мониторинг» с помощью плагина vmagent. Плагин представляет собой легковесный агент для сбора метрик, который поддерживает протокол remote_write для отправки данных в системы мониторинга.
Вы будете использовать следующие сервисы:
Мониторинг — сервис сбора и хранения метрик облачных ресурсов.
Виртуальные машины — сервис, в рамках которого предоставляется виртуальная машина, для которой будет настроен мониторинг.
vmagent — агент, автоматизирующий сбор метрик приложений, развернутых на виртуальной машине.
Node Exporter — агент, собирающий мертики ОС на базе ядра Linux и передающий их в систему мониторинга Prometheus.
Шаги:
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
Создайте сервисный аккаунт. При создании в поле Сервисы выберите роль «monaas.write».
Для сервисного аккаунта создайте ключи доступа.
Создайте виртуальную машину Ubuntu.
Убедитесь, что в сервисе «Виртуальные машины» у вас есть права администратора для установки программного обеспечения.
1. Подготовьте виртуальную машину
После создания виртуальной машины подключитесь к ней по SSH:
ssh username@your-vm-ip-addressОбновите системные пакеты.
sudo apt update && sudo apt upgrade -y
2. Установите vmagent
Создайте директорию для vmagent:
sudo mkdir -p /opt/vmagentcd /opt/vmagentЗагрузите последний релиз vmagent. Пример для amd64:
sudo wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.126.0/vmutils-linux-amd64-v1.126.0.tar.gzРаспакуйте архив:
sudo tar -xvzf vmutils-linux-amd64-v1.126.0.tar.gz
3. Установите Node Exporter
Создайте директорию для Node Exporter:
sudo mkdir -p /opt/node_exportercd /opt/node_exporterСкачайте дистрибутив Node Exporter:
sudo wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gzРаспакуйте архив:
sudo tar -xvzf node_exporter-1.9.1.linux-amd64.tar.gzСкопируйте бинарный файл в директорию /opt/node_exporter:
sudo cp node_exporter-1.9.1.linux-amd64/node_exporter ./Создайте службу systemd для Node Exporter с помощью текстового редактора, например vi:
sudo vi /etc/systemd/system/node_exporter.serviceВ файл добавьте данные в виде:
[Unit]Description=Node ExporterAfter=network.target[Service]User=node_exporterGroup=node_exporterType=simpleExecStart=/opt/node_exporter/node_exporter[Install]WantedBy=multi-user.targetСоздайте пользователя для Node Exporter:
sudo useradd -rs /bin/false node_exporterЗапустите службу и проверьте ее состояние:
sudo systemctl daemon-reloadsudo systemctl enable --now node_exportersudo systemctl status node_exporter
4. Настройте конфигурацию vmagent
Создайте файл конфигурации для vmagent:
sudo vi /opt/vmagent/vmagent-config.ymlВ файл добавьте данные в виде:
global:scrape_interval: 15sexternal_labels:monitor: 'vm-agent'scrape_configs:- job_name: 'node-exporter'static_configs:- targets: ['localhost:9100']metrics_path: /metrics- job_name: 'vmagent'static_configs:- targets: ['localhost:8429']metrics_path: /metrics
5. Запустите vmagent и настройте отправку метрик
На этом этапе вы создадите службу vmagent с конфигурацией для отправки метрик в сервис «Мониторинг».
Создайте файл службы vmagent:
sudo vi /etc/systemd/system/vmagent.serviceВ файл добавьте данные в виде:
[Unit]Description=vmagentAfter=network.target[Service]Type=simpleUser=vmagentGroup=vmagentExecStart=/opt/vmagent/vmagent-prod --promscrape.config=/opt/vmagent/vmagent-config.yml --remoteWrite.tmpDataPath=/opt/vmagent/data --remoteWrite.maxDiskUsagePerURL=10737418240 --remoteWrite.url="https://monitoring.api.cloud.ru/v2/project/{project_ID}/prometheus/api/v1/write" --remoteWrite.oauth2.clientID="{clientID}" --remoteWrite.oauth2.clientSecret="{clientSecret}" --remoteWrite.oauth2.tokenUrl=https://auth.iam.sbercloud.ru/auth/system/openid/token --remoteWrite.oauth2.endpointParams='{"grant_type": "access_key"}'Restart=alwaysRestartSec=10[Install]WantedBy=multi-user.targetГде:
{project_ID} — идентификатор проекта, куда будут отправляться метрики. Вы можете скопировать его из URL личного кабинета.
{clientID} — Key ID (логин) сервисного аккаунта с ролью «monaas.write».
{clientSecret} — Key Secret (пароль) сервисного аккаунта.
Создайте пользователя для vmagent:
sudo useradd -rs /bin/false vmagentНазначьте права на директорию:
sudo chown -R vmagent:vmagent /opt/vmagentЗапустите службу vmagent и проверьте ее состояние:
sudo systemctl daemon-reloadsudo systemctl enable --now vmagentsudo systemctl status vmagent
6. Cоздайте дашборд в сервисе «Мониторинг»
В сервисе «Мониторинг» перейдите в раздел Мониторинг → Дашборды → Пользовательские.
Нажмите Создать дашборд. Укажите его название: «Мониторинг ВМ».
Перейдите на страницу дашборда и добавьте виджеты:
Виджет для отслеживания использования CPU:
Тип виджета: Временной ряд.
Название: «Использование CPU».
Описание: «Средняя загрузка CPU в процентах за 5 минут (100% минус время idle)».
Запрос:
100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle", monitor="vm-agent"}[5m]))) * 100Настройка левой оси: категория Проценты (0-100).
Виджет для отслеживания объема доступной оперативной памяти:
Тип виджета: Временной ряд.
Название: «Использование памяти».
Описание: «Объем доступной оперативной памяти».
Запрос:
node_memory_MemAvailable_bytes{monitor="vm-agent"}Настройка левой оси: категория Объем данных.
Виджет для отслеживания свободного места на корневом разделе диска:
Тип виджета: Временной ряд.
Название: «Дисковое пространство».
Описание: «Свободное место на корневом разделе диска (в байтах)».
Запрос:
node_filesystem_avail_bytes {monitor="vm-agent"}Легенда:
device: {{device}}; mountpoint: {{mountpoint}}Настройка левой оси: категория Объем данных.
Виджет для отслеживания сетевого трафика:
Тип виджета: Временной ряд.
Название: «Сетевая активность».
Описание: «Входящий и исходящий сетевой трафик (в байтах)».
Запрос для входящего трафика:
rate(node_network_receive_bytes_total{device!~"lo|veth.*"}[5m])Легенда:
Сетевой трафик (входящий) (б/с)Запрос для исходящего трафика:
rate(node_network_transmit_bytes_total{device!~"lo|veth.*"}[5m])Легенда:
Сетевой трафик (исходящий) (б/с)Настройка левой оси: категория Передача данных.
7. Настройте алерты
В сервисе «Мониторинг» перейдите в раздел Мониторинг → Алерты мониторинга → Правила алертов.
Создайте правила алертов для ключевых метрик:
Правило, срабатывающее при загрузке CPU выше 90% в течение 5 минут:
Название: «Высокая загрузка CPU на vm».
Описание: «Утилизация CPU на VM более 90% за 5 минут».
Запрос:
100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle", monitor="vm-agent"}[5m]))) * 100 > 0.90Важность: Высокая.
Объект: выберите, для какой виртуальной машины создается правило алерта, указав любой из ее параметров:
название;
ID;
название лейбла метрики, в котором содержится название виртуальной машины, в формате {{.label}}.
Ресурс: «CPU».
Правило, срабатывающее при использование памяти более чем на 90%:
Название: «Высокая утилизация RAM на vm».
Описание: «Утилизация RAM на VM более 90% за 5 минут».
Запрос:
(node_memory_MemTotal_bytes{monitor="vm-agent"}-node_memory_MemAvailable_bytes{monitor="vm-agent"})/node_memory_MemTotal_bytes{monitor="vm-agent"} > 0.90Частота проверки: 5 минут.
Важность: Высокая.
Объект: выберите, для какой виртуальной машины создается правило алерта, указав любой из ее параметров:
название;
ID;
название лейбла метрики, в котором содержится название виртуальной машины, в формате {{.label}}.
Ресурс: «RAM».
Правило, срабатывающее при заполненности дискового пространства более чем на 85%:
Название: «Диск заполнен более чем на 85%».
Описание: «Дисковое пространство заполнено более чем на 85%».
Запрос:
(node_filesystem_size_bytes {monitor="vm-agent"}-node_filesystem_avail_bytes {monitor="vm-agent"})/node_filesystem_size_bytes {monitor="vm-agent"} > 0.85Частота проверки: 5 минут.
Важность: Высокая.
Объект: выберите, для какой виртуальной машины создается правило алерта, указав любой из ее параметров:
название;
ID;
название лейбла метрики, в котором содержится название виртуальной машины, в формате {{.label}}.
Ресурс: «DISK».
8. Проверьте доступность метрик в сервисе
Проверьте состояние служб на виртуальной машине:
sudo systemctl status node_exportersudo systemctl status vmagentПроверьте логи vmagent на наличие ошибок:
sudo journalctl -u vmagent.service -fУбедитесь, что метрики поступают в сервис «Мониторинг».
Проверьте, что на виджетах дашборда «Мониторинг ВМ» отображаются показатели.
9. Проверьте уведомления об алертах
Чтобы провести нагрузочное тестирование и проверить, что алерты работают, установите утилиту stress-ng на виртуальную машину:
sudo apt-get install stress-ngСоздайте нагрузку на CPU для тестирования оповещений:
stress-ng --cpu 4 --timeout 300sПроверьте, что на созданном дашборде отображается высокая утилизация CPU.
Проверьте, что срабатывает алерт о высокой загрузке CPU.
10. Оптимизируйте сбор метрик
Для оптимизации производительности vmagent:
Настройте фильтрацию метрик: используйте relabel_configs, чтобы отфильтровать ненужные метрики.
Настройте часоту сбора метрик: задайте подходящее значение scrape_interval.
Оптимизируйте параметры буферизации для нестабильных сетей. Пример оптимизированной конфигурации vmagent, расположенной в файле /opt/vmagent/vmagent-config.yml:
global:scrape_interval: 30sscrape_timeout: 25sscrape_configs:- job_name: 'node-exporter'static_configs:- targets: ['localhost:9100']metrics_path: /metricsrelabel_configs:- source_labels: [__name__]regex: '(node_cpu_seconds_total|node_memory_MemAvailable_bytes| node_memory_MemTotal_bytes|node_disk_io_time_seconds_total| node_network_transmit_bytes_total|node_network_receive_bytes_total| node_filesystem_size_bytes| node_filesystem_avail_bytes|)'action: keepВ сервис «Мониторинг» будут отправляться только метрики, указанные в regex.
11. Настройте дополнительные экспортеры
Для расширенного мониторинга установите дополнительные экспортеры:
для мониторинга Docker — cadvisor;
для мониторинга веб-сервера — nginx-exporter или apache-exporter;
для мониторинга баз данных — mysqld-exporter.
Результат
Вы запустили vmagent для мониторинга виртуальной машины на базе Ubuntu, настроили сбор и отправку метрик в сервис «Мониторинг», создали дашборд для отслеживания показателей и настроили оповещения по основным метрикам.
- Перед началом работы
- 1. Подготовьте виртуальную машину
- 2. Установите vmagent
- 3. Установите Node Exporter
- 4. Настройте конфигурацию vmagent
- 5. Запустите vmagent и настройте отправку метрик
- 6. Cоздайте дашборд в сервисе «Мониторинг»
- 7. Настройте алерты
- 8. Проверьте доступность метрик в сервисе
- 9. Проверьте уведомления об алертах
- 10. Оптимизируйте сбор метрик
- 11. Настройте дополнительные экспортеры
- Результат