Установка оркестратора и его компонентов
В подразделе представлена вся необходимая информация для установки и настройки оркестратора и его компонентов:
Server Orchestration
Redis for Server Orchestrator
Nginx for Server Orchestrator
MySQL for Server Orchestrator
Tarantool for Server Orchestrator (Matcher Service)
Push1st for Server Orchestrator
ClickHouse for Server Orchestrator
1. Установка компонентов и зависимостей:
redis-server
– утилита, для создания виртуального окруженияmysql-server mysql-client python3-dev default-libmysqlclient-dev build-essential
– MySQL и его зависимостиnginx
– HTTP-сервер и обратный прокси-сервер (если необходимо)python3-virtualenv
– библиотека для создания виртуального окруженияВерсия ClickHouse – 22.3.19.6
#!/bin/bash
sudo apt update && sudo apt install -y apt-transport-https \
ca-certificates \
dirmngr \
redis-server \
mysql-server \
mysql-client \
python3-dev \
default-libmysqlclient-dev \
build-essential \
nginx \
python3-virtualenv \
python3-pip
GNUPGHOME=$(mktemp -d)
sudo GNUPGHOME="$GNUPGHOME" gpg --no-default-keyring --keyring /usr/share/keyrings/clickhouse-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 8919F6BD2B48D754
sudo rm -r "$GNUPGHOME"
sudo chmod +r /usr/share/keyrings/clickhouse-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client
sudo service clickhouse-server start
2. Произведите клонирование проекта оркестратора из репозитория (доступ к репозиторию предоставляется по запросу пользователя)
#!/bin/bash
git clone git@bitbucket.org:<company>/<xxxx>-analytics-orchestrator-server.git /opt/analytics-orchestrator-server
git clone --branch <version> https://<company>_jenkins:d8HD3xMVeRffqUR2UNn4@bitbucket.org/<company>/<xxxx>-analytics-orchestrator-server.git /opt/analytics-orchestrator-server
3. В корне проекта создайте виртуальное окружение venv
и активируйте его
#!/bin/bash
cd /opt/analytics-orchestrator-server
virtualenv venv
source venv/bin/activate
4. Сделайте установку зависимых пакетов pip install -r requirements.txt
#!/bin/bash
cd /opt/analytics-orchestrator-server
pip install -r requirements.txt
5. Загрузите схему базы, схема лежит в server/management/events_collector/db/events_extracted.sql:
#!/bin/bash
clickhouse-client -n < /opt/analytics-orchestrator-server/server/management/events_collector/db/events_extracted.sql
6. Создайте пользователя orchestrator
в clickhouse, для этого нужно отредактировать конфигурационный файл /etc/clickhouse-server/users.d/orchestrator.xml
6.1. Измените параметр listen_host
на 0.0.0.0
для clickhouse-server
в файле /etc/clickhouse-server/config.xml
<!-- Listen specified address.
Use :: (wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 from everywhere.
Notes:
If you open connections from wildcard address, make sure that at least one of the following measures applied:
- server is protected by firewall and not accessible from untrusted networks;
- all users are restricted to subset of network addresses (see users.xml);
- all users have strong passwords, only secure (TLS) interfaces are accessible, or connections are only made via TLS interfaces.
- users without password have readonly access.
See also: https://www.shodan.io/search?query=clickhouse
-->
<listen_host>0.0.0.0</listen_host>
6.2. Измените параметр timezone
на UTC
, для этого нужно добавить конфигурационный файл /etc/clickhouse-server/config.d/timezone.xml
<clickhouse>
<timezone>UTC</timezone>
</clickhouse>
7. Проверьте работу сервисов
systemctl restart clickhouse-server.service
systemctl status clickhouse-server.service
8. Установите push1st
и необходимые компоненты/зависимости
#!/bin/bash
# Add repository key
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9A4D3B9B041D12EF0D23694D8222A313EDE992FD
# Add repository to source list and adjust auth
echo "deb [arch=amd64] https://nexus.<company>.com/repository/ubuntu-universe/ universe main" | sudo tee /etc/apt/sources.list.d/push1st.list
echo "machine nexus.<company>.com/repository login public password public" | sudo tee /etc/apt/auth.conf.d/nexus.<company>.com.conf
sudo apt update && sudo apt install -y push1st
# возможны проблемы с версией push1st
# additional dependencies (If necessary, this is optional)
sudo luarocks install lua-cjson2
9. Настройте сервис push1st
#!/bin/bash
nano /opt/<company>/push1st/server.yml
10. Настройте интеграции с оркестратором видеоаналитики
#!/bin/bash
nano /opt/<company>/push1st/apps/orchestrator.yml
11. Запустите сервис и его проверьте его работу
#!/bin/bash
systemctl restart push1st.service
systemctl status push1st.service
12. Установите Tarantool версии 2.8
#!/bin/bash
curl -L https://tarantool.io/XWleucj/release/2.8/installer.sh | bash
sudo apt update && sudo apt install -y tarantool
13. Проверьте работу сервисов
#!/bin/bash
systemctl status tarantool
В директории tarantool_app
лежит файл: tarantool_service.lua
. Скопируйте его в директорию /etc/tarantool/instances.enabled
:
sudo cp tarantool_app/tarantool_service.lua /etc/tarantool/instances.enabled/tarantool_service.lua
В скопированном файле укажите путь к рабочей директории с lua-скриптами (параметр work_dir
):
nano /etc/tarantool/instances.enabled/tarantool_service.lua
box.cfg {
listen = 3301,
background = true,
log = '/var/log/tarantool/vectors.log',
work_dir = '/opt/analytics-orchestrator-server/tarantool_app'
}
local app = require('app').run()
Далее запустите сервис:
sudo tarantoolctl start tarantool_service.lua
Проверьте работу сервиса:
sudo tarantoolctl status tarantool_service
В директории /var/log/tarantool
лежит файл с логами (vectors.log
)
14. В MySQL создайте базу данных, пользователя, настройте права доступа:
#!/bin/bash
mysql -u root -e "CREATE DATABASE orchestrator_db CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"
mysql -u root -e "CREATE USER IF NOT EXISTS 'orchestrator'@'%' IDENTIFIED BY '456redko';"
mysql -u root -e "GRANT ALL PRIVILEGES ON orchestrator_db.* TO 'orchestrator'@'%';"
mysql -u root -e "FLUSH PRIVILEGES;"
#если конетйнерная инсталяция и база для VMS и Analytics одна и та же, то можно ее создать
из контейнера с бэкендом следующей командой:
docker exec <backend-container-name-or-id> mysql --protocol=TCP -u root -pmysql -h mysql-server --execute="CREATE DATABASE orchestrator_db CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"
15. Из файла example.env
сделайте копию и назовите ее .env
. В этом файле отредактируйте настройки для MySQL, Redis и Tarantool.
#!/bin/bash
cd/opt/analytics-orchestrator-server
cp example.env .env
16. Создайте папку логов для проекта /var/log/django
#!/bin/bash
mkdir -p /var/log/django
17. Для запуска миграций, создания учетной записи для доступа к интерфейсу администрирования оркестратора и загрузки фикстур, запустите:
#!/bin/bash
cd /opt/analytics-orchestrator-server
source venv/bin/activate
python manage.py seed
18. Настройте интерфейс администрирования оркестратора
#!/bin/bash
cd /opt/analytics-orchestrator-server
# генерация фронтенда для интерфейса администрирования оркестратора
python manage.py collectstatic
Результат выполнения последней команды – путь к папке, где лежит фронтенд оркестратора. Этот путь нужно указать в настройках nginx (django-backend-nginx
) – ШАГ 21
Доступ к интерфейсу администрирования оркестратора: http://<IP-orchestrator-server>/admin/
. По умолчания логин и пароль – root/root.
19. В корне проекта есть папка deploy
, в которой находятся 5 сервисов. Сервисы необходимо отредактировать, указав в них корректные пути к проекту и окружению.
20. После этого сервисы необходимо положить в /etc/systemd/system/
и выполнить команду systemctl daemon-reload
#!/bin/bash
ln -s /opt/analytics-orchestrator-server/deploy/celery.service /etc/systemd/system/celery.service
ln -s /opt/analytics-orchestrator-server/deploy/django.service /etc/systemd/system/django.service
ln -s /opt/analytics-orchestrator-server/deploy/stats_processor.service /etc/systemd/system/stats_processor.service
ln -s /opt/analytics-orchestrator-server/deploy/matcher.service /etc/systemd/system/matcher.service
ln -s /opt/analytics-orchestrator-server/deploy/events_collector.service /etc/systemd/system/events_collector.service
systemctl daemon-reload
systemctl enable stats_processor.service
systemctl start stats_processor.service
systemctl enable celery.service
systemctl start celery.service
systemctl enable django.service
systemctl start django.service
systemctl enable matcher.service
systemctl start matcher.service
systemctl enable events_collector.service
systemctl start events_collector.service
21. Далее, в этой же папке deploy лежит конфигурационный файл для nginx, его необходимо перенести в /etc/nginx/sites-available/
, а затем сделать ссылку на этот конфигурационный файл в /etc/nginx/sites-enabled/
. Также необходимо удалить файл /etc/nginx/sites-enabled/default
с настройками по умолчанию. После этого нужно перезагрузить сервис nginx
.
#!/bin/bash
cp /opt/analytics-orchestrator-server/deploy/django-backend-nginx /etc/nginx/sites-available/
ln -s /etc/nginx/sites-available/django-backend-nginx /etc/nginx/sites-enabled/django-backend-nginx
systemctl restart nginx.service
22. Проверьте работу сервисов
systemctl status mysql
systemctl status redis-server
systemctl status stats_processor.service
systemctl status events_collector.service
systemctl status django.service
systemctl status celery.service
systemctl status matcher.service
systemctl status nginx
tarantoolctl status tarantool_service
Клиент оркестратора
Orchestrator Client
Supervisor
Клиент оркестратора должен устанавливаться там же, где стоят исполняемые модули аналитики (т.к. запуск исполняемых файлов осуществляется через супервизор; также это пока что блокирует запуск клиента аналитики в контейнере).
1. Установка компонентов и зависимостей. Установите supervisor
(v. 4.2.2). Подходящий вариант установки можно выбрать тут. python3-virtualenv
– библиотека для создания виртуального окружения.
#!/bin/bash
sudo apt update && sudo apt install -y apt-transport-https ca-certificates dirmngr python3-pip python3-virtualenv supervisor
2. Сделайте клонирование клиента из репозитория (доступ к репозиторию предоставляется по запросу пользователя)
#!/bin/bash
git clone --branch release/<version> git@bitbucket.org:<company>/<xxxx>-analytics-orchestrator-client.git /opt/analytics-orchestrator-client
git clone --branch release/<version> https://<company>_jenkins:d8HD3xMVeRffqUR2UNn4@bitbucket.org/<company>/<xxxx>-analytics-orchestrator-client.git /opt/analytics-orchestrator-client
3. В корне проекта создайте виртуальное окружение venv
и активируйте его
#!/bin/bash
cd /opt/analytics-orchestrator-client
virtualenv venv
source venv/bin/activate
4. Из активного окружения venv
выполните установку зависимых пакетов pip install -r requirements.txt
#!/bin/bash
cd /opt/analytics-orchestrator-client
pip install -r requirements.txt
5. В файле settings.py
необходимо указать корректный url
для подключения к push1st по websocket для отправки статистики
6. В папке deploy находится сервис or-client.service
. Сервисы необходимо отредактировать, указав в них корректные пути к проекту и окружению (другие настройки – по необходимости).
#!/bin/bash
nano /opt/analytics-orchestrator-client/deploy/or-client.service
7. После изменения файлов сервиса необходимо сделать ссылки на сервисы и скопировать их в
/etc/systemd/system/
, потом выполнить команду systemctl daemon-reload
и запустить сервисы.
#!/bin/bash
ln -s /opt/analytics-orchestrator-client/deploy/or-client.service /etc/systemd/system/or-client.service
systemctl daemon-reload
systemctl enable or-client.service
systemctl start or-client.service
8. Проверьте работу сервисов
#!/bin/bash
systemctl status or-client.service
systemctl status supervisor.service
Исполняемый модуль для аналитики
VSaaS video analytics bin
VSaaS video analytics models
Клиент оркестратора должен устанавливаться там же, где установлен исполняемый модуль аналитики.
ВАЖНО!!! Для корректной работы исполняемый модуль аналитики и его конфигурационные файлы должны располагаться в определенном месте, а именно:
/opt/video-analytics/<xxxx>-video-analytics-cpu.out
– сам исполняемый модуль/opt/video-analytics/config
– конфигурационные файлы
1. Сделайте клонирование исполняемого модуля аналитики из репозитория (доступ к репозиторию предоставляется по запросу пользователя) в папку /opt/
#!/bin/bash
git clone git@bitbucket.org:<company>/xxxx-video-analytics-bin.git /opt/xxxx-video-analytics-bin
git clone https://<company>_jenkins:d8HD3xMVeRffqUR2UNn4@bitbucket.org/<company>/xxxx-video-analytics-bin.git /opt/xxxx-video-analytics-bin
2. Сделайте клонирование модели для аналитики из репозитория (доступ к репозиторию предоставляется по запросу пользователя) в папку /opt/
#!/bin/bash
git clone git@bitbucket.org:<company>/xxxx-video-analytics-models.git /opt/xxxx-video-analytics-models
git clone https://<company>_jenkins:d8HD3xMVeRffqUR2UNn4@bitbucket.org/<company>/xxxx-video-analytics-models.git /opt/xxxx-video-analytics-models
3. Из корня проекта исполняемого модуля аналитики запустите скрипт install.sh
#!/bin/bash
cd /opt/xxxx-video-analytics-bin
bash install.sh
Результатом выполнения скрипта будет директория /opt/video-analytics/
. Там будут находиться сам исполняемый модуль, модели, конфигурации и необходимые зависимости.
4. Отредактируйте настройки конфигурации для запуска исполняемого модуля аналитики. Конфигурации лежат в папке /opt/video-analytics/config
, нужно изменить параметр events_endpoint
на url вебкоскета push1st во всех .ini файлах.
sed -i -e "s/10.1.16.238:6001/<push1st_ip_address>:6003/" /opt/video-analytics/config/*
При необходимости отредактируйте диапазон ядер, на которых будут запускаться бинари:
sed -i -e "s/cores.*/cores = <cores_range>/" /opt/video-analytics/config/*
Проверка функционирования
Проверка возможности подключения к MySQL пользователем orchestrator
Выполните команду:
mysql -u orchestrator -p456redko orchestrator_db -e "SELECT * FROM server_server;"
Проверка возможности подключения к ClickHouse пользователем orchestrator
На сервере аналитики (или в соответствующем контейнере) выполните команду:
clickhouse-client --host localhost --user orchestrator --password orchestrator --query "SELECT * FROM <xxxx>.events"
Для проверки доступности событий аналитики со стороны VMS, в контейнере backend выполнить команду:
./artisan ti
AnalyticCaseEvent::count()
Команда выдаст текущее число событий аналитики.
Проверка состояния лицензий аналитики
В интерфейсе администратора перейдите в раздел «Лицензии».
Должны быть числовые значения лицензий.
При проблемах с лицензиями после обновления необходимо проинициализировать локальное хранилище лицензий.
Чтобы это сделать, необходимо удалить все старые лицензии:
Выполните команду
./artisan ti
Выполните команду
License::query()->delete()
Выполните команду
exit
Для проверки доступности лицензий в контейнере VMS выполните:
curl -k -v $ORCHESTRATOR_ENDPOINT/api/license/
Данная проверка предназначена только для определения валидности лицензий и не гарантирует создание кейса аналитики. Для проверки возможности создания кейса аналитики необходимо завести кейс аналитики в интерфейсе пользователя.
Проверка опроса статистики оркестратора
Статистика оркестратора отображается в разделе «Аналитика» в кабинете администратора.
Должны быть числовые значения счетчиков.
Заведение кейса аналитики в интерфейсе пользователя
Подробнее о заведении кейса аналитики см. в разделе «Добавление кейсов аналитики».
При заведении кейса аналитики motion-detect, в логе push1st должны появиться следующие сообщения: