Хеширование пароля и создание web.config.file
# Установка htpasswd:
sudo apt install -y apache2-utils
PASSWORD='<password>'
PASSWORDHASHED="$(echo ${PASSWORD} | htpasswd -inBC 10 '' | tr -d ':\n')"
echo "basic_auth_users:\n admin: '$PASSWORDHASHED'" \
| sudo tee /etc/prometheus/web.yml
# basic_auth_users:
# admin: '$2y$10$VBQTOJXBEAIK086F/82Ob.TVrdExsDXRE2R5.gh3ZW.qoyFsTRQka'
# Проверяем файл 👇
promtool check web-config /etc/prometheus/web.yml
Чтобы не было такой ошибки:
Нужно добавить basic_auth
в конфиг prometheus:
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
scrape_timeout: 5s
static_configs:
- targets: ['localhost:9090']
basic_auth:
username: '<your_username>'
password: '<your_password>'
Изменение команды запуска Prometheus
Измени значение ExecStart
в systemd-юните prometheus:
ExecStart=/usr/local/bin/prometheus $ARGS\
--config.file=/etc/prometheus/prometheus.yml \
--web.config.file=/etc/prometheus/web.yml
Перезапускай сервер:
sudo systemctl daemon-reload
sudo systemctl restart prometheus
systemctl status prometheus
Тест
Обычный curl http://localhost:9090
не пустит и выдаст Unauthorized
, поэтому нужно юзать ключ -u
:
curl -u admin http://localhost:9090 # <интерактивный ввод пароля>
# Либо сразу с паролем (небезопасно):
curl -u 'admin':'<password>' http://localhost:9090
Sauce: Защита сервера Prometheus с помощью basic аутентификации
Prometheus