Сервер мониторинга

Материал из Integra-S Wiki
Перейти к: навигация, поиск

Назначение

Осуществляет взаимодействие с поставщиками данных - аппаратными модулями (ОПС, сенсорами, устройствами) и программными модулями (Интегра Видео 7, СКУД и пр).

Предварительные действия

Для установки программного обеспечения IPE server необходимо:

1. Операционные системы Debian 8.8 x64 или выше, Debian 9.4 x64 или выше, Astra 1.5 x64;
2. Доступ к сети Интернет
3. Postgres 9.6.Х (необходим для компонентов "integraemberdb", "integraipedb" и "serenity")
4. PostGis 2.3.Х (необходим для компонентов "integraemberdb" и "integraipedb")


Перед началом установки необходимо добавить репозиторий в список доступных репозиториев:


1. Войти в root (суперпользователь): sudo su Acv 1.jpg


2. Перейти в корневой каталог: cd / Acv 2.jpg


3. Перейти к папке с файлом sources.list: cd etc, cd apt 3-1.png


4. Проверить наличие файла: ls Acv 4.png


5. Открыть в редакторе nano файл source.list: nano etc/apt/sources.list Acv 5.png


После этого откроется файл sources.list


Acv 6.jpg


В зависимости от установленной системы добавляем соответствующую строку в /etc/apt/sources.list:

1. deb http://192.168.10.191/debian jessie main - если установлена Debian 8.X
2. deb http://192.168.10.191/debian stretch main - если установлена Debian 9.X / Astra 1.6
3. deb http://192.168.10.191/astra smolensk main - если установлена Astra 1.5
4. deb http://192.168.10.191/integra stable main - пакеты с ПО "Интегра-С"

Рекомендация: закомментировать сторонние репозитории во избежание ошибок!

Ниже приведен пример добавления репозитория при установленной системе Astra 1.6


Acv 7.png


Сохранение внесенных изменений производится комбинацией клавиш Ctrl+O, а выход из редактора - Ctrl+X

Выполнение обновления: apt-get update


Acv 8.png

Установка AcuarioManager

apt-get install acuariomanager

Результат выполнения команды:

Чтение списков пакетов… Готово
Построение дерева зависимостей
...
...
После данной операции, объём занятого дискового пространства возрастёт на 317 MB.
Хотите продолжить? [Д/н] y
ВНИМАНИЕ: Следующие пакеты невозможно аутентифицировать!
mono acuariomanager
Установить эти пакеты без проверки? [y/N] y
...
...
Настраивается пакет acuariomanager (1.19.0-1) …
Обрабатываются триггеры для libc-bin (2.19-18+deb8u10) …


Acv 9.png

Настройка AcuarioManager

Перейти в папку со скриптами:

cd /integra_daemons/acuariomanager Acv 10.jpg


Создание и запуск AcuarioManager


./scriptamcreate.sh Acv 11.png


Результат выполнения команды:

am name: am_name
key server: 192.168.11.103 
am path: /opt 
AuthIp: 127.0.0.1 
Name:  
AuthPort: 8888 
Add firefly connection[y/n]: y 
Ip: 127.0.0.1 
Login: mss 
Password: mss000000 
Port: 8090 
Add firefly connection[y/n]: n 
Created symlink /etc/systemd/system/am_name.service →
/lib/systemd/system/am_name.service. 
Created symlink /etc/systemd/system/multi-user.target.wants/am_name.service
/lib/systemd/system/am_name.service

Служба am_name установлена

Acv 12.png


Настройка Acuario manager для опроса датчиков из разных баз

Для того чтобы Acuario manager мог опрашивать датчики из разных баз, в файле am.console.exe.config необходимо добавить подключения в блоке FireflyConnectionConfigSection:

<FireflyConnectionConfigSection>
  <param name="Firefly1" descr="Описание" ip="192.168.10.10" port="8090"/>
  <param name="Firefly2" descr="Описание" ip="192.168.10.11" port="8091"/>
 </FireflyConnectionConfigSection>

Параметр name должен хранить в себе разные значения, т.е. у каждого подключения свое значение name, ip и port – адрес firefly

В случае необходимости запуска двух или более копий Acuario manager на одной машине таким образом, чтобы одна или несколько копий занимались опросом различных датчиков (например, разных серверов "Интегра-Видео"), а другие занимались исполнением различных же скриптов, для этого в файле настроек Acuario manager am.console.exe.config блока AmConfigSection добавить значение(value) параметру name:

<param name="Name" descr="Имя данного Acuario manager" value="Имя, которое совпадает с именем элемента системы (Acuario manager) в редакторе Скада"/>

Если на схеме несколько элемента системы Acuario manager и указан "name", то запущенный Acuario manager отнесет себя к тому элементу системы, у которого имя будет совпадать с тем, которое имеется в настройках в настройках

Чтобы несколько Acuario manager в одной базе не опрашивали один и тот же компьютер одновременно, была введена настройка "local_comp_monitoring" в элементе системы Acuario manager. По умолчанию она равна "auto", это означает, что Acuario manager сам определит, какой экземпляр будет опрашивать компьютер, но через эту настройку можно и явно указать, должен или нет указанный элемент системы инициировать опрос параметров компьютера


Работа скриптов между элементами системы с разных баз данных

Для того чтобы скрипты работали между элементами системы с разных баз данных, необходимо в файле настроек Acuario manager в блоке FireflyConnectionConfigSection указать то количество подключений, с которыми должны взаимодействовать скрипты

Файл конфигурации для консольного приложения Acuario manager

Настройки Acuario manager хранятся с использованием файла конфигурации приложения (App.config). После сборки приложения для каждого запускаемого файла создается свой файл конфигурации, название которого повторяет имя запускаемого файла и имеет расширение .config. Ниже приведен пример файла конфигурации для консольного приложения acuario manager:

<?xml version="1.0" encoding="utf-8" ?>        
<configuration>
   <configSections>
     <section name="OtherConfigSection" type="am.utilities.AppConfiguration.OtherConfigSection,am.utilities"/>
     <section name="RadarConfigSection" type="am.utilities.AppConfiguration.RadarConfigSection,am.utilities"/>
     <section name="LoggingConfigSection" type="am.utilities.AppConfiguration.LoggingConfigSection,am.utilities"/>
     <section name="AuthConfigSection" type="am.utilities.AppConfiguration.AuthConfigSection,am.utilities"/>
     <section name="AmConfigSection" type="am.utilities.AppConfiguration.AmConfigSection,am.utilities"/>
     <section name="FireflyConnectionConfigSection" type="am.utilities.AppConfiguration.FireflyConnectionConfigSection,am.utilities"/>
   </configSections> 

 <FireflyConnectionConfigSection>
     <param name="ff1" descr="Какой-то ff" ip="localhost" port="8080"/>
   </FireflyConnectionConfigSection>
 <AmConfigSection>
     <param name="OnlyLocal" descr="Подключаться только к локальному серверу. При подключении к нескольким FF всегда будет включено" value="true"/>
     <param name="Name" descr="Имя данного АМ" value="ADawd"/>
     <param name="FfInterval" descr="" value="200"/>
   </AmConfigSection>
<AuthConfigSection>
     <param name="AuthIp" descr="IP сервера авторизации" value="192.168.10.13"/>
     <param name="AuthPort" descr="Порт сервера авторизации" value="8888"/>
     <param name="Login" descr="Логин" value="firefly"/>
     <param name="Password" descr="Пароль" value="firefly"/>
   </AuthConfigSection>
<LoggingConfigSection>
     <param name="LogLevel" descr="Уровень логгирования. Допустимые значения - DEBUG, INFO, WARN, ERROR, FATAL" value="DEBUG"/>
     <param name="LogToConsole" descr="Писать логи в консоль" value="true"/>
     <param name="LogToFile" descr="Писать логи в файлы" value="true"/>
     <param name="LogFolder" descr="Папка для логов (без пробелов)" value="Log"/>
     <param name="LogSize" descr="Размер файла логов. Допустимые значения - B,KB,MB,GB" value="10 MB"/>
     <param name="LogFileCount" descr="Количество копий файла лога" value="3"/>
     <param name="LogFirefly" descr="Логгировать обмен данными с Firefly" value="false"/>
   </LoggingConfigSection>
<RadarConfigSection>
     <param name="TargetsCacheSize" descr="Размер кэша для неидентифицированных целей" value="200"/>
     <param name="CoordinateError" descr="Погрешность координат. 0,0001 - это 10-12 метров" value="0,0002"/>
     <param name="DeleteTargetsTimeoutS" descr="Таймаут удаления устаревших опознанных радарных целей в секундах. Если меньше 1 - цели удаляться не будут" value="-1"/>
     <param name="DeleteUnknownTargetsTimeoutS" descr="Таймаут удаления устаревших неопознанных радарных целей в секундах. Если меньше 1 - цели удаляться не будут" value="-1"/>
     <param name="RotateTargetsForVega" descr="Поворот координат целей относительно радара. Допустимые значения: 0, 90, 180, -90" value="0"/>
     <param name="TransasClientMode" descr="Работа модуля Транзаса в режиме клиента" value="true"/>
     <param name="SetLenghtOnlyOnce" descr="Проставлять длину опознанным целям только если она не проставлена" value="true"/>
     <param name="CombineUnknowns" descr="Объединять ли находящиеся рядом неизвестные цели или неизвестные с известными" value="true"/>
     <param name="CalcSpeedAndDir" descr="Рассчитывать ли автоматически скорость и направление если они не пришли от внешней системы" value="true"/>
     <param name="PriorityTimeoutS" descr="Время в сек, в течении которого приоритетная цель не будет перезаписываться. Если =0, то система приоритетов работать не будет" value="10"/>
     <param name="TargetThinningTimeS" descr="Если > 0, то радарные данные по каждой цели будут приходить не чаще чем раз в N секунд, прочее будет отбрасываться. Диапазон 0-10 c" value="0,9"/>
     <param name="TargetThinningAlg" descr="Алгоритм для прореживания целей. 1 - отбрасывать данные, если они пришли ранее чем через N секунд. 2 - раз в N секунд отправлять последние присланные с радара данные, если они 
были" value="1"/>
   </RadarConfigSection>
<OtherConfigSection>
     <param name="Servicename" descr="Имя службы" value="AcuarioManagerService"/>
     <param name="Autostart" descr="Автозапуск" value="false"/>
     <param name="LocalIp" descr="Локальный IP адрес. Используется, если не работает DNS" value="127.0.0.1"/>
     <param name="ThreadPoolMinThreads" descr="Минимальное число потоков пула потоков. Если -1 то оставить по умолчанию" value="-1"/>
     <param name="ThreadPoolMinThreadsIO" descr="Минимальное число асинхронных I/O потоков пула потоков. Если -1 то оставить по умолчанию" value="-1"/>
     <param name="SnmpCommunity" descr="Имя SNMP community" value="public"/>
     <param name="PtzPosCommand" descr="Наименование команды для запроса позиции PTZ самеры" value="ptzserver:Command"/>
     <param name="DoubleParseEx" descr="Расширенный парсинг double" value="true"/>
     <param name="Modules" descr="Список загружаемых dll через запятую" value=""/>
     <param name="SmartSubscribes" descr="Значения: auto, true, false. Если включено, то АМ подписывается только на связанные итемы. Если auto, то выключается само если в схеме есть радар" value="auto"/>
     <param name="StatusEvents" descr="Отправлять events при изменении статуса параметра" value="false"/>
     <param name="ShowLocalChangesInIncoming" descr="Обрабатывать ли локальные исходящие изменения" value="false"/>
     <param name="LeavePtzPozSameIfErrorFromIV" descr="Оставлять текущую позицию PTZ камеры той же если с IV пришла ошибка" value="true"/>
     <param name="FFPingIntervalS" descr="Интервал проверки связи с FF в секундах" value="5"/>
     <param name="FFDeleteChangesM" descr="Сколько ждать ответа от FF в минутах" value="5"/>
     <param name="IV7_mode" descr="Режим работы IV7. Варианты: 0 - комплексный(1+2), 1 - через сервис, 2 - прямыми запросами, 3 - через wget" value="0"/>
     <param name="FFMaxPulseTimeout" descr="Максимальное время между пульсами от фф" value="15000"/>
   </OtherConfigSection>
   <startup>
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
   </startup>
   <system.serviceModel>
     <bindings>
       <basicHttpBinding>
         <binding name="WSKseonImplPortBinding" />
         <binding name="IOrionProbinding" maxReceivedMessageSize="10485760" />
       </basicHttpBinding>
     </bindings>
     <client>
       <endpoint address="http://127.0.0.1:9000/WSKseon" binding="basicHttpBinding" 
           bindingConfiguration="WSKseonImplPortBinding" contract="SensorMKseonService.WSKseonService" 
           name="WSKseonImplPort" />
       <endpoint address="http://127.0.0.1:8090/soap/IOrionPro" 
           binding="basicHttpBinding" bindingConfiguration="IOrionProbinding" 
           contract="BolidWebService.OrionPro.IOrionPro" name="IOrionProPort" />
     </client>
   </system.serviceModel>
</configuration>