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.
This commit is contained in:
77
infra/logrotate/README.md
Normal file
77
infra/logrotate/README.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# Logrotate Configuration
|
||||
|
||||
Эта директория содержит конфигурационные файлы для автоматической ротации логов.
|
||||
|
||||
## Файлы
|
||||
|
||||
### `logrotate_bots.conf.j2`
|
||||
Шаблон конфигурации для логов ботов и Docker контейнеров:
|
||||
- Логи ботов в `{{ project_root }}/bots/*/logs/*.log`
|
||||
- Stderr логи ботов в `{{ project_root }}/bots/*/bot_stderr.log`
|
||||
- Docker контейнер логи в `/var/lib/docker/containers/*/*.log`
|
||||
|
||||
### `logrotate_system.conf.j2`
|
||||
Шаблон конфигурации для системных сервисов:
|
||||
- Nginx логи в `/var/log/nginx/*.log`
|
||||
- Системные логи (syslog, mail, auth, cron и др.)
|
||||
- Fail2ban логи
|
||||
- Docker daemon логи
|
||||
- Prometheus node exporter логи
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
Конфигурации используют следующие переменные из `.env` файла:
|
||||
|
||||
```bash
|
||||
# Logrotate настройки
|
||||
LOGROTATE_RETENTION_DAYS=30 # Количество дней хранения логов
|
||||
LOGROTATE_COMPRESS=true # Сжатие старых логов
|
||||
LOGROTATE_DELAYCOMPRESS=true # Отложенное сжатие
|
||||
```
|
||||
|
||||
## Использование
|
||||
|
||||
Эти шаблоны автоматически применяются при запуске Ansible playbook. Они создают конфигурационные файлы в `/etc/logrotate.d/` на сервере.
|
||||
|
||||
### Ручное применение
|
||||
|
||||
Если нужно применить конфигурации вручную:
|
||||
|
||||
```bash
|
||||
# Скопировать конфигурации
|
||||
sudo cp logrotate_bots.conf.j2 /etc/logrotate.d/bots
|
||||
sudo cp logrotate_system.conf.j2 /etc/logrotate.d/system
|
||||
|
||||
# Проверить конфигурацию
|
||||
sudo logrotate -d /etc/logrotate.conf
|
||||
|
||||
# Принудительная ротация
|
||||
sudo logrotate -f /etc/logrotate.conf
|
||||
```
|
||||
|
||||
## Настройки по умолчанию
|
||||
|
||||
- **Ежедневная ротация**: все логи ротируются каждый день
|
||||
- **Сжатие**: старые логи сжимаются gzip
|
||||
- **Хранение**: 30 дней (настраивается через переменную)
|
||||
- **Автоматический перезапуск сервисов**: после ротации логов
|
||||
|
||||
## Структура логов
|
||||
|
||||
После настройки логи будут организованы следующим образом:
|
||||
|
||||
```
|
||||
/var/log/
|
||||
├── nginx/
|
||||
│ ├── access.log
|
||||
│ ├── access.log.1.gz
|
||||
│ ├── error.log
|
||||
│ └── error.log.1.gz
|
||||
└── ...
|
||||
|
||||
{{ project_root }}/bots/*/logs/
|
||||
├── bot.log
|
||||
├── bot.log.1.gz
|
||||
├── bot.log.2.gz
|
||||
└── ...
|
||||
```
|
||||
49
infra/logrotate/logrotate_bots.conf.j2
Normal file
49
infra/logrotate/logrotate_bots.conf.j2
Normal file
@@ -0,0 +1,49 @@
|
||||
# Logrotate configuration for bot applications
|
||||
# This file manages log rotation for all bot services
|
||||
|
||||
{{ project_root }}/bots/*/logs/*.log {
|
||||
daily
|
||||
missingok
|
||||
rotate {{ lookup('env', 'LOGROTATE_RETENTION_DAYS') | default('30') }}
|
||||
{% if lookup('env', 'LOGROTATE_COMPRESS') | default('true') | lower == 'true' %}compress{% endif %}
|
||||
{% if lookup('env', 'LOGROTATE_DELAYCOMPRESS') | default('true') | lower == 'true' %}delaycompress{% endif %}
|
||||
notifempty
|
||||
create 0644 {{ deploy_user }} {{ deploy_user }}
|
||||
postrotate
|
||||
# Restart bot services if they are running
|
||||
if [ -f /home/{{ deploy_user }}/.docker-compose-pid ]; then
|
||||
cd {{ project_root }} && docker-compose restart
|
||||
fi
|
||||
endscript
|
||||
}
|
||||
|
||||
{{ project_root }}/bots/*/bot_stderr.log {
|
||||
daily
|
||||
missingok
|
||||
rotate {{ lookup('env', 'LOGROTATE_RETENTION_DAYS') | default('30') }}
|
||||
{% if lookup('env', 'LOGROTATE_COMPRESS') | default('true') | lower == 'true' %}compress{% endif %}
|
||||
{% if lookup('env', 'LOGROTATE_DELAYCOMPRESS') | default('true') | lower == 'true' %}delaycompress{% endif %}
|
||||
notifempty
|
||||
create 0644 {{ deploy_user }} {{ deploy_user }}
|
||||
postrotate
|
||||
# Restart bot services if they are running
|
||||
if [ -f /home/{{ deploy_user }}/.docker-compose-pid ]; then
|
||||
cd {{ project_root }} && docker-compose restart
|
||||
fi
|
||||
endscript
|
||||
}
|
||||
|
||||
# Docker container logs
|
||||
/var/lib/docker/containers/*/*.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 7
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0644 root root
|
||||
postrotate
|
||||
# Reload Docker daemon
|
||||
systemctl reload docker
|
||||
endscript
|
||||
}
|
||||
100
infra/logrotate/logrotate_system.conf.j2
Normal file
100
infra/logrotate/logrotate_system.conf.j2
Normal file
@@ -0,0 +1,100 @@
|
||||
# Logrotate configuration for system services
|
||||
# This file manages log rotation for system services
|
||||
|
||||
# Nginx logs
|
||||
/var/log/nginx/*.log {
|
||||
daily
|
||||
missingok
|
||||
rotate {{ lookup('env', 'LOGROTATE_RETENTION_DAYS') | default('30') }}
|
||||
{% if lookup('env', 'LOGROTATE_COMPRESS') | default('true') | lower == 'true' %}compress{% endif %}
|
||||
{% if lookup('env', 'LOGROTATE_DELAYCOMPRESS') | default('true') | lower == 'true' %}delaycompress{% endif %}
|
||||
notifempty
|
||||
create 0644 www-data adm
|
||||
sharedscripts
|
||||
postrotate
|
||||
if [ -f /var/run/nginx.pid ]; then
|
||||
kill -USR1 `cat /var/run/nginx.pid`
|
||||
fi
|
||||
endscript
|
||||
}
|
||||
|
||||
# System logs
|
||||
/var/log/syslog {
|
||||
daily
|
||||
missingok
|
||||
rotate 7
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0644 syslog adm
|
||||
postrotate
|
||||
/usr/lib/rsyslog/rsyslog-rotate
|
||||
endscript
|
||||
}
|
||||
|
||||
/var/log/mail.info
|
||||
/var/log/mail.warn
|
||||
/var/log/mail.err
|
||||
/var/log/mail.log
|
||||
/var/log/daemon.log
|
||||
/var/log/kern.log
|
||||
/var/log/auth.log
|
||||
/var/log/user.log
|
||||
/var/log/lpr.log
|
||||
/var/log/cron.log
|
||||
/var/log/debug
|
||||
/var/log/messages {
|
||||
daily
|
||||
missingok
|
||||
rotate 7
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0644 syslog adm
|
||||
sharedscripts
|
||||
postrotate
|
||||
/usr/lib/rsyslog/rsyslog-rotate
|
||||
endscript
|
||||
}
|
||||
|
||||
# Fail2ban logs
|
||||
/var/log/fail2ban.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 7
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0644 root root
|
||||
postrotate
|
||||
systemctl reload fail2ban
|
||||
endscript
|
||||
}
|
||||
|
||||
# Docker daemon logs
|
||||
/var/log/docker.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 7
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0644 root root
|
||||
postrotate
|
||||
systemctl reload docker
|
||||
endscript
|
||||
}
|
||||
|
||||
# Prometheus node exporter logs
|
||||
/var/log/prometheus-node-exporter.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 7
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0644 prometheus prometheus
|
||||
postrotate
|
||||
systemctl reload prometheus-node-exporter
|
||||
endscript
|
||||
}
|
||||
Reference in New Issue
Block a user