Версия модуля триггеров 17.Х и выше работает только c версией системы ADVANTA 3.23 и выше.
sudo apt update && \ sudo apt install -y postgresql aspnetcore-runtime-6.0 nginx
Версия модуля Триггеров 17.x может корректно работать только с версиями ADVANTA 3.23 и выше.
Начиная с версии 17 модуль Триггеров является многокомпонентным. Каждая компонента должна разворачиваться отдельно.
Перечень компонент:
restart для управляющего Агента.appsettings.json, в соответствии с требуемыми настройками (редактирование конфигурации можно сделать позже, на этапе установки приложения).Подробная настройка БД MS SQL представлена на странице Настройка базы данных MS SQL.
psql, запущенной под админом сервера БД.CREATE USER user_name WITH PASSWORD 'user_password'; ).CREATE DATABASE db_name; ).GRANT ALL PRIVILEGES ON DATABASE db_name TO user_name; ).Advanta/Database/MigrateOnStartup = true в конфигурационных файлах компонентов Сайт и Движок. Последующие запуски могут осуществляться с любым значением данного ключа.Подробная настройка БД PostgreSQL представлена на странице Настройка базы данных PostgreSQL.
su - postgres psql CREATE USER user_tr WITH PASSWORD 'P@ssw0rd'; CREATE DATABASE db_tr; GRANT ALL PRIVILEGES ON DATABASE db_tr TO user_tr;
Веб-приложение Панели управления триггерами
На примере Nginx в ОС Ubuntu 22+ (документация).
sudo service nginx start
nano/etc/nginx/sites-available/advanta_triggers. Заполняем его следующими данными: map $http_connection $connection_upgrade {
"~*Upgrade" $http_connection;
default keep-alive;
}
server {
listen 80;
server_name example.com *.example.com;
location / {
proxy_pass http://127.0.0.1:5000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
listen и server_name указываем корректные данные порта и адреса домена(ов), по которым будет доступно веб-приложение. При необходимости, настройте иные параметры самостоятельно стандартными средствами конфигурирования веб-сервера (например, SSL-шифрование трафика).proxy_pass в разделе location содержит указание на локальный адрес и порт сервера http://127.0.0.1:5000/, на котором будет работать компонент модуля триггеров Сайт после его запуска. Изменяйте данный параметр только при скорректированных параметрах работы компонента Сайт, отличных от установленных по умолчанию. Обеспечьте средствами сервера (например, используя firewall) защиту указанного порта (5000) от доступа к нему извне, т.к. он должен быть доступен только локально для работы приложений в рамках одного сервера.sudo nginx -t
sudo ln -s /etc/nginx/sites-available/advanta_triggers /etc/nginx/sites-enabled/advanta_triggers
sudo nginx -s reload
server_name:listen, указанным в конфигурационном файле веб-сервера, но только после запуска на сервере компонента Сайт (см. далее).В случае, если компонент Сайт Модуля триггеров не запущен или запущен с ошибками, веб-сервер будет сообщать об ошибке 502 «Bad Gateway».
/home/<username>/triggers/ в домашней папке пользователя сервера , под которым планируется запуск приложения. Для размещения файлов компонента можно использовать и любую другую папку на ваш выбор. Главное, чтобы она была доступна запускающему приложение пользователю ОС.Advanta.Triggers.WebClient.dllappsettings.json и находим секцию ConnectionStrings. Меняем в ней тип подключения, адрес SQL-сервера, название БД, логин и пароль пользователя, созданные на этапе настройки Базы данных для модуля триггеров. appsettings.json (см. ниже раздел «Описание настроек Сайта»).dotnet Advanta.Triggers.WebClient.dll
Приложение работает в консольном режиме и может быть остановлено сочетанием клавиш Ctrl+C.
Приложение компонента Сайт должно быть постоянно запущено на сервере для функционирования панели управления в веб-браузере. При необходимости, средствами операционной системы его можно настроить в виде службы с автозапуском и автоматической перезагрузкой в случае сбоев (документация).
В ходе работы компонент Сайт сохраняет журналы своей работы в подпапке рабочего каталога, указанной в файле appsettings.json в разделе Logging/File/BasePath.
Если необходима диагностика, почему не запускается компонент Сайт, то необходимо в файле web.config найти секцию aspNetCore и поменять параметр stdoutLogEnabled на значение true.
Настройки компонента приложения Сайт осуществляются в файле appsettings.json, размещенном в рабочей папке компонента. Так как приложение можно запустить в различных конфигурациях, то в проекте есть несколько файлов типа: appsettings.ConfigurationName.json.
При получении архива для распространения с исполняемыми файлами используется файл с настройками appsettings.json для запуска компонента в режиме Production.
WorkingDirectory – относительный или абсолютный путь, по которому размещается рабочая папка компонента. Необязательный параметр. Значение по умолчанию: "<external>" (относительный путь к рабочей папке от размещения файла appsettings.json).
"Logging": { "File": { "RootPath": "/home/<username>/triggers", "BasePath": "Logs", "LogLevel": { "Default": "Information" } } },
Данный раздел настраивается в соответствии с правилами ведения журнала в .NET Core.
"Logs". Конечный путь до папки с файлами логов будет сформирован объединением путей: [RootPath]/[BasePath]"Default": "Information". Для полного отключения логов работы компонента, необходимо внутри данной секции указать параметр "Default": "None"."RuntimeUser": { // "Token": "your_token", // или "Login": "your_login", "Password": "your_password" }, "Host": "https://your_instance_domain.ru/", "ApiRequestTimeout": 300, //секунд "ObjectsSyncTimeout": 60, //минут
Login и Password, либо параметр Token). Под этим пользователем через API также осуществляется запрос на извлечение данных о типах объектов."Alerts": { "Emails": "admin_email@my_email_hosting.ru; admin_email2@my_email_hosting.ru", "SmtpServer": { "Address": "smtp.my_email_hosting.ru", "Login": "mylogin@my_email_hosting.ru", "Password": "12345", "Port": "587", "UseSSL": "true" } },
В данном разделе указываются параметры подключения к Базе данных Системы ADVANTA к шине обмена сообщениями Rebus.
Вид транспорта и строка подключения к БД ConnectionString должны быть идентичны параметрам, используемым в настройках Системы ADVANTA.
"Rebus": { //Варианты транспорта: "MSSQL", "PostgreSql" "Transport": "PostgreSql", // пример строки подключения для транспорта "MSSQL" //"ConnectionString": "Data Source = SqlServerName;Database=AdvantaRebus;Trusted_Connection=True;MultipleActiveResultSets=true", // пример строки подключения для транспорта "PostgreSql" "ConnectionString": "User ID=username;Password=userpwd;Host=localhost;Port=5432;Database=AdvantaRebus;", "InputQueueName": "bus_triggers_queue", // "Bus_TriggersInputQueue" - для транспорта "MSSQL" "SubscriptionsTableName": "Bus_TriggersInputQueue_Subscriptions" "PostgreSqlMessagesTableName": "bus_triggersinputqueue" //используется только для транспорта "PostgreSql" }
"MSSQL" и "PostgreSql". Если параметр не указан или пустой, то по умолчанию используется значение "MSSQL". Возможен также вариант "Emulator", который используется для запуска приложения без привязки к Rebus."MSSQL" по умолчанию будет "Bus_TriggersInputQueue", для "PostgreSql" по умолчанию будет "bus_triggers_queue"."Bus_TriggersInputQueue_Subscriptions"(должно совпадать с настройками публикующего сервиса)."PostgreSql" транспорта. По умолчанию будет использоваться "bus_triggersinputqueue" (должно совпадать с настройками публикующего сервиса). Для "MSSQL" этот параметр игнорируется, так как для "MSSQL" Rebus автоматически использует (и при необходимости создаёт) таблицу с именем, совпадающим с названием входящей очереди сообщений (InputQueueName).В этом разделе указываются настройки подключения к собственной служебной Базе данных модуля Триггеров, отдельной от БД Системы ADVANTA.
"Database": { //Варианты провайдеров: "MSSQL", "PostgreSql" "Provider": "PostgreSql", // пример строки подключения для провайдера "MSSQL" //"ConnectionString": "Data Source = SqlServerName;Database=AdvantaTriggers;Trusted_Connection=True;MultipleActiveResultSets=true", // пример строки подключения для провайдера "PostgreSql" "ConnectionString": "User ID=username;Password=userpassword;Host=localhost;Port=5432;Database=AdvataTriggers;", "MigrateOnStartup": "true" },
"MSSQL" и "PostgreSql". Если параметр не указан или пустой, то по умолчанию используется значение "MSSQL"."Memory". В этом варианте СУБД использоваться не будет, а все данные модуля будут храниться в памяти до завершения работы приложения. Данный режим удобно использовать в процессе разработки и тестирования."true" или "false". Параметр необязательный. Значение по умолчанию "false". Флаг "true" может потребоваться, только если есть возможность обновления и развёртывания схемы данных через миграции (например, во время разработки или создания локальной базы). Если значение флага установлено в “true”, пользователю базы данных потребуются права на создание, изменение, удаление таблиц и индексов."Module": { "InstanceName": "My Triggers Module" },
Данный раздел настраивается только в том случае, если требуется часть конфиденциальных строк получать через HashiCorp Vault.
https:⁄⁄vault.yourcompany.ru:8200.dbPasswords.
Ссылка на секрет в Vault могут прописываться для любых значений строковых параметров в любых разделах файла конфигурации (кроме раздела HashiCorpVault) в формате: {$your_hashicorp_vault_key$}.
Консольное приложение, которое обрабатывает события Системы ADVANTA, поступающие в Модуль триггеров через шину данных Rebus.
Исполняемые файлы Движка размещаются в подпапку Engine общего дистрибутива при публикации всех компонентов Модуля триггеров.
Содержимое папки Engine может быть целиком перенесено в любую другую папку сервера (например, в папку /home/<username>/triggers_engine - в имени каталогов рекомендуется использовать буквы только в нижнем регистре).
Движок является консольным приложением ОС Linux, которое запускается из рабочей папки данного компонента командой:
dotnet Advanta.Triggers.Engine.dll
Движок должен располагаться на том же хосте (сервере), что и компонент Сайт.
Движок может быть запущен вручную либо передан под управление Агенту.
Одному Сайту должен соответствовать один экземпляр работающего Движка.
Настройки компонента Движок осуществляются в отдельном файле appsettings.json, который расположен в корне рабочей папки данного компонента. Так как приложение можно запустить в различных конфигурациях, то в проекте есть несколько файлов типа: appsettings.ConfigurationName.json. При получении архива для распространения с исполняемыми файлами используется файл с настройками appsettings.json для запуска компонента Движок в режиме "Production".
Для запуска Движка необходимо использовать те же настройки файла appsettings.json, которые используются для запуска компонента Сайт. Отличаться может только необязательный раздел Logging. При отсутствии в настройках данного раздела журналы событий компонента создаются по умолчанию в подкаталоге logs рабочей папки компонента.
В случае несовпадения ключевых настроек в разделах "Database", "Advanta", "Rebus" конфигурационных файлов appsettings.json Движка и Сайта, они не смогут «найти» друг друга в процессе инициализации канала коммуникации по UDP-протоколу.
Начиная с версии Модуля триггеров 18.4 в настройках Движка может использоваться дополнительный опциональный раздел "Integration", отвечающий за его подключение к очереди сообщений RabbitMQ.
"Integration": { "RabbitMQ": { "Endpoints": [ { "EndpointName": "publisher", // Название точки подключения "EndpointMode": "Publish", // Варианты: Publish, Consume "ConnectionString": null, // Необходимо указать либо ConnectionString, либо Connection "Connection": { // Если указаны оба параметра, то будет использован ConnectionString "Host": "localhost", "Port": 5672, "VirtualHost": null }, "Channel": { "Exchange": "test", "Queue": "test" }, "RoutingKey": null, "ReconnectTimeoutInMinutes": 1 }, { "EndpointName": "consumer", // Название точки подключения "EndpointMode": "Consume", // Варианты: Publish, Consume "ConnectionString": null, // Необходимо указать либо ConnectionString, либо Connection "Connection": { //Если указаны оба параметра, то будет использован ConnectionString "Host": "localhost", "Port": 5672, "VirtualHost": null }, "Channel": { "Exchange": "test", "Queue": "test" }, "RoutingKey": null, "ReconnectTimeoutInMinutes": 1 } ] } }
Приложение для автоматического перезапуска Движка (Engine) модуля триггеров при обновлении связанной с ним Системы ADVANTA.
Исполняемые файлы Агента размещаются в подпапку Agent общего дистрибутива при публикации всех компонентов Модуля триггеров. Содержимое папки Agent может быть целиком перенесено в любую другую папку сервера (например, в папку /home/<username>/triggers_agent).
По умолчанию Агент сконфигурирован как консольное приложение ОС Linux, которое запускается из рабочей папки данного компонента:
dotnet Advanta.Triggers.Agent.dll
Запущенный такой командой Агент по умолчанию выводит логи своей работы и в консоль, из которой он запущен, и в файл журнала.
Для прекращения работы Агента необходимо в консоли с запущенным приложением нажать Ctrl+C.
Для развёртывания Агента как службы можно воспользоваться инструкцией, чтобы обеспечить автоматический запуск компонента при загрузке Системы и перезапуск в случае сбоев приложения.
Для запуска Агента в режиме вывода логов только в файл необходимо запустить приложение с ключом -console.
dotnet Advanta.Triggers.Agent.dll -console
При старте Агент будет пытаться запустить все экземпляры Движков (Engine), перечисленные в разделе "ModulesPaths" файла настроек appsettings.json, которая расположена в корне рабочей папки компонента Агент.
Настройки приложения осуществляются в файле appsettings.json. Так как приложение можно запустить в различных конфигурациях, то в проекте несколько файлов типа: appsettings.ConfigurationName.json. При получении архива для распространения с исполняемыми файлами используется файл с настройками appsettings.json.
Данный раздел настраивается в соответствии с правилами ведения журнала в .NET Core.
ModulesPaths – массив относительных или абсолютных путей, по которым размещаются ра-бочие папки управляемых Engine модулей. Данный раздел в файле appsettings.json мониторится агентом динамически, поэтому пути до управляемых Engine могут быть прописаны как до старта, так и после старта агента.
При добавлении очередного пути, агент пытается определить есть ли Engine по этому пути. Если есть, то определяет стартовал ли Engine, если нет, то стартует его.
При удалении пути агент посылает соответствующему Engine модулю команду shutdown.
Для получения информации по текущему состоянию агента, необходимо в папку агента положить файл “status” без расширения. Содержимое файла не читается. После того как агент обнаружит файл, он сформирует информацию о текущем состоянии движков и создаст или обновит файл output.txt. Информация о статусе так же будет записана в лог. Файл “status” будет автоматически удалён.
“ Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted.”