Данные параметры должны быть указаны в файле TotalApi.Server.Host.json.
/i - установить в виде службы и запустить
/a - установить в автозагрузку и запустить
/u - деинсталлировать (остановить и убрать из служб и автозагрузки)
/s - молчаливая работа (не видно окна приложения и сообщений)
ВАЖНО! при изменении протокола или порта сервисов необходима повторная установка (с ключами /i или /a). Перед изменением конфига - выполните деинсталляцию
serviceHost - адрес и (опционально) порт и протокол подключения к сервису;
[protokol:]//[host][:порт] если протокол не указан используется `http`;
если порт не указан - используется порт по умолчанию в зависимости от протокола.
appId - идентификатор хоста подсистемы;
TotalApi.Server.Host (по умолчанию) в случае если хост запущен как служба - название службы.
appTitle - наименование хоста подсистемы;
в случае если хост запущен как служба - описание службы.
modulesFolders - перечень каталогов, разделённых точкой с запятой, откуда следует
Modules (по умолчанию) загружать сборки программных модулей. Позволяет использовать
относительную адресацию, относительно исполнимого файла приложения.
Поддерживается рекурсивная загрузка из подкаталогов указанных каталогов.
Модули из каталога приложения будут загружены в любом случае.
Загружены будут только модули с именем вида TotalApi.*.dll.
ConnectionStrings - строки подключения к базам данных
totalapi.log - параметры протоколирования
AppMonitorServer - параметры сервера мониторинга работы подсистемы
Bindings - конфигурация по умолчанию для настройки стандартных биндингов
Для возможности подключения к сервисам подсистемы по https, необходимо зарегистрировать и замапить на указанный порт сертификат. (подробнее как это сделать - читай в документации.
Telematics - параметры телематического модуля
CassandraClusterSettings - параметры подключения к БД Cassandra
NetworkSettings - параметры приёма данных устойств слежения
// общие параметры
Staticstics
{
"IsDisabled": true,
// Размер очереди статистики по умолчанию.
// Положительное значение говорит о том, что при превышении размера очереди новые данные будут проигнорированы.
// Отрицательное значение - очередь будет ожидать обработку предыдущих данных перед добавлением новых (не рекомендуется).
// 0 - не использовать очередь (не рекомендуется).
"WriteQueueSize": 1000
}
// параметры подключения к БД ведения статистики InfluxDb
InfluxDb
{
"IsDisabled": false,
"Url": "http://[host]:8086:4444", // первый порт - http, второй - udp
"DbName": "stat_db", // наименование БД
"RetentionPolicy": "seven_days", // период хранения
"User": "[user]", // пользователь
"Password": "[password]", // пароль
"WriteQueueSize": 1000, // размер очереди записи (переполнение игнорирует новые записи)
"Transport": "default", // default/http/udp
"TimeWindowWidth": 5000 // ширина окна (ms) накопления данных статистики
}
EventManager
{
// Частота накапливания одинаковых событий перед их отправкой клиенту
"ThrottleTimeMs": 500,
// Промежуток между повторным подключением к подсистеме биллинга при обрыве соединения
"ReconnectBillingPeriodSec": 20,
// Промежуток между повторным подключением к остальным подсистемам при обрыве соединения
"ReconnectSubSystemsPeriodSec": 60,
// Время в миллисекундах в течении которого живёт подписка если к клиент не обращается за результатами этой подписки.
// По окончании этого времени - подписка отменяется.
"RequestSubscriptionPeriodMs": 30000,
// Время в миллисекундах в принудительной переподписки клиента к серверу.
// Если сервер по каким-то причинам отписал клиента, но тот на самом деле жив - это поможет продолжить получать события.
"ResubscribePeriodMs": 30000
}
writeCoordinatesThreads
8 (по умолчанию) - количество потоков, обрабатывающих очередь принятых координат.
Если очередь переполняется - при приёме координат будет выполнятся ожидание до освобождения очереди.
writeSensorDataThreads
8 (по умолчанию) - количество потоков, обрабатывающих очередь принятых данных сенсоров.
Если очередь переполняется - при приёме координат будет выполнятся ожидание до освобождения очереди.
disableCheckingRestrictions
false (по умолчанию) - Только для тестов. Запрещает все виды проверок ограничений при записи данных.
disableDataFilterManager
false (по умолчанию) - Только для тестов. Запрещает использование конвейров префильтров при записи данных.
NetworkSettings.HttpPort - порт сервиса для быстрой записи координат через нативный интерфейс TotalApi по HTTP-протоколу. Работает быстрее чем соответствующий WCF-сервис TotalApi.
0 (по умолчанию) Если равен нулю - не используется. Если не равен - то доступен по адресу http://{host}:{port}/totalapi/fastwriter
NetworkSettings.TcpPort - порт сервиса для быстрой записи координат через нативный интерфейс TotalApi по TCP-протоколу. Работает быстрее чем соответствующий WCF-сервис TotalApi.
0 (по умолчанию) Если равен нулю - не используется. Если не равен - то доступен по адресу tcp://{host}:{port}
NetworkSettings.UdpPort - порт сервиса для быстрой записи координат через нативный интерфейс TotalApi по UDP-протоколу. Работает быстрее чем соответствующий WCF-сервис TotalApi.
0 (по умолчанию) Если равен нулю - не используется. Если не равен - то доступен по адресу tcp://{host}:{port}
NetworkSettings.ConcurrencyLevel - количество потоков, обрабатывающих поступающие запросы по TCP и UDP-протоколам. Для каждого из протоколов создаётся отдельная очередь.
1 (по умолчанию) Если равен нулю - очередь обработки не используется и обработка происходит синхронно с приёмом данных.
defaultCoordinateTimeToLive
1 (по умолчанию) - время жизни координат устройства слежения по умолчанию (в днях).
Используется, если свойство Device.TimeToLive меньше или равно TimeSpan.Zero.
forcedCoordinateTimeToLive
не задано (по умолчанию) - принудительное время жизни координат устройства слежения (в днях).
Если задано - используется вместо свойства Device.TimeToLive.
defaultSensorsTimeToLive
1 (по умолчанию) - время жизни данных датчиков устройства слежения по умолчанию (в днях).
Используется, если свойство Sensor.TimeToLive меньше или равно TimeSpan.Zero.
forcedSensorsTimeToLive
не задано (по умолчанию) - принудительное время жизни данных датчиков устройства слежения (в днях).
Если задано - используется вместо свойства Sensor.TimeToLive.
Данные настройки влияют на вывод информации передаваемой через интерфейс ILogger.
Настройки протоколирования указываются в разделе totalapi.log конфигурационного файла TotalApi.Server.Host.json.
disabled
false (по умолчанию) - глобальное включение/выключение протоколирования
async
true (по умолчанию) - все сообщения логгера попадают в очередь, которая обрабатывается одним отдельным потоком.
false - без очереди
queueSize
1000 (по умолчанию) - размер очереди по умолчанию
separator
"\t" (по умолчанию) - разделитель отдельных элементов строки протокола
files - массив объектов-описателей файлов протокола
Протоколирование может вестись в несколько файлов протокола, для разделения выводимой информации по категориям и уровню протоколирования. Формат объекта-описателя описан ниже:
disabled
false (по умолчанию) - включение/выключение протоколирования данного файла
file
<строковое значение> - имя файла протокола. Если полный путь не задан - он расширяется относительно каталога запуска программы.
Если указано имя CON - вывод будет вестись не в файл, а в консоль.
Поддерживаются макроподстановки, используемые в методе FileSystemExtension.ExpandPath.
level
7 (по умолчанию) - битовая маска, задающая уровень протоколирования:
1 - информационные сообщения
2 - предупреждения
4 - ошибки
8 - отладка
16 - статистика
console
false (по умолчанию) - дублировать вывод в файл с выводом в консоль. В DEBUG сборке значение этого параметра по умолчанию равно true.
append
false (по умолчанию) - создавать файл протокола заново при старте программы
true - дописывать в существующий
persistent
false (по умолчанию) - нужно ли сохранять файл протокола при старте программы.
Старый файл переименовывается в <имя файла>.yy-MM-dd.<расширение>.
Игнорируется если totalapi.log.append равно true.
splitDays
1 (по умолчанию) - создавать новый файл протокола каждые <splitDays> дня.
Старый файл переименовывается в <имя файла>.yy-MM-dd.<расширение>.
Если значение меньше или равно нулю - разбиения файла не происходит.
Если значение не задано, то оно равно 1 если totalapi.log.append или totalapi.log.persistent равно true.
splitSizeMb
100 (по умолчанию) - создавать новый файл протокола когда его размер превышает <splitSizeMb> мегабайт.
Старый файл переименовывается в <имя файла>.yy-MM-dd.<расширение>.
Если значение меньше или равно нулю - разбиения файла не происходит.
Если значение не задано, то оно равно 100 если totalapi.log.append или totalapi.log.persistent равно true.
separator
"\t" (по умолчанию) - разделитель отдельных элементов строки протокола
categories - строковый массив названий категорий, которые нужно протоколировать.
Поддерживается простой wildcard-формат (`*` - заменяет любое кол-во символов, `?` - заменяет ровно один символ),
так и Regexp (для этого шаблон категории должен начинаться и заканчиваться символом `/`).
Если в начале стоит символ `-` - эта категория будет исключена из протокола.
Billing.WatcherPeriodMin
1440 (по умолчанию) - период проверки статусов оплаты. По умолчанию - сутки.
reconnectBillingPeriodSec
10 (по умолчанию) - период в секундах между проверками доступности подсистемы биллинга если она стала недоступной.
reconnectSubSystemsPeriodSec
60 (по умолчанию) - период в секундах между проверками доступности подсистемы если она стала недоступной.
reconnectSubSystemsMaxAttempts
3 (по умолчанию) - максимальное количество попыток подключиться к недоступной подсистеме.