Установка и использование 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.

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

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

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

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

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

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

Теперь можно использовать сохраненный источник, как будто, это источник от 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, а также получить идентификатор для его установки.

В графане переходим в DashboardsImport:

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

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

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

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

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

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

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

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

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *