set +o history USER_PASS='nx-reader:xxxxxxxxxxxxxxxxxxxx' set -o history
10. vmagent. Установка бинарника в systemd
1. Добавление бинарника в систему
-
Временно отключите bash history и задайте логин/пароль для доступа к внутреннему репозиторию, если требуется:
-
Скачайте файлы выбранной версии:
URI='https://nexus.example.org/repository/raw/monitoring/victoriametrics' PLATFORM='linux-amd64' VER='v1.111.0' TMPDIR=$(mktemp -d) && cd $TMPDIR curl -LOu ${USER_PASS} ${URI}/vmutils-${PLATFORM}-${VER}.tar.gz curl -LOu ${USER_PASS} ${URI}/vmutils-${PLATFORM}-${VER}_checksums.txt
-
Распакуйте архив во временную директорию и проверьте корректность файлов:
tar xvf vmutils-linux-amd64-v1.111.0.tar.gz sha256sum -c vmutils-${PLATFORM}-${VER}_checksums.txt
Ожидаемый вывод:
vmutils-linux-amd64-v1.111.0.tar.gz: OK vmagent-prod: OK vmalert-prod: OK vmalert-tool-prod: OK vmauth-prod: OK vmbackup-prod: OK vmrestore-prod: OK vmctl-prod: OK
-
Установите выбранные приложения в
/usr/local/bin
, где, согласно FHS, следует размещать вручную добавляемые бинарники:install vmagent /usr/local/bin
-
Почистите за собой, удалив временную директорию:
rm -rf "${TMPDIR}"
2. Подготовка системы
-
Добавьте в систему аккаунт
vmagent
с группойvictoriametrics
и создайте каталог под конфигурационные файлы:VMAGENT_CONF_DIR='/etc/victoriametrics' groupadd --system victoriametrics useradd --system --no-create-home --shell /sbin/nologin \ --home-dir ${VMAGENT_CONF_DIR} --gid victoriametrics vmagent mkdir -p ${VMAGENT_CONF_DIR} chown root:victoriametrics ${VMAGENT_CONF_DIR} chmod 2750 ${VMAGENT_CONF_DIR} setfacl -d -m u::rwX,g::r-X,o::--- ${VMAGENT_CONF_DIR} setfacl -m u::rwX,g::r-X,o::--- ${VMAGENT_CONF_DIR}
Этот каталог предназначен для размещения файлов конфигурации vmagent. Режим 2750
позволяет наследовать права «группы» для создаваемых объектов внутри этого каталога, а правила ACL обеспечивают сохранность данных, запрещая доступ для остальных пользователей (other
). Вы можете проверить наследование прав, создав внутри каталога новый файл или каталог. -
Используйте отдельный диск для кеша vmagent, чтобы буферизовать собранные метрики в случае временной недоступности VictoriaMetrics-кластера. Если отдельный диск недоступен, необходимо добавить в /etc/sysconfig/vmagent для каждого
remoteWrite.url
опциюremoteWrite.maxDiskUsagePerURL
, чтобы ограничить используемое пространство для кеша. -
Добавьте в переменную путь к каталогу для кеша и создайте каталог:
VMAGENT_CACHE_DIR='/srv/vmagent' mkdir -p ${VMAGENT_CACHE_DIR} chown vmagent:victoriametrics ${VMAGENT_CACHE_DIR} chmod 750 ${VMAGENT_CACHE_DIR}
Режим
750
для каталога и опцияUMask=027
в systemd-юните обеспечивают безопасность записываемых данных, запрещая доступ для остальных пользователей (other
).Использование ACL здесь излишне: во-первых, в нём нет необходимости, а во-вторых, оно создаёт дополнительную нагрузку при интенсивных операциях ввода-вывода.
-
Добавьте systemd-юнит в
/etc/systemd/system
, где по правилам SYSTEMD должны находиться созданные вручную systemd-юниты:-
Скрипт
-
Результативный systemd-юнит
set -u; cat << EOF > /etc/systemd/system/vmagent.service [Unit] Description=vmagent is a tiny but mighty agent which helps you collect metrics from various sources and store them in VictoriaMetrics or any other Prometheus-compatible storage systems that support the remote_write protocol. # https://docs.victoriametrics.com/vmagent.html After=network.target [Service] Type=simple User=vmagent Group=victoriametrics UMask=027 StartLimitBurst=5 StartLimitInterval=0 Restart=on-failure RestartSec=1 EnvironmentFile=/etc/sysconfig/vmagent Environment="SYSTEMD_HOSTNAME=%H" ExecStart=/usr/local/bin/vmagent-prod -envflag.enable ExecStop=/bin/kill -s SIGTERM \$MAINPID ExecReload=/bin/kill -HUP \$MAINPID # See docs https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html#tuning LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity WorkingDirectory=${VMAGENT_CONF_DIR} ReadWritePaths=${VMAGENT_CACHE_DIR} PrivateTmp=yes ProtectHome=yes NoNewPrivileges=yes ProtectSystem=strict ProtectControlGroups=true ProtectKernelModules=true ProtectKernelTunables=yes [Install] WantedBy=multi-user.target EOF set +u systemctl daemon-reload
[Unit] Description=vmagent is a tiny but mighty agent which helps you collect metrics from various sources and store them in VictoriaMetrics or any other Prometheus-compatible storage systems that support the remote_write protocol. # https://docs.victoriametrics.com/vmagent.html After=network.target [Service] Type=simple User=vmagent Group=victoriametrics UMask=027 StartLimitBurst=5 StartLimitInterval=0 Restart=on-failure RestartSec=1 EnvironmentFile=/etc/sysconfig/vmagent Environment="SYSTEMD_HOSTNAME=%H" ExecStart=/usr/local/bin/vmagent-prod -envflag.enable ExecStop=/bin/kill -s SIGTERM $MAINPID ExecReload=/bin/kill -HUP $MAINPID # See docs https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html#tuning LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity WorkingDirectory=/etc/victoriametrics ReadWritePaths=/srv/vmagent PrivateTmp=yes ProtectHome=yes NoNewPrivileges=yes ProtectSystem=strict ProtectControlGroups=true ProtectKernelModules=true ProtectKernelTunables=yes [Install] WantedBy=multi-user.target
-
3. Environment-файл для systemd-юнита
Для чего используется этот environment-файл?
Этот файл содержит опции командной строки, используемые при запуске Опция |
-
Добавьте в каталог для environment-файлов
/etc/sysconfig
файл с окружением для запуска vmagent.set -u; cat << EOF > /etc/sysconfig/vmagent httpListenAddr=127.0.0.1:8429 promscrape_config=vmagent.yml ## Silently skip unsupported fields #promscrape_config_strictParse=false ## To see all the valid urls #remoteWrite_showURL ## Directory for temporary storage of collected data remoteWrite_tmpDataPath=${VMAGENT_CACHE_DIR} loggerLevel=INFO promscrape_suppressDuplicateScrapeTargetErrors=true EOF set +u
4. Создание основного config-файла для vmagent
-
Создайте «основной» конфиг-файл, где укажите минимально необходимые опции:
cat << EOF > /etc/victoriametrics/vmagent.yml scrape_config_files: - targets/*.yml global: scrape_interval: 15s EOF
Что дальше
Теперь можно приступить к настройке сбора метрик и их отправки в VictoriaMetrics. |