1. Настройка сервера rsyslog
Установите rsyslog:
apt-get install rsyslog
В конец файла /etc/rsyslog.conf добавьте следующие строки:
$ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514
Далее необходимо создать условия для того, чтобы логи записывались в отдельный файл.
Общий файл логов eccm:
cd /var/log/ mkdir eccm touch eccm/eccm.log chown -R syslog:adm eccm
Файлы логов контейнеров по отдельности:
cd /var/log/eccm/ touch eccm_dev-monitoring-service-worker-1 eccm_dev-dhcp-1 eccm_dev-web-gui-1 eccm_dev-monitoring-service-1 eccm_dev-upgrader-1 eccm_dev-trap-receiver-1 eccm_dev-data-presenter-1 eccm_dev-backend-ui-1 eccm_dev-notification-service-1 eccm_dev-cron-manager-1 eccm_dev-syslog-receiver-1 eccm_dev-problem-manager-1 eccm_dev-ztp-manager-1 eccm_dev-map-manager-1 eccm_dev-identity-provider-1 eccm_dev-device-manager-1 eccm_dev-terminal-manager-1 eccm_dev-rabbitmq-service-1 eccm_dev-redis-1 eccm_dev-eccm-gateway-1 postgres-postgres-configurator-1 postgres-postgres-1 chown -R syslog:adm /var/log/eccm
В файл /etc/rsyslog.conf внесите следующие изменения:
# Записываем логи с ECCM сервера в /var/log/eccm.log if $hostname == "<ip_eccm>" then /var/log/eccm/eccm.log
# Записываем логи контейнеров с ECCM сервера в отдельные файлы /var/log/eccm/ if $programname contains "eccm_dev-backend-ui-1" then /var/log/eccm/eccm_dev-backend-ui-1 if $programname contains "eccm_dev-cron-manager-1" then /var/log/eccm/eccm_dev-cron-manager-1 if $programname contains "eccm_dev-data-presenter-1" then /var/log/eccm/eccm_dev-data-presenter-1 if $programname contains "eccm_dev-device-manager-1" then /var/log/eccm/eccm_dev-device-manager-1 if $programname contains "eccm_dev-dhcp-1" then /var/log/eccm/eccm_dev-dhcp-1 if $programname contains "eccm_dev-eccm-gateway-1" then /var/log/eccm/eccm_dev-eccm-gateway-1 if $programname contains "eccm_dev-identity-provider-1" then /var/log/eccm/eccm_dev-identity-provider-1 if $programname contains "eccm_dev-map-manager-1" then /var/log/eccm/eccm_dev-map-manager-1 if $programname contains "eccm_dev-monitoring-service-1" then /var/log/eccm/eccm_dev-monitoring-service-1 if $programname contains "eccm_dev-monitoring-service-worker-1" then /var/log/eccm/eccm_dev-monitoring-service-worker-1 if $programname contains "eccm_dev-notification-service-1" then /var/log/eccm/eccm_dev-notification-service-1 if $programname contains "eccm_dev-problem-manager-1" then /var/log/eccm/eccm_dev-problem-manager-1 if $programname contains "eccm_dev-rabbitmq-service-1" then /var/log/eccm/eccm_dev-rabbitmq-service-1 if $programname contains "eccm_dev-redis-1" then /var/log/eccm/eccm_dev-redis-1 if $programname contains "eccm_dev-syslog-receiver-1" then /var/log/eccm/eccm_dev-syslog-receiver-1 if $programname contains "eccm_dev-terminal-manager-1" then /var/log/eccm/eccm_dev-terminal-manager-1 if $programname contains "eccm_dev-trap-receiver-1" then /var/log/eccm/eccm_dev-trap-receiver-1 if $programname contains "eccm_dev-upgrader-1" then /var/log/eccm/eccm_dev-upgrader-1 if $programname contains "eccm_dev-web-gui-1" then /var/log/eccm/eccm_dev-web-gui-1 if $programname contains "eccm_dev-ztp-manager-1" then /var/log/eccm/eccm_dev-ztp-manager-1 if $programname contains "postgres-postgres-1" then /var/log/eccm/postgres-postgres-1 if $programname contains "postgres-postgres-configurator-1" then /var/log/eccm/postgres-postgres-configurator-1
Перезапустите службу:
sudo systemctl restart rsyslog
2. Настройка сервера ECCM
В файл /etc/docker/daemon.json добавьте следующие строки:
{ "log-driver": "syslog", "log-opts": { "syslog-address": "tcp://<ip_syslog_server>:514", "tag": "{{.Name}}" } }
В файле eccm/1.13/eccm/docker-compose.yml закомментируйте строки, которые отвечают за запись логов на тот же сервер, где запущен ECCM:
nano eccm/docker-compose.yml #x-docker-logging: # logging: # &docker-logging # driver: "json-file" # options: # max-size: ${LOGGING_MAX_FILE_SIZE:-50M} # max-file: ${LOGGING_MAX_FILES:-5} # compress: ${LOGGING_COMPRESS:-true} и для всех контейнеров # logging: # <<: *docker-logging
Также закомментируйте строки в файле eccm/1.13/postgres/docker-compose.yml:
nano postgres/docker-compose.yml # logging: # driver: "json-file" # options: # max-size: ${LOGGING_MAX_FILE_SIZE:-50M} # max-file: ${LOGGING_MAX_FILES:-5} # compress: ${LOGGING_COMPRESS:-true}
Перезапустите docker:
systemctl restart docker
Если у вас уже запущены контейнеры, удалите и пересоздайте их. Данные при этом не потеряются:
docker stop $(docker ps -a -q) #остановить все контейнеры docker rm $(docker ps -a -q) #удалить все контейнеры
Если на сервере также запущены другие контейнеры, то можно удалить только контейнеры ECCM:
cd ..../eccm/1.13/ docker compose -f postgres/docker-compose.yml down docker compose -f eccm/docker-compose.yml down
Перезапустите контейнеры:
./compose-tools.sh -s <ip_eccm>
Если запись логов не началась, перезапустите службу:
systemctl restart rsyslog