install vmauth-prod /usr/local/sbin
Установка vmauth в минимальной конфигурации и запуск через systemd
1. Установка бинарника и добавление systemd-юнита в систему
-
Установите бинарник
vmauth-prod
в каталог/usr/local/sbin
: -
Добавьте в систему аккаунт для работы демона VMAuth и создайте каталог под конфигурационные файлы:
Этот каталог предназначен для размещения файлов конфигурации vmauth. Режим 2750 позволяет наследовать права «группы» для создаваемых объектов внутри этого каталога, а правила ACL обеспечивают сохранность данных, запрещая доступ для остальных пользователей (other). Вы можете проверить наследование прав, создав внутри каталога новый файл или каталог. VMAUTH_ACCOUNT_NAME='vmauth' VMETRICS_GROUP='victoriametrics' VMAUTH_CONF_DIR="/etc/${VMETRICS_GROUP}" groupadd --system ${VMAUTH_CONF_DIR} useradd --system --no-create-home \ --shell /sbin/nologin \ --home-dir ${VMAUTH_CONF_DIR} \ --gid ${VMETRICS_GROUP} ${VMAUTH_ACCOUNT_NAME} mkdir -p ${VMAUTH_CONF_DIR} chown root:${VMETRICS_GROUP} ${VMAUTH_CONF_DIR} chmod 2750 ${VMAUTH_CONF_DIR} setfacl -d -m u::rwX,g::r-X,o::--- ${VMAUTH_CONF_DIR} setfacl -m u::rwX,g::r-X,o::--- ${VMAUTH_CONF_DIR}
-
Добавьте systemd-юнит в
/etc/systemd/system
, где по правилам должны находиться созданные вручную systemd-юниты.В переменную SYSTEMD_HOSTNAME может попасть короткое имя машины, если юнит запустится раньше момента установки полного имени машины. То есть в метку instance может попасть не vmaut01p.example.org, а vmauth01p. Но это не проблема, если есть правила, по которым в метке instance и должно быть короткое имя машины. -
Скрипт
-
Результативный файл
set -u; cat << EOF > /etc/systemd/system/vmauth.service [Unit] Description=vmauth is a simple auth proxy, router and load balancer for VictoriaMetrics. # https://docs.victoriametrics.com/vmauth.html After=network.target systemd-hostnamed.service Requires=systemd-hostnamed.service [Service] Type=simple User=vmauth Group=victoriametrics StartLimitBurst=5 StartLimitInterval=0 Restart=on-failure RestartSec=1 EnvironmentFile=/etc/sysconfig/vmauth RuntimeDirectory=%N RuntimeDirectoryMode=755 ExecStartPre=/bin/sh -c "echo SYSTEMD_HOSTNAME=\$(cat /etc/hostname) > /run/%N/systemd_hostname.env" EnvironmentFile=-/run/%N/systemd_hostname.env ExecStart=/usr/local/bin/vmauth-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=${VMAUTH_CONF_DIR} PrivateTmp=yes ProtectHome=yes NoNewPrivileges=yes ProtectSystem=strict ProtectControlGroups=true ProtectKernelModules=true ProtectKernelTunables=yes AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target EOF set +u systemctl daemon-reload
[Unit] Description=vmauth is a simple auth proxy, router and load balancer for VictoriaMetrics. # https://docs.victoriametrics.com/vmauth.html After=network.target [Service] Type=simple User=vmauth Group=victoriametrics StartLimitBurst=5 StartLimitInterval=0 Restart=on-failure RestartSec=1 EnvironmentFile=/etc/sysconfig/vmauth RuntimeDirectory=%N RuntimeDirectoryMode=755 ExecStartPre=/bin/sh -c "echo SYSTEMD_HOSTNAME=$(cat /etc/hostname) > /run/%N/systemd_hostname.env" EnvironmentFile=-/run/%N/systemd_hostname.env ExecStart=/usr/local/bin/vmauth-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 PrivateTmp=yes ProtectHome=yes NoNewPrivileges=yes ProtectSystem=strict ProtectControlGroups=true ProtectKernelModules=true ProtectKernelTunables=yes AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target
-
2. Минимальная конфигурация vmauth
-
Добавьте в каталог
/etc/sysconfig
файл с окружением дляvmauth.service
:В этом файле
/etc/sysconfig/vmauth
хранятся опции командной строк, использующиеся при выполнении командыvmauth-prod -envflag.enable
. Например, переменнаяauth_config=vmauth.yml
преобразуется в опциюauth.config=vmauth.yml
, то есть подчерк в имени переменной замещается точкой.Из-за наличия в systemd-юните опции
WorkingDirectory
, которая определяет «рабочий каталог» для запускаемого процесса, имеется возможность использовать относительные пути к конфигурационным файлам.cat << EOF > /etc/sysconfig/vmauth ## TCP address to listen for incoming http requests. httpListenAddr=:8427 ## TCP address to listen for incoming internal API http requests. ## I.e. /metrics, /health, etc. httpInternalListenAddr=127.0.0.1:8426 ## Minimum level of errors to log. Possible values: ## INFO, WARN, ERROR, FATAL, PANIC (default "INFO") #loggerLevel=INFO ## Log requests with invalid auth tokens. #logInvalidAuthTokens ## Path to auth config. auth_config=vmauth.yml EOF
-
Добавьте в «рабочий» каталог vmauth
/etc/victoriametrics
основной файлvmauth.yml
с минимальным содержимым:cat << 'EOF' > /etc/victoriametrics/vmauth.yml ## For generation a token use: ## 'tr -dc 'A-Za-z0-9_' < /dev/urandom | head -c $(( RANDOM % (23 - 19 + 1) + 19 )); echo'. ## ## To reread the config files, use 'docker kill -s HUP vmauth'. ## ## Format of name: ## First part - Whose request? (MDM). ## Second part - Type of request (select or insert or import or export). ## ## The fields 'name' will be seen in the Grafana vmauth dashboard. unauthorized_user: url_prefix: "http://127.0.0.1:8426/-/ready" #tls_insecure_skip_verify: true EOF
Строка url_prefix: "http://127.0.0.1:8426/-/ready" позволит keepalived’у вычислять неработающие ноды.
Раскомментировать опцию
#tls_insecure_skip_verify: true
потребуется после включения TLS для входящих подключений в vmauth. TLS включается одновременно и для внутренних URN, типа/metrics
,/-/ready
, и т.д. А так как в выдаваемых TLS-сертификатах отсутствует DNS-имя 127.0.0.1, то TLS-проверка при подключении к таким URI без опцииtls_insecure_skip_verify
будет провалена.
3. Первый запуск vmauth
-
Включите и Запустите vmauth одной командой:
systemctl enable --now vmauth
-
Проверьте журнал:
journalctl -u vmauth --no-pager -o cat -n
Ожидаемый вывод2025-02-21T13:07:06.089Z info VictoriaMetrics/lib/logger/flag.go:20 -envflag.enable="true" 2025-02-21T13:07:06.089Z info VictoriaMetrics/lib/logger/flag.go:20 -httpInternalListenAddr="127.0.0.1:8426" 2025-02-21T13:07:06.089Z info VictoriaMetrics/lib/logger/flag.go:20 -httpListenAddr=":8427" 2025-02-21T13:07:06.089Z info VictoriaMetrics/lib/logger/flag.go:20 -loggerLevel="INFO" 2025-02-21T13:07:06.090Z info VictoriaMetrics/app/vmauth/main.go:95 starting vmauth at "[:8427]"... 2025-02-21T13:07:06.090Z info VictoriaMetrics/app/vmauth/auth_config.go:691 loaded information about 0 users from -auth.config="vmauth.yml" 2025-02-21T13:07:06.090Z info VictoriaMetrics/app/vmauth/main.go:113 started vmauth in 0.000 seconds 2025-02-21T13:07:06.090Z info VictoriaMetrics/lib/httpserver/httpserver.go:169 started server at http://127.0.0.1:8426/ 2025-02-21T13:07:06.090Z info VictoriaMetrics/lib/httpserver/httpserver.go:171 pprof handlers are exposed at http://127.0.0.1:8426/debug/pprof/ 2025-02-21T13:07:06.090Z info VictoriaMetrics/lib/httpserver/httpserver.go:169 started server at http://0.0.0.0:8427/
4. Проверка
-
Выполните проверку готовности сервиса:
curl http://mon-vmauth01p:8427
Ожидаемый выводVictoriaMetrics is Ready.
-
Выполните проверку возвращаемого HTTP-кода:
curl -i http://mon-vmauth01p:8427
Ожидаемый выводHTTP/1.1 200 OK Content-Length: 26 Content-Type: text/plain; charset=utf-8 Date: Thu, 20 Feb 2025 15:18:01 GMT Vary: Accept-Encoding Vary: Accept-Encoding X-Server-Hostname: mon-vmauth01p.example.org X-Server-Hostname: mon-vmauth01p.example.org