Как работать с VictoriaMetrics в DevOps?

«Как работать с VictoriaMetrics в DevOps?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

VictoriaMetrics — это высокопроизводительная TSDB, которую мы используем как замену или дополнение к Prometheus для хранения метрик в масштабе.

1. Развертывание и масштабирование:

  • Для продакшена разворачиваем кластерную версию (vminsert, vmselect, vmstorage) в Kubernetes.
  • Настраиваем StatefulSet для компонентов vmstorage с Persistent Volumes.
  • Используем сервис vmagent для гибкого сбора метрик вместо node_exporter.

2. Конфигурация сбора метрик:

# Конфигурация vmagent для сбора метрик с Kubernetes
scrape_configs:
  - job_name: 'kubernetes-pods'
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
        action: keep
        regex: true

3. Интеграция с Grafana и алертинг:

  • Добавляем VictoriaMetrics как источник данных в Grafana (тип Prometheus).
  • Используем MetricsQL для более эффективных запросов:
    # Вместо PromQL `rate(http_requests_total[5m])`
    rate(http_requests_total[5m])
    # Агрегация по кластеру с автоматическим устранением "дыр"
    sum(rate(http_requests_total[5m])) by (cluster) keep_last_value
  • Настраиваем VMAlerter или интегрируемся с Alertmanager.

4. Резервное копирование и миграция:

  • Используем vmbackup/vmrestore для инкрементальных бэкапов в S3-совместимое хранилище.
  • Мигрируем исторические данные из Prometheus с помощью vmctl.

5. Оптимизация и мониторинг:

  • Настраиваем retention policies (например, 30 дней raw данных, 1 год агрегированных).
  • Мониторим собственное состояние VictoriaMetrics (использование диска, запросы в секунду).
  • Используем downsampling для долгосрочного хранения метрик.