Files
prod/infra/nginx/AUTH_SETUP.md
Andrey f7b08ae9e8 feat: enhance Ansible playbook and Nginx configuration with authentication and logrotate setup
- Added environment variables for project configuration in env.template.
- Updated Ansible playbook to use environment variables for project settings and added tasks for monitoring authentication setup.
- Enhanced Nginx configuration for Alertmanager and Prometheus with HTTP Basic Authentication.
- Introduced logrotate configuration for managing log files and set up cron for daily execution.
- Removed obsolete Uptime Kuma docker-compose file.
2025-09-19 12:09:05 +03:00

3.4 KiB
Raw Blame History

Настройка авторизации для мониторинга

Обзор

Добавлена HTTP Basic Authentication для следующих сервисов:

  • Prometheus (/prometheus/) - метрики и мониторинг
  • Alertmanager (/alerts/ и /api/v1/) - управление алертами

Управление паролями

Автоматическая настройка через Ansible

При развертывании через Ansible пароли настраиваются автоматически:

# Использовать пароли по умолчанию
ansible-playbook -i inventory.ini playbook.yml

# Задать свои пароли
ansible-playbook -i inventory.ini playbook.yml \
  -e monitoring_username=myuser \
  -e monitoring_password=mypassword

Ручная настройка

  1. Создать файл паролей:
sudo mkdir -p /etc/nginx/passwords
sudo htpasswd -c /etc/nginx/passwords/monitoring.htpasswd admin
  1. Добавить дополнительных пользователей:
sudo htpasswd /etc/nginx/passwords/monitoring.htpasswd username
  1. Установить правильные права:
sudo chown root:www-data /etc/nginx/passwords/monitoring.htpasswd
sudo chmod 640 /etc/nginx/passwords/monitoring.htpasswd
  1. Перезапустить nginx:
sudo systemctl reload nginx

Использование скрипта генерации

# Сгенерировать пароль для пользователя admin
sudo /usr/local/bin/generate_auth_passwords.sh admin

# Сгенерировать пароль для другого пользователя
sudo /usr/local/bin/generate_auth_passwords.sh myuser

Доступ к сервисам

После настройки авторизации доступ к сервисам:

  • Prometheus: https://your-server/prometheus/
  • Alertmanager: https://your-server/alerts/
  • Alertmanager API: https://your-server/api/v1/

При первом обращении браузер запросит логин и пароль.

Health Check endpoints

Следующие endpoints остаются доступными без авторизации для мониторинга:

  • https://your-server/prometheus/-/healthy - проверка состояния Prometheus
  • https://your-server/nginx-health - проверка состояния nginx

Безопасность

  • Пароли хранятся в зашифрованном виде в файле /etc/nginx/passwords/monitoring.htpasswd
  • Файл доступен только для чтения пользователю root и группе www-data
  • Используется HTTPS для всех соединений
  • Настроена защита от брутфорса через fail2ban

Устранение проблем

Проверка конфигурации nginx

sudo nginx -t

Проверка файла паролей

sudo cat /etc/nginx/passwords/monitoring.htpasswd

Проверка логов nginx

sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log

Сброс пароля

sudo htpasswd /etc/nginx/passwords/monitoring.htpasswd admin