Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

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
  • Нет меток