Рисунок 1. Основной вариант использования, каждый сервис на отдельном хосте: VoIP_monitor Master/Slave-s/UI/Install_Server
Возможные варианты конфигурации VoIP_monitor:
Рисунок 2. Совмещение на одном хосте VoIP_monitor Master+UI
Рисунок 3. Совмещение на одном хосте VoIP_monitor Install Server+Master+UI
Рисунок 4. VoIP Monitor slave размещен на SSW
Подготовка Install Server
После установки ОС скачайте последний архив стабильной версии:
wget https://s3.eltex-co.ru/shared/voipmonitor-ansible/stable/voipmonitor-deploy-latest.tar.gz
Разархивировуйте и перейдите в директорию voipmonitor-deploy:
tar -xzvf voipmonitor-deploy-*.tar.gz && cd voipmonitor-deploy/
~/voipmonitor-deploy$ ll total 48 drwxrwxr-x 5 abf abf 4096 янв 23 05:03 ./ drwxr-x--- 5 abf abf 4096 янв 27 08:55 ../ -rw-rw-r-- 1 abf abf 269 янв 23 05:03 ansible.cfg -rw-rw-r-- 1 abf abf 1523 янв 23 05:03 check-python-playbook.yml drwxrwxr-x 4 abf abf 4096 янв 23 05:03 inventory/ -rw-rw-r-- 1 abf abf 1869 янв 23 05:03 Makefile -rw-rw-r-- 1 abf abf 595 янв 23 05:03 playbook.yml -rw-rw-r-- 1 abf abf 12150 янв 23 05:03 README.md drwxr-xr-x 6 abf abf 4096 янв 23 05:03 roles/ drwxrwxr-x 2 abf abf 4096 янв 23 05:03 scripts/
Установите утилиты make и sshpass:
sudo apt-get install make sshpass
Подготовка к установке сервисов
В примерах используются:
IP-адреса серверов:
- VoIP_Monitor Install Server 10.0.20.58
- VoIP_Monitor UI 10.0.20.59
- VoIP_Monitor Master 10.0.20.53
- VoIP_Monitor Slave 10.0.20.54
- SSW ecss1 10.0.20.51
- SSW ecss2 10.0.20.52
Конфигурация хостов и параметров подключения
Развертывание хостов VoIP_Monitor Master/Slave/UI выполняется через конфигурационный файл ./inventory/hosts.ini. Для его создания запустите скрипт:
Потребуется указать IP-адреса серверов VoIP_Monitor Master/Slave/UI, а также общее количество серверов master+slaves.
Примеры:
1. В случае, если slave-сенсор устанавливается локально на ноды ECSS10, а UI и master вынесены на отдельный хост — необходимо указать три сервера.
2. Один из вариантов развертывания продукта — настройка зеркалирования траффика с одного или нескольких АТС (к примеру, с нод ECSS10 и SMG) на один master-сенсор. При таком варианте необходимо указать один сервер.
3. В случае, если в схеме с зеркалированием планируется более одного сенсора, например, если траффик с ECSS10 зеркалируется на один хост, а траффик с SMG — на другой и т. д., то необходимо указать число отдельно вынесенных slave-сенсоров + один центральный обработчик master.
make init-hosts
В момент выполнения команды "make init-hosts" ОС на серверах VoIP_Monitor Master/Slave/UI должна быть установлена и сконфигурирована, сервера должны быть доступны в сети.
При установке сервиса на локальный хост (Install Server также является VoIP_Monitor Master/Slave/UI) необходимо указывать внешний IP машины, а не 127.0.0.1.
При установке сервиса VoIP_Monitor Master и UI на одном хосте необходимо указывать одинаковый IP-адрес для обоих сервисов.
При выполнении команды make init-hosts необходимо ввести логин и пароль для пользователя, который существует на всех серверах/виртуальных машинах, где выполняется установка VoIPmonitor Core/UI. Install server также должен иметь доступность по SSH до всех ранее упомянутых серверов.
~/voipmonitor-deploy$ make init-hosts === Hosts configuration === Enter count of VoIPmonitor Core hosts (includes master and slaves): 2 Enter IP VoIPmonitor Core MASTER: 10.0.20.53 Enter IPs for VoIPmonitor Core SLAVEs (1 hosts): Slave 1 IP: 10.0.20.54 Enter IP VoIPmonitor UI: 10.0.20.59 Enter username for SSH-connection to hosts (default: ecss): abf Enter password for SSH-connection to hosts (default: password): === Checking SSH & sudo access on all hosts === Checking host 10.0.20.53... 10.0.20.53 OK Checking host 10.0.20.54... 10.0.20.54 OK Checking host 10.0.20.59... 10.0.20.59 OK Inventory successfully created: ./inventory/hosts.ini
Voip Monitor Core hosts в данном случае обозначает количество хостов в инсталляции Voip Monitor, на которых установлены сенсоры; не имеет отношения к core в терминологии продукта ECSS10.
cat ./inventory/hosts.ini [voipmonitor:children] voipmonitor_core voipmonitor_ui [voipmonitor:vars] ansible_port=22 ansible_user=******* ansible_password=******* # ========================= # VoIPmonitor Core # ========================= [voipmonitor_core:children] voipmonitor_core_master voipmonitor_core_slave [voipmonitor_core_master] core-01 ansible_host=10.0.20.53 [voipmonitor_core_slave] core-02 ansible_host=10.0.20.54 # ========================= # VoIPmonitor UI # ========================= [voipmonitor_ui] ui ansible_host=10.0.20.59
Конфигурация сервисов
Конфигурация сервисов выполняется через переменные Ansible. Основная конфигурация задаётся в файле ./inventory/group_vars/voipmonitor.yml.
voipmonitor:
docker:
update_config: false
version: "1.3"
mysql:
root_password: "password"
voipmonitor_password: "password"
port: 3307
ui_host:
domain_name: ""
api:
http_port: 4000
client:
http_port: 80
https_port: 443
keycloak:
http_port: 8080
admin_password: "password"
master_sniffer:
manager_port: 5029
sensor:
id: "1"
port: "60024"
Конфигурация VoIPmonitor UI полностью осуществляется в файле voipmonitor.yml.
Для серверов VoIPmonitor Core основная конфигурация прописывается в файле voipmonitor.yml.
В директории ./inventory/host_vars для серверов VoIPmonitor Core "Master" и "Slave" в файлах → ./inventory/host_vars/core-01.yml и ./inventory/host_vars/core-02.yml соответственно дополнительно укажите, какой именно интерфейс нужно слушать (по умолчанию система использует интерфейс "eth0").
cat ./inventory/host_vars/core-01.yml voipmonitor_core_voip_listen_interfaces: "eth0"
Замените на реальный интерфейс системы:
nano ./inventory/host_vars/core-01.yml
cat ./inventory/host_vars/core-01.yml voipmonitor_core_voip_listen_interfaces: "enp0s8" cat ./inventory/host_vars/core-02.yml voipmonitor_core_voip_listen_interfaces: "enp0s8"
Подготовка окружения Install Server и проверка версии Python на целевых хостах (VoIPmonitor Master/Slave/UI)
Во время выполнения:
- на локальной системе проверяется и, в случае отсутствия, устанавливается актуальный Docker;
- выполняется docker login (учётные данные запрашиваются у менеджера проекта);
- на указанных хостах проверяется версия Python и доустанавливается версия 3.7 для корректной работы Ansible.
Установка Python выполняется параллельно существующей версии и не влияет на текущую конфигурацию системы: ссылка /usr/bin/python3 не изменяется, поэтому существующие приложения, использующие установленную на системе версию Python, продолжают работать без изменений.
Выполните подготовку окружения на Install Server к установке:
make configure
В момент установки вы увидите такое сообщение системы «в примере пользователь "*******"» — требуется переподключится к Install Server.
Пользователь был добавлен в группу "docker". Требуется переподключится (logout/login) к системе с новыми полномочиями после добавления пользователя в новую группу docker. Повторите команду make configure для продолжения конфигурации.
Please, relogin in bash for access to docker group: $ su - *******Notice! If you already do relogin and keep seeing this message try open new terminal session(or reconnect ssh).make[1]: *** [Makefile:27: docker-setup-local] Error 1make: *** [Makefile:31: configure] Error 2
На вопрос: "Enter docker login for hub.eltex-co.ru:" требуется указать пользователя/пароль, полученные у менеджера проекта.
make configure Configure for installing [sudo] password for abf: User abf in docker group Docker installed Enter docker login for hub.eltex-co.ru: ********* Enter docker password: ********* WARNING! Your credentials are stored unencrypted in '/home/abf/.docker/config.json'. Configure a credential helper to remove this warning. See https://docs.docker.com/go/credential-store/ Login Succeeded Unable to find image 'hub-ims.eltex-co.ru/supplementary/ecss-deploy-image/ecss-deploy-image:0.1.20' locally 0.1.20: Pulling from supplementary/ecss-deploy-image/ecss-deploy-image 943845cbb332: Download complete 63e5bc7682b8: Pull complete 0d9d9d08ef52: Pull complete 1812eb083c8a: Pull complete c5c1f07a6611: Pull complete ff6a22ad3b08: Pull complete 8561f0943791: Pull complete 359b2e40f8b3: Downloading [==================================> ] 309.3MB/445.9MB 51de97fb9b56: Download complete 6393e842ef56: Download complete . . . PLAY RECAP ********************************************************************* core-01 : ok=10 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 core-02 : ok=10 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ui : ok=10 changed=6 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Установка Docker на целевых хостах (VoIPmonitor Master/Slave/UI)
Выполните команду:
make docker
~/voipmonitor-deploy$ make docker Run ansible action: setup docker PLAY [Setup Docker] ************************************************************ TASK [Gathering Facts] ********************************************************* ok: [core-01] ok: [core-02] ok: [ui] TASK [Install python3-requests] ************************************************ ok: [core-01] ok: [ui] ok: [core-02] . . . PLAY RECAP ********************************************************************* core-01 : ok=18 changed=5 unreachable=0 failed=0 skipped=5 rescued=0 ignored=1 core-02 : ok=18 changed=5 unreachable=0 failed=0 skipped=5 rescued=0 ignored=1 ui : ok=18 changed=5 unreachable=0 failed=0 skipped=5 rescued=0 ignored=1 Playbook run took 0 days, 0 hours, 1 minutes, 18 seconds
Установка
Установку можно запустить как для всех хостов одновременно, так и отдельно для группы core или ui.
В первом случае используйте команду make install.
Во втором — make install core → установка только voipmonitor-core или make install ui → установка только voipmonitor-ui.
Для корректного отображения времени начала/окончания звонков в VoIP Monitor на "Install Server" время должно быть установлено в UTC, а не локальный часовой пояс.
make install
~/voipmonitor-deploy$ make install Run ansible action: install for all PLAY [Setup Docker] ************************************************************ PLAY [Deploy VoIPmonitor Core] ************************************************* TASK [Gathering Facts] ********************************************************* ok: [core-01] ok: [core-02] TASK [voipmonitor_core : Validating arguments against arg spec 'main' - Main entry point for the voipmonitor_core role] *** ok: [core-01] ok: [core-02] . . . PLAY [Deploy VoIPmonitor UI] *************************************************** TASK [Gathering Facts] ********************************************************* ok: [ui] TASK [voipmonitor_ui : Validating arguments against arg spec 'main' - Main entry point for the voipmonitor_ui role] *** ok: [ui] . . . PLAY RECAP ********************************************************************* core-01 : ok=21 changed=8 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 core-02 : ok=21 changed=8 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 ui : ok=15 changed=5 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
После установки на целевых хостах будут созданы директории /etc/voipmonitor-core и /etc/voipmonitor-ui. Они защищены от просмотра. Доступ до них возможен только от пользователя root.
После установки войдите на сервер VoIP_Monitor_UI https://ipadd_ui. в примере https://10.0.20.59.
- пользователь: voipmonitor
- пароль: voipmonitor
При успешном логировании установку VoIP Monitor можно считать законченной, приступайте к настройке и кастомизации.

