Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

VictoriaMetrics Operator

VictoriaMetrics Operator — оператор для Kubernetes, для автоматизации развертывания и управления компонентами мониторинга на базе VictoriaMetrics. Он позволяет создавать и настраивать отдельные сервисы для сбора, хранения и визуализации метрик.

Оператор использует CRD для управления инфраструктурой мониторинга. Основные используемые компоненты:

  • VMSingle — компонент, отвечающий за хранение метрик. Это одиночный инстанс VictoriaMetrics. Она удобна для простых проектов и малонагруженных кластеров.
  • VMCluster — масштабируемый вариант, включающий реплику хранения и прокси. Подходит для продакшена и больших объемов данных.
  • VMAgent — компонент, который собирает метрики с подов, сервисов и других источников. Он отправляет их в VMSingle или VMCluster по remoteWrite.
  • VMPodScrape — объект, описывающий, какие поды и по каким адресам и портам нужно опрашивать для получения метрик.

Полная документация по VictoriaMetrics Operator доступна на официальном сайте дополнения.

Установка

Для установки VictoriaMetrics Operator перейдите в раздел «Дополнения» в панели управления кластером. Найдите «VictoriaMetrics Operator» в списке и нажмите на него.

Scr 20250704 Okhr

В открывшемся окне можно при необходимости изменить параметры установки — например, задать собственный неймспейс, изменить версии компонентов или отключить ненужные CRD. После настройки нажмите кнопку «Установить».

После установки в кластере появится неймспейс victoria-metrics-operator и все необходимые CRD, включая VMSingle, VMAgent, VMPodScrape и другие. Увидеть их вы можете, выполнив:

    
kubectl get crd | grep 'vm'

Пример использования

В примере мы:

  • Развернем VMSingle — хранилище метрик
  • Настроим VMAgent, чтобы собирать метрики из источников
  • Запустим под с Nginx и nginx-prometheus-exporter, чтобы передавать метрики
  • Создадим VMPodScrape, чтобы VMAgent собирал эти метрики
  • Настроим Ingress для доступа к веб-интерфейсу VictoriaMetrics

Помимо дополнения VictoriaMetrics Operator, для примера потребуется установленное дополнение Nginx Ingress.

Создадим компонент VMSingle, который будет принимать и хранить метрики. В примере мы зададим минимальный набор ресурсов и храним данные только в памяти в течение 1 дня. Создайте файл vmsingle.yaml со следующим содержимым:

    
apiVersion: operator.victoriametrics.com/v1beta1 kind: VMSingle metadata: name: vm-single namespace: victoria-metrics-operator spec: retentionPeriod: "1d" resources: requests: cpu: 100m memory: 256Mi

Если вы хотите хранить метрики дольше, стоит рассмотреть использование сетевых дисков.

Теперь создадим компонент VMAgent, который будет собирать метрики и передавать их в VMSingle. Создайте файл vmagent.yaml:

    
apiVersion: operator.victoriametrics.com/v1beta1 kind: VMAgent metadata: name: vmagent namespace: victoria-metrics-operator spec: remoteWrite: - url: http://vmsingle-vm-single.victoria-metrics-operator:8428/api/v1/write scrapeInterval: 30s selectAllByDefault: true port: "8429"

Развернем под с Nginx и экспортером метрик. В качестве источника метрик используется nginx-prometheus-exporter, который будет читать данные с эндпоинта /stub_status. Создайте файл nginx.yaml:

    
apiVersion: apps/v1 kind: Deployment metadata: name: nginx namespace: victoria-metrics-operator spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80 name: http volumeMounts: - name: nginx-conf mountPath: /etc/nginx/conf.d/default.conf subPath: default.conf - name: exporter image: nginx/nginx-prometheus-exporter:1.1.0 args: - "-nginx.scrape-uri=http://localhost/stub_status" ports: - containerPort: 9113 name: metrics volumes: - name: nginx-conf configMap: name: nginx-conf --- apiVersion: v1 kind: ConfigMap metadata: name: nginx-conf namespace: victoria-metrics-operator data: default.conf: | server { listen 80; location / { return 200 'OK'; } location /stub_status { stub_status; allow 127.0.0.1; deny all; } } --- apiVersion: v1 kind: Service metadata: name: nginx namespace: victoria-metrics-operator spec: selector: app: nginx ports: - name: http port: 80 targetPort: http - name: metrics port: 9113 targetPort: metrics

Чтобы указать VMAgent, с каких подов собирать метрики, создадим объект VMPodScrape. Он выберет все поды с меткой app: nginx и будет опрашивать порт metrics по пути /metrics. Создайте файл vmpodscrape.yaml:

    
apiVersion: operator.victoriametrics.com/v1beta1 kind: VMPodScrape metadata: name: nginx-scrape namespace: victoria-metrics-operator spec: selector: matchLabels: app: nginx podMetricsEndpoints: - port: metrics path: /metrics interval: 30s

Прежде чем создавать Ingress, убедитесь, что в кластере есть сервис с типом LoadBalancer, он необходим для доступа к UI извне. Посмотреть текущие балансировщики можно командой:

    
kubectl get svc -n ingress-nginx

Если балансировщик отсутствует, создайте его:

    
apiVersion: v1 kind: Service metadata: name: nginx-loadbalancer namespace: ingress-nginx spec: selector: app.kubernetes.io/name: ingress-nginx ports: - port: 80 targetPort: 80 appProtocol: k8s.timeweb.cloud/proto-http type: LoadBalancer

После создания получите внешний адрес сервиса:

    
kubectl get svc -n ingress-nginx nginx-loadbalancer

Укажите его как A-запись для домена, по которому будет доступен UI VictoriaMetrics.

Наконец, создадим Ingress, чтобы получить доступ к веб-интерфейсу VictoriaMetrics. Укажите в хосте нужное вам доменное имя. Создайте файл vm-ui-ingress.yaml:

    
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: vm-ui namespace: victoria-metrics-operator spec: ingressClassName: nginx rules: - host: vm.example.com http: paths: - path: / pathType: Prefix backend: service: name: vmsingle-vm-single port: number: 8428

Примените все манифесты, созданные ранее:

    
kubectl apply -f vmsingle.yaml kubectl apply -f vmagent.yaml kubectl apply -f nginx.yaml kubectl apply -f vmpodscrape.yaml kubectl apply -f vm-ui-ingress.yaml

После этого перейдите по адресу, указанному в манифесте vm-ui-ingress.yaml. В нашем примере это http://vm.example.com. В интерфейсе выберите пункт «vmui», чтобы открыть веб-интерфейс VictoriaMetrics.

В поле «query» введите имя метрики, например up, и нажмите «Execute Query». Если все настроено правильно, вы увидите значение метрик, которые собираются с пода Nginx.

Scr 20250703 Lxom

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев