Настройка AGDataLoader — различия между версиями

Материал из TK
Перейти к: навигация, поиск
Строка 3: Строка 3:
 
Файл конфигурации состоит из разных секций.
 
Файл конфигурации состоит из разных секций.
   
*nlog - конфигурация журналирования. По умолчанию на каждый сервер, с которого загружаются данные, создается отдельный файл журнала, в который пишуться все события по загрузке и обращениям к этому серверу.
+
*nlog - конфигурация журналирования. Для журналирования используется библиотека NLog ([https://github.com/nlog/NLog/wiki/Configuration-file документация по настройке секции nlog]). По умолчанию на каждый сервер, с которого загружаются данные, создается отдельный файл журнала, в который пишуться все события по загрузке и обращениям к этому серверу.
 
*settings - основная секция настроек
 
*settings - основная секция настроек
   
<code></code><code>&lt;?xml version="1.0"?&gt;<br/>&lt;configuration&gt;<br/>&nbsp; &lt;configSections&gt;<br/>&nbsp; &nbsp; &lt;section name="settings" type="AGDataLoader.ConfigSection, AGDataLoader"/&gt;<br/>&nbsp; &nbsp; &lt;section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/&gt;<br/>&nbsp; &lt;/configSections&gt;<br/>&nbsp; <nlog xmlns="[http://www.nlog-project.org/schemas/NLog.xsd http://www.nlog-project.org/schemas/NLog.xsd]" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance http://www.w3.org/2001/XMLSchema-instance]"><br/>&nbsp; &nbsp; &lt;targets&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="default" xsi:type="File" fileName="Logs\${date:format=yyyyMMdd}.log" layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="dispatcherTargetV3" xsi:type="File"&nbsp;fileName="Logs\${date:format=yyyyMMdd}_Dispatcher3.log"&nbsp;layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="dispatcherTargetV4" xsi:type="File" fileName="Logs\${date:format=yyyyMMdd}_Dispatcher4.log"&nbsp;layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="dispatcherHttpTarget" xsi:type="File"&nbsp;fileName="Logs\${date:format=yyyyMMdd}_DispatcherHttp.log"&nbsp;layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="console" xsi:type="ColoredConsole"&nbsp;layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &lt;/targets&gt;<br/>&nbsp; &nbsp; &lt;rules&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="default" minLevel="Info" appendTo="default"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="dispatcher-v3" minLevel="Info" appendTo="dispatcherTargetV3"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="dispatcher-v4" minLevel="Info" appendTo="dispatcherTargetV4"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="http-dispatcher" minLevel="Info" appendTo="dispatcherHttpTarget"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="*" minLevel="Info" appendTo="console"/&gt;<br/>&nbsp; &nbsp; &lt;/rules&gt;<br/>&nbsp; &lt;/nlog&gt;</code>
+
<code>&lt;?xml version="1.0"?&gt;<br/>&lt;configuration&gt;<br/>&nbsp; &lt;configSections&gt;<br/>&nbsp; &nbsp; &lt;section name="settings" type="AGDataLoader.ConfigSection, AGDataLoader"/&gt;<br/>&nbsp; &nbsp; &lt;section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/&gt;<br/>&nbsp; &lt;/configSections&gt;<br/>&nbsp; <nlog xmlns="[http://www.nlog-project.org/schemas/NLog.xsd http://www.nlog-project.org/schemas/NLog.xsd]" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance http://www.w3.org/2001/XMLSchema-instance]"><br/>&nbsp; &nbsp; &lt;targets&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="default" xsi:type="File" fileName="Logs\${date:format=yyyyMMdd}.log" layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="dispatcherTargetV3" xsi:type="File"&nbsp;fileName="Logs\${date:format=yyyyMMdd}_Dispatcher3.log"&nbsp;layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="dispatcherTargetV4" xsi:type="File" fileName="Logs\${date:format=yyyyMMdd}_Dispatcher4.log"&nbsp;layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="dispatcherHttpTarget" xsi:type="File"&nbsp;fileName="Logs\${date:format=yyyyMMdd}_DispatcherHttp.log"&nbsp;layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;target name="console" xsi:type="ColoredConsole"&nbsp;layout="${date:format=HH\:mm\:ss} ${uppercase:upperCase=True:inner=${level}} ${message}"/&gt;<br/>&nbsp; &nbsp; &lt;/targets&gt;<br/>&nbsp; &nbsp; &lt;rules&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="default" minLevel="Info" appendTo="default"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="dispatcher-v3" minLevel="Info" appendTo="dispatcherTargetV3"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="dispatcher-v4" minLevel="Info" appendTo="dispatcherTargetV4"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="http-dispatcher" minLevel="Info" appendTo="dispatcherHttpTarget"/&gt;<br/>&nbsp; &nbsp; &nbsp; &lt;logger name="*" minLevel="Info" appendTo="console"/&gt;<br/>&nbsp; &nbsp; &lt;/rules&gt;<br/>&nbsp; &lt;/nlog&gt;</code>
   
 
<code>&nbsp; <settings<br/>&nbsp; &nbsp; data-directory="d:\test.data"&nbsp;<br/>&nbsp; &nbsp; dbf-directory="d:\test"&nbsp;<br/>&nbsp; &nbsp; batch-size="400"&nbsp;<br/>&nbsp; &nbsp; thread-count="4"&nbsp;<br/>&nbsp; &nbsp; data-last-weeks="28"&nbsp;</code>
 
<code>&nbsp; <settings<br/>&nbsp; &nbsp; data-directory="d:\test.data"&nbsp;<br/>&nbsp; &nbsp; dbf-directory="d:\test"&nbsp;<br/>&nbsp; &nbsp; batch-size="400"&nbsp;<br/>&nbsp; &nbsp; thread-count="4"&nbsp;<br/>&nbsp; &nbsp; data-last-weeks="28"&nbsp;</code>
Строка 101: Строка 101:
 
{| border="0" cellspacing="0" cellpadding="3"
 
{| border="0" cellspacing="0" cellpadding="3"
 
|-
 
|-
| http://wiki.tk-chel.ru/images/8/8b/Agdataloader-directories.gif<br/><br/><span style="line-height: 20.7999992370605px;"></span>
+
| http://wiki.tk-chel.ru/images/8/8b/Agdataloader-directories.gif<br/><br/>
 
| style="vertical-align: top;" |
 
| style="vertical-align: top;" |
 
&nbsp;В данном примере каталог DBF содержит подкаталоги, имя которого может формироваться по следующим правилам:
 
&nbsp;В данном примере каталог DBF содержит подкаталоги, имя которого может формироваться по следующим правилам:

Версия 21:28, 5 апреля 2015

Файл конфигурации 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 приборов. Оптимальное значение - от 200 до 500.

thread-count
количество потоков для одновременной работы. Оптимальное значение - 2-4, при большом количестве серверов (больше 15-20) имеет смысл увеличить до 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