VictoriaMetrics Operator — оператор для Kubernetes, для автоматизации развертывания и управления компонентами мониторинга на базе VictoriaMetrics. Он позволяет создавать и настраивать отдельные сервисы для сбора, хранения и визуализации метрик.
Оператор использует CRD для управления инфраструктурой мониторинга. Основные используемые компоненты:
- VMSingle — компонент, отвечающий за хранение метрик. Это одиночный инстанс VictoriaMetrics. Она удобна для простых проектов и малонагруженных кластеров.
- VMCluster — масштабируемый вариант, включающий реплику хранения и прокси. Подходит для продакшена и больших объемов данных.
- VMAgent — компонент, который собирает метрики с подов, сервисов и других источников. Он отправляет их в VMSingle или VMCluster по remoteWrite.
- VMPodScrape — объект, описывающий, какие поды и по каким адресам и портам нужно опрашивать для получения метрик.
Полная документация по VictoriaMetrics Operator доступна на официальном сайте дополнения.
Установка
Для установки VictoriaMetrics Operator перейдите в раздел «Дополнения» в панели управления кластером. Найдите «VictoriaMetrics Operator» в списке и нажмите на него.

В открывшемся окне можно при необходимости изменить параметры установки — например, задать собственный неймспейс, изменить версии компонентов или отключить ненужные CRD. После настройки нажмите кнопку «Установить».
После установки в кластере появится неймспейс victoria-metrics-operator и все необходимые CRD, включая VMSingle, VMAgent, VMPodScrape и другие. Увидеть их вы можете, выполнив:
Пример использования
В примере мы:
- Развернем VMSingle — хранилище метрик
- Настроим VMAgent, чтобы собирать метрики из источников
- Запустим под с Nginx и
nginx-prometheus-exporter, чтобы передавать метрики - Создадим VMPodScrape, чтобы VMAgent собирал эти метрики
- Настроим Ingress для доступа к веб-интерфейсу VictoriaMetrics
Помимо дополнения VictoriaMetrics Operator, для примера потребуется установленное дополнение Nginx Ingress.
Создадим компонент VMSingle, который будет принимать и хранить метрики. В примере мы зададим минимальный набор ресурсов и храним данные только в памяти в течение 1 дня. Создайте файл vmsingle.yaml со следующим содержимым:
Если вы хотите хранить метрики дольше, стоит рассмотреть использование сетевых дисков.
Теперь создадим компонент VMAgent, который будет собирать метрики и передавать их в VMSingle. Создайте файл vmagent.yaml:
Развернем под с Nginx и экспортером метрик. В качестве источника метрик используется nginx-prometheus-exporter, который будет читать данные с эндпоинта /stub_status. Создайте файл nginx.yaml:
Чтобы указать VMAgent, с каких подов собирать метрики, создадим объект VMPodScrape. Он выберет все поды с меткой app: nginx и будет опрашивать порт metrics по пути /metrics. Создайте файл vmpodscrape.yaml:
Прежде чем создавать Ingress, убедитесь, что в кластере есть сервис с типом LoadBalancer, он необходим для доступа к UI извне. Посмотреть текущие балансировщики можно командой:
Если балансировщик отсутствует, создайте его:
После создания получите внешний адрес сервиса:
Укажите его как A-запись для домена, по которому будет доступен UI VictoriaMetrics.
Наконец, создадим Ingress, чтобы получить доступ к веб-интерфейсу VictoriaMetrics. Укажите в хосте нужное вам доменное имя. Создайте файл vm-ui-ingress.yaml:
Примените все манифесты, созданные ранее:
После этого перейдите по адресу, указанному в манифесте vm-ui-ingress.yaml. В нашем примере это http://vm.example.com. В интерфейсе выберите пункт «vmui», чтобы открыть веб-интерфейс VictoriaMetrics.
В поле «query» введите имя метрики, например up, и нажмите «Execute Query». Если все настроено правильно, вы увидите значение метрик, которые собираются с пода Nginx.
