Команды управления

Запуск сервиса Call History:

docker compose up -d

Остановка сервиса Call History без очистки docker container и docker network:

docker compose stop

Остановка контейнеров сервиса Call History, с последующим удалением контейнеров, сетей, томов и образов, созданных с помощью команды ./ecss-call-history.sh up:

docker compose down

Перезапуск сервиса Call History:

docker compose restart

Проверка наличия обновлений в рамках текущей версии:

docker compose pull

Просмотр запущенных контейнеров:

docker ps

Более подробно о командах смотрите в официальной документации по docker compose.

Логи

Для просмотра логов базы данных:

docker logs ecss-call-history-stable-call-history-db-1

Для просмотра логов приложения:

docker logs ecss-call-history-stable-call-history-1

Для просмотра логов в реальном времени добавить "--follow" в конце команды:

docker logs ecss-call-history-stable-call-history-1 --follow

По умолчанию пишутся 10 файлов по 50 Мб. Логи расположены в /var/lib/docker/containers/<container>/.

Вывести список контейнеров можно командой:

docker ps

Для настройки параметров ротации нужно отредактировать docker-compose.yaml, расположенный в ecss-call-history/stable/. В данном файле под каждый контейнер отведен свой блок настроек:

    logging:
      driver: "json-file" 
      options:
        max-size: "50m" 
        max-file: "10" 

max-size: "50m" — максимальный размер файла лога;

max-file: "10" — максимальное количество файлов с логами указанного размера.

И перезапустить Call History Service:

docker compose down && docker compose up -d

После очистки контейнеров логи очищаются. Поэтому, перед остановкой Call History Service с очисткой контейнеров (./ecss-user-status.sh down), рекомендуется скопировать логи.

Файл конфигурации .env

#####################################################
# Global config
#####################################################
DOCKER_REPO=elph.registry.eltex-co.ru
TAG="2.14.13"
VOLUMES_DIR="./volumes"
RESTART_POLICY="on-failure"

#####################################################
# call-history
#####################################################
ECSS_CALL_HISTORY_NODE_ENV="production"
# call-history DB
ECSS_CALL_HISTORY_DB_DATABASE="call_history"
ECSS_CALL_HISTORY_DB_USERNAME="root"
ECSS_CALL_HISTORY_DB_PASSWORD="password"
# call-history behavior
POLLING_INTERVAL=5000
POLLING_LIMIT=1000
POLLING_RETRY_LIMIT=10
LOG_LEVEL=log
NODE_TLS_REJECT_UNAUTHORIZED=0
# источник отображаемых имен в журнале вызовов: ssw | keycloak
DISPLAY_NAME_SOURCE=ssw

# call-history cleanup
CALL_HISTORY_CLEANUP_THRESHOLD=1_month
CALL_HISTORY_CLEANUP_CRON="" # default: every day at midnight

#####################################################
# External endpoints
#####################################################
# shared bus
RABBITMQ_URL=amqp://guest:guest@172.17.0.1:5672/
# Если версия SSW >= 3.17 - необходимо использовать Elph API
# Для работы с Elph API обязательно нужно указать строку подключения по Web Sockets.
# В случае когда ECSS_USE_ELPH_API=false - взаимодействие с SSW будет как раньше через прямые MySQL запросы
ELPH_PROXY="elph-proxy.domain"
ECSS_USE_ELPH_API=true
ECSS_ELPH_API_URL="wss://${ELPH_PROXY}/elph_api/wss"
ECSS_ELPH_API_TOKEN=

# meeting DB
ECSS_MEETING_DB_HOST=ssw.domain
ECSS_MEETING_DB_PORT=3306
ECSS_MEETING_DB_NAME=ecss_meeting_db
ECSS_MEETING_DB_USER=ecss_meeting_db
ECSS_MEETING_DB_PASS=ecss_meeting_db
# calls DB
ECSS_CALLS_DB_HOST=ssw.domain
ECSS_CALLS_DB_PORT=3306
ECSS_CALLS_DB_NAME=ecss_calls_db
ECSS_CALLS_DB_USER=calls_db
ECSS_CALLS_DB_PASS=calls_db
ECSS_CALLS_DB_TIMEZONE=+07:00
ECSS_CALLS_DB_TIME_IS_TRUTH=false
ECSS_CALLS_DB_TIMEZONE_ELPH_API=+07:00
# addressbook DB
ECSS_ADDRESS_BOOK_DB_HOST=ssw.domain
ECSS_ADDRESS_BOOK_DB_PORT=3306
ECSS_ADDRESS_BOOK_DB_NAME=ecss_address_book
ECSS_ADDRESS_BOOK_DB_USER=address_book
ECSS_ADDRESS_BOOK_DB_PASS=address_book
# databases charset
ECSS_MYSQL_CHARSET=utf8
# keycloak: нужен при DISPLAY_NAME_SOURCE=keycloak и для имен в SIP-событиях
KEYCLOAK_ENDPOINT=
# realm, в котором заведен сервисный клиент и берется токен. Обычно домен
# (как KEYCLOAK_REALM у chat-server); master - если клиенту нужны несколько
# доменов, тогда ему нужны права view-users на каждый realm
KEYCLOAK_REALM=
KEYCLOAK_CLIENT_ID=chat-server-sync
KEYCLOAK_CLIENT_SECRET=
# elph-chat-server
BEARER_TOKEN_PRIVATE_KEY=
AUTH_TOKEN_ISSUER=https://${ELPH_PROXY}/elph/auth/


DOCKER_REPO: URL Docker registry (репозиторий для образов контейнеров);
TAG: Версия образов;
VOLUMES_DIR: Директория для хранения данных контейнеров;
RESTART_POLICY: Политика перезапуска контейнеров;

ECSS_CALL_HISTORY_NODE_ENV: Окружение Node.js приложения;
ECSS_CALL_HISTORY_DB_TAG: Тег образа базы данных;
ECSS_CALL_HISTORY_DB_DATABASE: Имя БД истории вызовов;
ECSS_CALL_HISTORY_DB_USERNAME: Имя пользователя БД истории вызовов;
ECSS_CALL_HISTORY_DB_PASSWORD: Пароль пользователя БД истории вызовов;
POLLING_INTERVAL: Интервал опроса БД в миллисекундах;
POLLING_LIMIT: Лимит записей при опросе;

POLLING_RETRY_LIMIT: Количество запросов к БД за интервал POLLING_INTERVAL;

LOG_LEVEL: Уровень логирования задаётся с помощью значений: "fatal", "error", "warn", "log", "debug", "verbose" по снижению приоритета.

CALL_HISTORY_CLEANUP_THRESHOLD: Порог очистки истории звонков;
CALL_HISTORY_CLEANUP_CRON: Расписание очистки в формате cron;

ECSS_MEETING_DB_HOST: Хост базы данных ECSS MySQL MeetingDB;
ECSS_MEETING_DB_PORT: Порт базы данных ECSS MySQL MeetingDB;
ECSS_MEETING_DB_NAME: Имя базы данных ECSS MySQL MeetingDB;
ECSS_MEETING_DB_USER: Пользователь базы данных ECSS MySQL MeetingDB;
ECSS_MEETING_DB_PASS: Пароль базы данных ECSS MySQL MeetingDB;


ECSS_CALLS_DB_HOST: Хост базы данных ECSS MySQL CallsDB;
ECSS_CALLS_DB_PORT: Порт базы данных ECSS MySQLCallsDB;
ECSS_CALLS_DB_NAME: Имя базы данных ECSS MySQLCallsDB;
ECSS_CALLS_DB_USER: Пользователь базы данных ECSS MySQLCallsDB;
ECSS_CALLS_DB_PASS: Пароль базы данных ECSS MySQL CallsDB;
ECSS_CALLS_DB_TIMEZONE: Часовой пояс базы данных ECSS MySQL CallsDB. Используется при версии SSW раньше 3.17;

ECSS_CALLS_DB_TIME_IS_TRUTH: Доверять часовой зоне ECSS (false — часовой пояс будет скорректирован настройкой ECSS_CALLS_DB_TIMEZONE_ELPH_API, true — часовой пояс не будет скорректирован);

ECSS_CALLS_DB_TIMEZONE_ELPH_API: Часовой пояс базы данных ECSS PostgreSQL. Используется, начиная с версии SSW 3.17;

ECSS_ADDRESS_BOOK_DB_HOST: Хост базы данных ECSS MySQL AddressBookDB;
ECSS_ADDRESS_BOOK_DB_PORT: Порт базы данных ECSS MySQL AddressBookDB;
ECSS_ADDRESS_BOOK_DB_NAME: Имя базы данных ECSS MySQL AddressBookDB;
ECSS_ADDRESS_BOOK_DB_USER: Пользователь базы данных ECSS MySQL AddressBookDB;
ECSS_ADDRESS_BOOK_DB_PASS: Пароль базы данных ECSS MySQL AddressBookDB;


ECSS_MYSQL_CHARSET: Кодировка баз данных;
BEARER_TOKEN_PRIVATE_KEY: Приватный ключ для подписи JWT токенов;
AUTH_TOKEN_ISSUER: URL сервера аутентификации(Keycloak) в формате https://my-elph-proxy.org/elph/auth/realms/my-elph-domain;


ELPH_PROXY: Адрес хоста Elph Proxy;

ECSS_USE_ELPH_API: Использовать для запросов в базу данных ECSS-10 Elph-API. С версии ECSS-10 3.16 необходимо установить переменную в значение true. На версиях до 3.16 используйте значение false;

ECSS_ELPH_API_URL: Адрес для подключения к ECSS Elph API;

DISPLAY_NAME_SOURCE: Источник отображаемых имен в журнале вызовов: ssw | keycloak;

KEYCLOAK_ENDPOINT: Адрес keycloak. Используется при DISPLAY_NAME_SOURCE=keycloak;

KEYCLOAK_REALM: Realm keycloak. Используется при DISPLAY_NAME_SOURCE=keycloak;

KEYCLOAK_CLIENT_ID: ClientID клиента в keycloak. По умолчанию chat-server-sync;

KEYCLOAK_CLIENT_SECRET: Client Secret в keycloak. Чтобы узнать значение, перейдите в keycloak → выберите ваш realm → Clients → chat-server-sync → Credentials → Client Secret.

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

docker compose up -d

При использовании самоподписанных сертификатов необходимо добавить переменную NODE_TLS_REJECT_UNAUTHORIZED со значением "0" в docker-compose.yaml в блок environment сервиса call-history (располагается по пути ~/ecss-call-history/stable/docker-compose.yaml).

services:
  #####################################################
  # call-history
  #####################################################
  call-history:
    restart: ${RESTART_POLICY}
    image: ${DOCKER_REPO}/ecss/ecss-call-history/call-history:${TAG}
    environment:
      NODE_TLS_REJECT_UNAUTHORIZED: "0"
...
*Остальной docker-compose.yaml файл*


  • Нет меток