Установка и использование VictoriaMetrics на Linux

Обновлено и опубликовано Опубликовано:

Используемые термины: VictoriaMetrics, Prometheus, Grafana.

В рамках данной инструкции мы рассмотрим установку и настройку автозапуска VictoriaMetrics, а также ee интеграцию с Prometheus и визуализацию в Grafana. Предполагается, что последние две уже установлены и настроены. Ссылки на инструкции, как это сделать, можно найти в конце данного руководства.

Предварительная настройка

1. Установка пакетов

Убедимся в наличие некоторых пакетов:

  • tar — для распаковки архива с бинарником.
  • wget — загрузка архива.
  • curl — выполнение запросов для тестирования системы.

В зависимости от дистрибутива Linux, установка будет немного различаться.

а) для систем на базе DEB (Astra Linux / Debian / Ubuntu):

apt install tar wget curl

б) для систем на базе RPM (РЕД ОС / Rocky Linux / CentOS):

yum install tar wget curl

2. Брандмауэр

По умолчанию, VictoriaMetrics слушает запросы на порту 8428. Чтобы взаимодействовать с ней по сети, нам нужно открыть соответствующий TCP-порт. Наши действия будут отличать в зависимости от используемой утилиты управления брандмауэром.

а) Iptables (как правило, для систем на базе DEB):

iptables -I INPUT -p tcp --dport 8428 -j ACCEPT

Для сохранения правла используем iptables-persistent:

apt install iptables-persistent

netfilter-persistent save

б) Firewalld (как правило, для систем на базе RPM):

firewall-cmd --permanent --add-port=8428/tcp

firewall-cmd --reload

Установка и запуск VictoriaMetrics

Мы рассмотрим простой вариант установки без кластера. На официальной странице в GitHub можно найти разные варианты развертывания VictoriaMetrics — в докере, сборка своих пакетов установки, получение бинарника из исходников golang. Мы же скачаем уже готовый бинарник и настроим его автозапуск в качестве юнита systemd.

Загрузка бинарника и изучение параметром его запуска

Переходим на страницу с последним релизом приложения. Копируем ссылку на бинарник для нашей операционной системы (в нашем случае, Linux):

На нашем сервере, загружаем архив, ссылку на который мы скопировали:

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.85.0/victoria-metrics-linux-amd64-v1.85.0.tar.gz

Распакуем скачанный архив:

tar zxf victoria-metrics-linux-amd64-*.tar.gz -C /usr/local/bin/

Можно запустить команду для изучения всех параметров запуска приложения:

victoria-metrics-prod -help | less

Как видим, их не мало. Мы же задействуем:

  • storageDataPath — путь до каталога хранения данных.
  • retentionPeriod — период в месяцах, после которого данные будут удаляться из базы.

Переходим к запуску приложения.

Создание и настройка юнита systemd

В нашем примере мы создадим автозапуск со следующими нюансами:

  1. Запуск сервиса будет выполняться от отдельного пользователя для обеспечения максимальной безопасности.
  2. Хранить данные будем в каталоге /var/lib/victoriametrics.

Создаем служебного пользователя victoriametrics:

useradd -r -c 'VictoriaMetrics TSDB Service' victoriametrics

Также создаем каталоги для хранения данных и идентификатора процесса:

mkdir -p /var/lib/victoriametrics /run/victoriametrics

Зададим в качестве владельца для созданных каталогов нашего нового пользователя:

chown victoriametrics:victoriametrics /var/lib/victoriametrics /run/victoriametrics

Теперь создадим файл юнита:

vi /etc/systemd/system/victoriametrics.service

[Unit]
Description=VictoriaMetrics
After=network.target

[Service]
Type=simple
User=victoriametrics
PIDFile=/run/victoriametrics/victoriametrics.pid
ExecStart=/usr/local/bin/victoria-metrics-prod -storageDataPath /var/lib/victoriametrics -retentionPeriod 12
ExecStop=/bin/kill -s SIGTERM $MAINPID
StartLimitBurst=5
StartLimitInterval=0
Restart=on-failure
RestartSec=1

[Install]
WantedBy=multi-user.target

* в данном примере мы, как и говорили выше, будем хранить файлы в каталоге /var/lib/victoriametrics. Срок хранения данных — 1 год.

Перечитываем конфигурацию systemd:

systemctl daemon-reload

Разрешаем запуск юнита и стартуем его:

systemctl enable victoriametrics --now

Проверим состояние сервиса:

systemctl status victoriametrics

По умолчанию VictoriaMetrics слушает на порту 8428. Мы можем сделать запрос с помощью curl:

curl 127.0.0.1:8428

Мы должны увидеть страницу с полезными ссылками:

<h2>Single-node VictoriaMetrics</h2></br>See docs at <a href='https://docs.victoriametrics.com/'>https://docs.victoriametrics.com/</a></br>Useful endpoints:</br><a href="vmui">vmui</a> - Web UI<br/><a href="targets">targets</a> - status for discovered active targets<br/><a href="service-discovery">service-discovery</a> - labels before and after relabeling for discovered targets<br/><a href="metric-relabel-debug">metric-relabel-debug</a> - debug metric relabeling<br/><a href="api/v1/targets">api/v1/targets</a> - advanced information about discovered targets in JSON format<br/><a href="config">config</a> - -promscrape.config contents<br/><a href="metrics">metrics</a> - available service metrics<br/><a href="flags">flags</a> - command-line flags<br/><a href="api/v1/status/tsdb">api/v1/status/tsdb</a> - tsdb status page<br/><a href="api/v1/status/top_queries">api/v1/status/top_queries</a> - top queries<br/><a href="api/v1/status/active_queries">api/v1/status/active_queries</a> - active queries<br/>

VictoriaMetrics установлен и работает.

Хранение метрик Prometheus в VictoriaMetrics

Прежде чем начать настройку, с сервера Prometheus проверим доступность VictoriaMetrics:

curl 192.168.0.15:8428

* где 192.168.0.15 — адрес сервера VictoriaMetrics.

Мы должны получить страницу со ссылками, которую видели при проверке сервиса после его установки.

Теперь откроем конфигурационный файл Prometheus:

vi /etc/prometheus/prometheus.yml

Добавляем в global:

global:
  external_labels:
    server_name: prometheus01

* опция external_labels позволяет навесить тег, с помощью которого мы будем понимать, что конкретные метрики пришли с конкретного сервера Prometheus.

И добавляем опцию:

remote_write:
  - url: http://192.168.0.15:8428/api/v1/write
    queue_config:
      max_samples_per_send: 10000
      capacity: 20000
      max_shards: 30

* где:

  • url — адрес сервера VictoriaMetrics, куда будут дублироваться метрики с их значениями.
  • max_samples_per_send — максимальное количество метрик, который могут быть отправлены за один раз.
  • capacity — определяет, сколько семплов ставится в очередь в памяти на каждый сегмент перед блокировкой чтения из WAL. После того, как WAL заблокирован, сэмплы не могут быть добавлены ни к каким осколкам, и вся пропускная способность прекратится.
  • max_shards — максимальное количество сегментов, которые Prometheus будет использовать для каждой удаленной очереди записи.

И перезапустим прометеус:

systemctl restart prometheus

При желании, мы можем зайти на веб-интерфейс VictoriaMetrics по адресу http://192.168.0.15:8428/vmui/, где 192.168.0.15 — адрес нашего сервера. В поле Query 1 можно ввести любой запрос PromQL, например:

node_memory_MemTotal_bytes{server_name="prometheus01"}

* где server_name="prometheus01" — тег и его значение, которые мы указали в настройках prometheus. 

Данный запрос должен нам вернуть значения. Это значит, что данные попадают из Prometheus в VictoriaMetrics.

Настройка Grafana

Мы рассмотрим добавление VictoriaMetrics в качестве источника данных, а также отображение собственных метрик VictoriaMetrics в Grafana.

Добавление датасорса

Заходим в веб-интерфейс графаны. Переходим в пункт Configuration - Data sources:

Переходим к настройкам источников данных

Добавляем новый источник данных:

Кликаем по кнопке для добавления нового источника

Выбираем Prometheus как тип источника:

Выбираем прометеус в качестве источника данных Grafana

Указываем имя источника и прописываем URL адрес, по которому доступен сервис VictoriaMetrics:

Вводим адрес сервера VictoriaMetrics, откуда Grafana будет брать данные

Сохраняем настройки.

Теперь можно использовать сохраненный источник, как будто, это источник от Prometheus.

Визуализация метрик самой VictoriaMetrics

Собственные метрики VictoriaMetrics доступны по адресу http://<адрес victoriametrics>:8428/metrics. Нам нужно завести в качестве exportera этот адрес на Prometheus, который передает данные обратно в VictoriaMetrics. После можно будет визуализировать информацию, используя добавленный выше датасорс.

Открываем конфигурационный файл Prometheus:

vi /etc/prometheus/prometheus.yml

Добавим таргет:

  - job_name: 'node_exporter_clients'
    ...
    static_configs:
      - targets:
          ...
          - 192.168.0.15:8428

* в данном примере мы добавили еще один target с адресом сервера VictoriaMetrics (192.168.0.15:8428). Обратите внимание, что в моем случае job_name называется node_exporter_clients. В вашем случае это может быть другое название, или, вовсе, можно добавить отдельный job_name.

Перезапустим prometheus:

systemctl restart prometheus

Теперь можно настроить Grafana. На официальном сайте мы можем прочитать о VictoriaMetrics dashboard, а также получить идентификатор для его установки.

В графане переходим в Dashboards - Import:

Переходим к импорту дашбордов

Вводим идентификатор дашборда для VictoriaMetrics. Это 10229:

Вводим номер дашборда для импорта

На следующем шаге можно просто нажать Import:

Подтверждаем импорт дашборда

Готово. Можно перейти к дашборду и насладиться его видом.

Читайте также

Другие инструкции, которые могут помочь в изучении VictoriaMetrics:

1. Установка Prometheus + Alertmanager + node_exporter на Linux.

2. Установка и настройка сервера Grafana на Linux.

3. Создание графиков в Grafana на основе данных из Prometheus.

# Серверы # Базы данных # Мониторинг # DevOps
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет