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

Thank you for reading this post, don't forget to subscribe!

В рам­ках дан­ной инструк­ции мы рас­смот­рим уста­нов­ку и настрой­ку авто­за­пус­ка 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

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

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

systemctl daemon-reload

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

systemctl enable victoriametrics --now

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

systemctl status victoriametrics

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

curl 127.0.0.1:8428

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

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

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

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

curl 192.168.0.15:8428

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

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

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

vi /etc/prometheus/prometheus.yml

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

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

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

* где:

  • 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, например:

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

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

Настройка Grafana

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

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

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

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

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

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

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

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

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

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

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

vi /etc/prometheus/prometheus.yml

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

* в дан­ном при­ме­ре мы доба­ви­ли еще один 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:

Гото­во