Настройка AGDataLoader

From TK
Jump to: navigation, search

Файл конфигурации AGDataLoader.exe.config

Файл конфигурации состоит из разных секций.

  • nlog - конфигурация журналирования. Для журналирования используется библиотека NLog (документация по настройке секции nlog). По умолчанию на каждый сервер, с которого загружаются данные, создается отдельный файл журнала, в который пишуться все события по загрузке и обращениям к этому серверу.
  • settings - основная секция настроек
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="settings" type="AGDataLoader.ConfigSection, AGDataLoader"/>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="default" xsi:type="File" fileName="Logs\${date:format=yyyyMMdd}.log" layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/>
      <target name="dispatcherTargetV3" xsi:type="File" fileName="Logs\${date:format=yyyyMMdd}_Dispatcher3.log" layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/>
      <target name="dispatcherTargetV4" xsi:type="File" fileName="Logs\${date:format=yyyyMMdd}_Dispatcher4.log" layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/>
      <target name="dispatcherHttpTarget" xsi:type="File" fileName="Logs\${date:format=yyyyMMdd}_DispatcherHttp.log" layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/>
      <target name="console" xsi:type="ColoredConsole" layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/>
    </targets>
    <rules>
      <logger name="default" minLevel="Info" appendTo="default"/>
      <logger name="dispatcher-v3" minLevel="Info" appendTo="dispatcherTargetV3"/>
      <logger name="dispatcher-v4" minLevel="Info" appendTo="dispatcherTargetV4"/>
      <logger name="http-dispatcher" minLevel="Info" appendTo="dispatcherHttpTarget"/>
      <logger name="*" minLevel="Info" appendTo="console"/>
    </rules>
  </nlog>

  <settings
    data-directory="d:\test.data" 
    dbf-directory="d:\test" 
    batch-size="400" 
    thread-count="4" 
    data-last-weeks="28" 

    files-directory="~\files" 
    file-sync-period="10" 
    files-exclude="*.txt;*.ini" 
    file-size-limit="0" 
    files-in-one-directory="true" 
    files-overwrite="true" 

    dbf-subdir-exclude="off" 

    dispatcher-port="0" 
    http-dispatcher-port="0" 
    logs-per-server="true" 

    dispatcher-port-v4="0" 
    users-directory-v4="D:\AGServer4\Users" 
    dbf-directory-v4="D:\AGServer4\DBF" 
    dispatcher-rule-filename="rules.xml" 

    hash="false"/>
  <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>

Секция settings

data-directory
указывает на каталог данных (по формату этот каталог совпадает с data-каталогом AutoGRAPH и AutoGRAPH.NET)

dbf-directory
каталог с конфигурацией серверов (см. ниже)

batch-size
размер пакета для запроса. Если количество запрашиваемых приборов больше этого параметра - один запрос будет разбит на несколько, каждый из которых будет содержать batch-size приборов. Например, при загрузке 1150 приборов и batch-size = 400 на сервер будут отправляться запросы по 400 + 400 + 350 приборов. Оптимальное значение - от 100 до 300. Подробее об алгоритме работы.

thread-count

количество потоков для одновременной работы. Оптимальное значение - 2-4, однако при большом количестве приборов имеет смысл увеличить до 8-10. Подробее об алгоритме работы.


data-last-weeks
ограничение по загрузке данных. Данные старее data-last-weeks недель загружаться не будут

files-directory
каталог для загружаемых пользовательских файлов (только V4)
Только для серверов V4
file-sync-period
период синхронизации файлов (в секундах)
files-exclude
маски файлов, которые будут игнорированы при синхронизации (через точку с запятой)
file-size-limit
лимит на размер файлов. Файлы больше указаного размера (в байтах) будут игнорироваться при синхронизации.
files-in-one-directory

true, если файлы от нескольких пользователей будут складываться в один каталог files-directory
false, если будут созданы подкаталоги с именами пользователей.

files-overwrite
true, если файлы с одинаковыми именами, загруженные с разных серверов будут перезаписываться
false, если перезапись отключена - будет сохранён только первый файл с таким именем.
dispatcher-port
диспетчерский порт V3-протокола
0, если диспетчерский V3-модуль отключен

http-dispatcher-port
диспетчерский порт HTTP-протокола или 0, если диспетчерский HTTP-модуль отключен.

logs-per-server
true, если логи разбиваются посерверно или false, если логи по всем серверам пишуться в один файл.

dispatcher-port-v4
диспетчерский порт V4-протокола
0, если диспетчерский V4-модуль отключен
Диспетчерская часть протокола V4
users-directory-v4
каталог с пользователями (формат каталога идентичен каталогу AutoGRAPH Сервер V4)
dbf-directory-v4
каталог с приборами - .atg-файлами (формат каталога идентичен каталогу AutoGRAPH Сервер V4)
dispatcher-rule-filename
имя файла с правилами фильтрации
hash
пересчитывать хэш загруженного файла или нет. По умолчанию false.

Создание каталогов и конфигурация серверов для загрузки

Структура каталогов AGDataLoader выглядит следующим образом:

Agdataloader-directories.gif

 В данном примере каталог DBF содержит подкаталоги, имя которого может формироваться по следующим правилам:

  • hostname-port
  • hostname-port-period
  • xxx.yyy.zzz.qqq-port

где:

  • hostname - FQDN или netbios имя сервера
  • port - номер диспетчерского порта (по умолчанию tcp/2226 для V3, tcp/2230 для V4)
  • xxx.yyy.zzz.qqq - IP-адрес сервера
  • period - период опроса сервера в секундах (по умолчанию - 30 секунд)

Пример такого файла: test-devices.atg (данный файл взят из каталога DBF AutoGRAPH.Server V3 m.tk-chel.ru порт 2226)

Для серверов V3

Каталог сервера должен содержать .atg-файлы, из которых будет прочитаны номера приборов/пароли приборов и с ними будут выполняться диспетчерские запросы на загрузку данных. Данный способ используется в ПО 3й версии (AutoGRAPH.Server V3 и AutoGRAPH 3.x). Оставлен для совместимости.

Для серверов V4

В серверах 4й версии аутентификация выполняется с помощью логина/пароля (хэша пароля) и получение списка приборов выполняется при первом подключении к серверу. Вместо .ATG файлов в каталоге сервера должен лежать .ini-файл, в котором храниться хэш пароля. При этом имя файла используется как логин пользователя. Пример такого файла demo.ini (данный файл взят из каталога Users AutoGRAPH.Server V4 m.tk-chel.ru порт 2230