ServiceControl — это мозг мониторинга в рамках конкретной сервисной платформы, которая включает в себя NServiceBus и инструменты для создания, мониторинга и отладки распределенных систем. ServiceControl собирает данные о каждом сообщении, проходящем через систему (очередь аудита), ошибках (очередь ошибок), а также дополнительную информацию о сагах, контрольных сигналах конечных точек и пользовательских проверках (очередь управления). Затем информация предоставляется ServicePulse и ServiceInsight через HTTP API и уведомления SignalR.
Дополнительную информацию см. в документации ServiceControl.
ServiceControl, ServiceControl.Audit и ServiceControl.Monitoring можно запустить/отладить локально, выполнив следующие действия:
app.config
типа экземпляра, который необходимо запустить/отладить, чтобы выбрать, какой транспорт и постоянство использовать.Демо-видео, показывающее, как его настроить, доступно на специальном канале YouTube:
Все контейнеры создаются в каждой сборке и помещаются в реестр контейнеров GitHub, где к различным типам экземпляров можно получить доступ по их именам и запустить их локально.
Если экземпляр запускается впервые, он должен настроить необходимую инфраструктуру. Для этого, как только экземпляр будет настроен на использование выбранного транспорта и хранилища, запустите его в режиме настройки. Это можно сделать с помощью профиля запуска Setup {instance name}
, который определен в файле launchSettings.json
каждого экземпляра. При запуске в режиме настройки экземпляр запускается как обычно, выполняет процесс установки и завершает работу. На этом этапе экземпляр можно запустить в обычном режиме, используя ненастраиваемый профиль запуска.
Чтобы облегчить локальное тестирование, транспорт обучения был добавлен в список доступных транспортов при настройке нового экземпляра в SCMU. Чтобы он стал доступным, необходимо создать переменную среды ServiceControl_IncludeLearningTransport
со значением true
.
Тестирование с использованием рабочего процесса CI зависит от следующих секретов, которые должны быть определены как для секретов Actions, так и для Dependabot. Конкретные значения этих секретов хранятся в защищенной заметке с именем ServiceControl Repo Secrets .
LICENSETEXT
: Текст лицензии на конкретное программное обеспечение.AWS_ACCESS_KEY_ID
: для тестирования SQS.AWS_SECRET_ACCESS_KEY
: для тестирования SQS.AWS_REGION
: для тестирования SQS. Постоянное выполнение всех тестов требует много ресурсов. Тесты фильтруются на основе переменной среды ServiceControl_TESTS_FILTER
. Чтобы запустить только подмножество, например тесты транспорта SQS, определите переменную как ServiceControl_TESTS_FILTER=SQS
. Следующий список содержит все возможные значения ServiceControl_TESTS_FILTER
:
Default
— запускает только тесты, не относящиеся к транспорту.AzureServiceBus
AzureStorageQueues
MSMQ
RabbitMQ
SqlServer
SQS
ПРИМЕЧАНИЕ. Если переменная не определена, будут выполнены все тесты.
Шаги:
Создайте решение
Откройте PowerShell 7.
Импортируйте модуль, указав путь к папке git-репо ServiceControl deployPowerShellModulesParticular.ServiceControl.Management
Import-Module - Name S:ServiceControldeployPowerShellModulesParticular.ServiceControl.Management - Verbose
Set-ExecutionPolicy Unrestricted
Теперь, когда модуль успешно импортирован, введите любой из сценариев ServiceControl PowerShell, чтобы проверить их. Например: следующее создает новый экземпляр ServiceControl.
$serviceControlInstance = New-ServiceControlInstance `
- Name ' Test.DEV.ServiceControl ' `
- InstallPath C:ServiceControlBin `
- DBPath C:ServiceControlDB `
- LogPath C:ServiceControlLogs `
- Port 44334 `
- DatabaseMaintenancePort 44335 `
- Transport ' RabbitMQ - Direct routing topology (quorum queues) ' `
- ConnectionString ' host=localhost;username=guest;password=guest ' `
- ErrorQueue errormq `
- ErrorRetentionPeriod 10 : 00 : 00 : 00 `
- Acknowledgements RabbitMQBrokerVersion310