Плагин VictoriaMetrics
Мониторинг базы данных временных рядов VictoriaMetrics с подробными метриками по статистике хранилища, производительности запросов, частоте приёма данных и использованию ресурсов.
Обзор
Плагин VictoriaMetrics собирает подробные метрики из API VictoriaMetrics, в том числе:
- Статистика хранилища — активные ряды, всего сэмплов, размер хранилища
- Метрики приёма данных — принятые строки, частота приёма, точек данных в секунду
- Производительность запросов — частота запросов, длительность запросов, медленные запросы
- Статистика кеша — кеш индексов, кеш данных, статистика слияний
- Использование ресурсов — использование памяти, использование диска, время CPU
- Метрики хранения — период хранения данных, очистка старых данных
Требования
Версия VictoriaMetrics
- Минимум: VictoriaMetrics 1.80
- Рекомендуется: VictoriaMetrics 1.95 или новее
- Протестировано с: VictoriaMetrics 1.85, 1.90, 1.95, 1.96
Зависимости Python
pip install requests>=2.28.0
Устанавливается автоматически при использовании PLUGINS=victoriametrics во время установки агента.
Доступ к VictoriaMetrics
Агенту нужен HTTP-доступ к API VictoriaMetrics (порт по умолчанию 8428).
Конфигурация
Базовая конфигурация
plugins:
victoriametrics:
enabled: true
host: localhost
port: 8428
С аутентификацией
plugins:
victoriametrics:
enabled: true
host: localhost
port: 8428
username: admin
password: password
С HTTPS
plugins:
victoriametrics:
enabled: true
host: victoria.example.com
port: 8428
use_ssl: true
verify_ssl: true
Все параметры конфигурации
plugins:
victoriametrics:
enabled: true # Enable/disable plugin
host: localhost # VictoriaMetrics host
port: 8428 # VictoriaMetrics port
username: "" # HTTP auth username (optional)
password: "" # HTTP auth password (optional)
use_ssl: false # Use HTTPS
verify_ssl: true # Verify SSL certificates
timeout: 10 # Request timeout (seconds)
Переменные окружения
Конфигурацию можно переопределить с помощью переменных окружения:
export VICTORIAMETRICS_HOST="localhost"
export VICTORIAMETRICS_PORT="8428"
Настройка VictoriaMetrics
Установка
Установка из бинарного файла:
# Download latest release
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.95.1/victoria-metrics-linux-amd64-v1.95.1.tar.gz
# Extract
tar -xzf victoria-metrics-linux-amd64-v1.95.1.tar.gz
# Run VictoriaMetrics
./victoria-metrics-prod
Docker:
docker run -d \
--name victoriametrics \
-p 8428:8428 \
-v /var/lib/victoria-metrics:/victoria-metrics-data \
victoriametrics/victoria-metrics:latest
Как сервис systemd:
sudo nano /etc/systemd/system/victoriametrics.service
[Unit]
Description=VictoriaMetrics
After=network.target
[Service]
Type=simple
User=victoriametrics
WorkingDirectory=/var/lib/victoriametrics
ExecStart=/usr/local/bin/victoria-metrics-prod \
-storageDataPath=/var/lib/victoriametrics \
-httpListenAddr=:8428 \
-retentionPeriod=12
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start victoriametrics
sudo systemctl enable victoriametrics
Собираемые метрики
Метрики приёма данных
| Метрика | Описание | Единица | Тип |
|---|---|---|---|
rows_inserted_total |
Всего вставленных строк | Количество | Counter |
rows_dropped_total |
Всего отброшенных строк | Количество | Counter |
slow_inserts_total |
Всего медленных вставок строк | Количество | Counter |
ingestion_rate |
Частота приёма (рассчитывается) | Строк/с | Gauge |
Метрики хранилища
| Метрика | Описание | Единица | Тип |
|---|---|---|---|
active_series |
Число активных временных рядов | Количество | Gauge |
storage_size_gb |
Размер хранилища на диске (indexdb) | ГБ | Gauge |
free_disk_gb |
Свободное место на диске | ГБ | Gauge |
Метрики ресурсов
| Метрика | Описание | Единица | Тип |
|---|---|---|---|
memory_usage_mb |
Резидентная память процесса | МБ | Gauge |
Метрики HTTP
| Метрика | Описание | Единица | Тип |
|---|---|---|---|
http_requests_total |
Всего HTTP-запросов | Количество | Counter |
Метрики на дашборде
Дашборд StatusRadar отображает:
Карточка обзора
- Active Series — текущее число временных рядов
- Storage Size — общий размер данных на диске
- Ingestion Rate — строк в секунду
- Query Rate — запросов в секунду
График использования хранилища
- Размер данных во времени
- Размер индекса
- Общий рост хранилища
График частоты приёма данных
- Вставлено строк в секунду
- Число активных временных рядов
График производительности запросов
- Частота запросов
- Средняя длительность запросов
- Медленные запросы
График производительности кеша
- Hit rate кеша
- Размер кеша
- Записи кеша
График использования памяти
- Использование памяти во времени
- Темп роста памяти
Установка
Быстрая установка
PLUGINS='victoriametrics' \
TOKEN='your-agent-token' \
bash -c "$(curl -sL https://statusradar.dev/install-agent.sh)"
Установка на существующий агент
-
Настройте агент:
sudo nano /opt/statusradar/config/agent.yamlДобавьте:
plugins: victoriametrics: enabled: true host: localhost port: 8428 -
Перезапустите агент:
sudo systemctl restart statusradar-agent -
Проверьте:
sudo journalctl -u statusradar-agent -n 50 --no-pager | grep victoriametricsОжидается:
INFO: Plugin victoriametrics: Metrics collected successfully INFO: Plugin victoriametrics: 12345 active series, 1.2 GB storage
Тестирование
Ручной тест плагина
cd /opt/statusradar
python3 plugins/victoriametrics_plugin.py
Ожидаемый вывод:
Plugin: victoriametrics
Enabled: True
Available: True
Collecting metrics...
{
"vm_rows": 123456789,
"vm_active_time_series": 12345,
"vm_data_size_bytes": 1288490188,
"vm_rows_per_second": 1250.5,
"vm_requests_total": 45678,
"vm_cache_hits_total": 89012,
"vm_cache_misses_total": 3456,
"vm_memory_bytes": 536870912
}
Проверка API VictoriaMetrics
# Metrics endpoint
curl http://localhost:8428/metrics
# Query API
curl 'http://localhost:8428/api/v1/query?query=up'
# Label values
curl 'http://localhost:8428/api/v1/label/__name__/values'
Устранение неполадок
Плагин не собирает метрики
Проверка 1: Запущен ли VictoriaMetrics?
sudo systemctl status victoriametrics
# Or check process:
ps aux | grep victoria-metrics
Проверка 2: Может ли агент получить доступ к VictoriaMetrics?
curl http://localhost:8428/metrics
Проверка 3: Проверьте логи агента
sudo journalctl -u statusradar-agent -n 100 --no-pager | grep victoriametrics
Распространённые ошибки
"Connection refused"
Ошибка:
ERROR: Plugin victoriametrics: Connection refused
Причины:
- VictoriaMetrics не запущен
- Неверный host/port
- Файрвол блокирует соединение
Решение:
# Check VictoriaMetrics is running
ps aux | grep victoria-metrics
# Check port
sudo netstat -tlnp | grep 8428
# Test connection
curl http://localhost:8428/metrics
"Authentication required"
Ошибка:
ERROR: Plugin victoriametrics: 401 Unauthorized
Решение:
Добавьте аутентификацию в конфигурацию:
plugins:
victoriametrics:
username: admin
password: your-password
Влияние на производительность
На VictoriaMetrics
Минимальное влияние:
- Эндпоинт метрик возвращает предварительно рассчитанную статистику
- Нет накладных расходов на выполнение запросов
- Время отклика: < 50 мс
Бенчмарк:
- Накладные расходы: < 0.1% CPU
- Нет измеримой деградации производительности
На агент
Использование ресурсов:
- Память: +10 МБ
- CPU: +2% во время сбора
- Сеть: +2 КБ за сбор
Время сбора: < 0.3 секунды
Сценарии использования
1. Мониторинг роста хранилища
Отслеживайте:
- Темп роста размера данных
- Размер индекса
- Число активных временных рядов
Оповещение при:
- Быстром росте хранилища
- Хранилище, приближающемся к лимиту диска
- Избыточной кардинальности временных рядов
2. Мониторинг частоты приёма данных
Отслеживайте:
- Строк в секунду
- Всплески приёма
- Медленные вставки
Оповещение при:
- Падении частоты приёма (потеря данных)
- Всплеске приёма (DDoS/баг)
3. Производительность запросов
Отслеживайте:
- Частоту запросов
- Длительность запросов
- Медленные запросы
Оптимизируйте:
- Шаблоны запросов
- Использование индексов
- Конфигурацию кеша
4. Использование ресурсов
Отслеживайте:
- Использование памяти
- Использование диска
- Использование CPU
Оповещение при:
- Памяти > 80%
- Диске > 90%
- Длительно высоком CPU
Лучшие практики
1. Установите период хранения
# Retain data for 12 months
./victoria-metrics-prod -retentionPeriod=12
Рассчитайте хранение:
Disk needed = (Ingestion rate × Average sample size × Retention seconds)
Example:
10k samples/sec × 1 byte × 31536000 sec (1 year) = 315 GB
2. Отслеживайте кардинальность
Высокая кардинальность = проблемы с памятью
Проверьте активные ряды:
curl 'http://localhost:8428/api/v1/query?query=vm_active_time_series'
Снизьте кардинальность:
- Избегайте меток высокой кардинальности (ID, временные метки)
- Используйте релейблинг для отбрасывания ненужных меток
- Агрегируйте на источнике
3. Оптимизируйте хранилище
Включите дедупликацию:
./victoria-metrics-prod -dedup.minScrapeInterval=60s
Установите лимит памяти:
./victoria-metrics-prod -memory.allowedPercent=80
4. Настройте кеш
# Index cache
./victoria-metrics-prod -storage.cacheSizeIndexDBDataBlocks=8GB
# Storage cache
./victoria-metrics-prod -storage.cacheSizeStorageTSID=2GB
5. Отслеживайте производительность слияний
# Check merge metrics
curl http://localhost:8428/metrics | grep vm_merge
Медленные слияния указывают на:
- Недостаточный дисковый ввод-вывод
- Слишком много мелких частей
- Давление на память
Тонкая настройка производительности VictoriaMetrics
Оптимизация памяти
# Limit memory usage
./victoria-metrics-prod \
-memory.allowedPercent=80 \
-search.maxMemoryPerQuery=2GB
Оптимизация хранилища
# Storage path
./victoria-metrics-prod \
-storageDataPath=/mnt/fast-ssd/victoria-metrics
Используйте SSD для лучшей производительности.
Оптимизация запросов
# Limit concurrent queries
./victoria-metrics-prod \
-search.maxConcurrentRequests=16 \
-search.maxQueueDuration=30s
Расширенная конфигурация
Мониторинг кластера
Мониторинг нескольких экземпляров VictoriaMetrics:
plugins:
victoria_node1:
enabled: true
host: vm-node1.internal
port: 8428
victoria_node2:
enabled: true
host: vm-node2.internal
port: 8428
Docker-контейнер
Мониторинг VictoriaMetrics в Docker:
plugins:
victoriametrics:
enabled: true
host: victoriametrics-container
port: 8428
Примеры конфигураций
Базовая production-конфигурация
plugins:
victoriametrics:
enabled: true
host: localhost
port: 8428
С аутентификацией
plugins:
victoriametrics:
enabled: true
host: victoria.internal
port: 8428
username: admin
password: ${VICTORIA_PASSWORD}
Высокодоступный кластер
plugins:
victoria_storage1:
enabled: true
host: vm-storage1.internal
port: 8428
victoria_storage2:
enabled: true
host: vm-storage2.internal
port: 8428
Ограничения
Текущие ограничения
- Нет кардинальности по отдельным метрикам — только общее число рядов
- Нет деталей медленных запросов — лог запросов не анализируется
- Нет статуса резервных копий — метрики резервного копирования не собираются
Масштабируемость
Протестировано с:
- 10М+ активных временных рядов
- 1М+ сэмплов в секунду
- Хранилищем размером в ТБ
Производительность:
- Отклик эндпоинта метрик постоянен независимо от размера данных
Чек-лист мониторинга
Критично:
- Хранилище, приближающееся к лимиту диска
- Взрывной рост кардинальности
- Падение частоты приёма данных
- Память > 90%
Важно: 5. Рост числа медленных запросов 6. Backlog слияний 7. Низкий hit rate кеша
Пороги оповещений
vm_data_size_percent: > 85
vm_active_time_series: > 1000000
vm_rows_per_second: < baseline × 0.5
vm_memory_percent: > 85
cache_hit_rate: < 80
Устранение проблем производительности
Высокое использование памяти
Симптом: Память > 80%
Решения:
- Уменьшите размеры кеша
- Снизьте
-memory.allowedPercent - Уменьшите конкурентность запросов
- Добавьте больше RAM
Медленные запросы
Симптом: Высокая длительность запросов
Решения:
- Оптимизируйте шаблоны запросов
- Уменьшите временной диапазон
- Увеличьте размер кеша
- Добавьте больше ядер CPU
Рост хранилища
Симптом: Быстрый рост использования диска
Решения:
- Уменьшите период хранения
- Включите дедупликацию
- Снизьте кардинальность
- Агрегируйте на источнике
Следующие шаги
- Обзор
- Требования
- Версия VictoriaMetrics
- Зависимости Python
- Доступ к VictoriaMetrics
- Конфигурация
- Базовая конфигурация
- С аутентификацией
- С HTTPS
- Все параметры конфигурации
- Переменные окружения
- Настройка VictoriaMetrics
- Установка
- Собираемые метрики
- Метрики приёма данных
- Метрики хранилища
- Метрики ресурсов
- Метрики HTTP
- Метрики на дашборде
- Карточка обзора
- График использования хранилища
- График частоты приёма данных
- График производительности запросов
- График производительности кеша
- График использования памяти
- Установка
- Быстрая установка
- Установка на существующий агент
- Тестирование
- Ручной тест плагина
- Проверка API VictoriaMetrics
- Устранение неполадок
- Плагин не собирает метрики
- Распространённые ошибки
- Влияние на производительность
- На VictoriaMetrics
- На агент
- Сценарии использования
- 1. Мониторинг роста хранилища
- 2. Мониторинг частоты приёма данных
- 3. Производительность запросов
- 4. Использование ресурсов
- Лучшие практики
- 1. Установите период хранения
- 2. Отслеживайте кардинальность
- 3. Оптимизируйте хранилище
- 4. Настройте кеш
- 5. Отслеживайте производительность слияний
- Тонкая настройка производительности VictoriaMetrics
- Оптимизация памяти
- Оптимизация хранилища
- Оптимизация запросов
- Расширенная конфигурация
- Мониторинг кластера
- Docker-контейнер
- Примеры конфигураций
- Базовая production-конфигурация
- С аутентификацией
- Высокодоступный кластер
- Ограничения
- Текущие ограничения
- Масштабируемость
- Чек-лист мониторинга
- Пороги оповещений
- Устранение проблем производительности
- Высокое использование памяти
- Медленные запросы
- Рост хранилища
- Следующие шаги