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

Материал из TK
Перейти к: навигация, поиск
(Файл конфигурации AGDataLoader.exe.config)
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
== Файл конфигурации AGDataLoader.exe.config ==
 
== Файл конфигурации AGDataLoader.exe.config ==
   
  +
Файл конфигурации состоит из разных секций.
<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>
 
   
  +
*nlog - конфигурация журналирования. Для журналирования используется библиотека NLog ([https://github.com/nlog/NLog/wiki/Configuration-file документация по настройке секции nlog]).&nbsp;По умолчанию на каждый сервер, с которого загружаются данные, создается отдельный файл журнала, в который пишуться все события по загрузке и обращениям к этому серверу.
<code>&nbsp; <settings<br/>&nbsp; &nbsp; [[#data-directory|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>
 
  +
*settings - основная секция настроек<code></code>
   
  +
<pre>
<code>&nbsp; &nbsp; files-directory="~\files"&nbsp;<br/>&nbsp; &nbsp; file-sync-period="10"&nbsp;<br/>&nbsp; &nbsp; files-exclude="*.txt;*.ini"&nbsp;<br/>&nbsp; &nbsp; file-size-limit="0"&nbsp;<br/>&nbsp; &nbsp; files-in-one-directory="true"&nbsp;<br/>&nbsp; &nbsp; files-overwrite="true"&nbsp;</code>
 
  +
<?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
<code>&nbsp; &nbsp; dbf-subdir-exclude="off"&nbsp;</code>
 
  +
data-directory="d:\test.data"
  +
dbf-directory="d:\test"
  +
batch-size="400"
  +
thread-count="4"
  +
data-last-weeks="28"
   
  +
files-directory="~\files"
<code>&nbsp; &nbsp; dispatcher-port="0"&nbsp;<br/>&nbsp; &nbsp; http-dispatcher-port="0"&nbsp;<br/>&nbsp; &nbsp; logs-per-server="true"&nbsp;</code>
 
  +
file-sync-period="10"
  +
files-exclude="*.txt;*.ini"
  +
file-size-limit="0"
  +
files-in-one-directory="true"
  +
files-overwrite="true"
   
  +
dbf-subdir-exclude="off"
<code>&nbsp; &nbsp; dispatcher-port-v4="0"&nbsp;<br/>&nbsp; &nbsp; users-directory-v4="D:\AGServer4\Users"&nbsp;<br/>&nbsp; &nbsp; dbf-directory-v4="D:\AGServer4\DBF"&nbsp;<br/>&nbsp; &nbsp; dispatcher-rule-filename="rules.xml"&nbsp;</code>
 
   
  +
dispatcher-port="0"
<code>&nbsp; &nbsp; hash="false"/><br/>&nbsp; &lt;startup&gt;&lt;supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/&gt;&lt;/startup&gt;<br/>&lt;/configuration&gt;</code>
 
  +
http-dispatcher-port="0"
  +
logs-per-server="true"
   
  +
dispatcher-port-v4="0"
<a id="data-loader">data-loader</a> - param 1
 
  +
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>
  +
</pre>
  +
  +
=== Секция settings ===
  +
  +
{| border="1" cellspacing="0" cellpadding="2"
  +
|-
  +
| style="width: 163px;" | data-directory<br/>
  +
| style="width: 1327px;" | указывает на каталог данных (по формату этот каталог совпадает с data-каталогом AutoGRAPH и AutoGRAPH.NET)<br/>
  +
| style="width: 93px;" | <br/>
  +
|-
  +
| style="width: 163px;" | dbf-directory<br/>
  +
| style="width: 1327px;" | каталог с конфигурацией серверов (см. ниже)<br/>
  +
| style="width: 93px;" | <br/>
  +
|-
  +
| style="width: 163px;" | batch-size<br/>
  +
| style="width: 1327px;" | размер пакета для запроса. Если количество запрашиваемых приборов больше этого параметра - один запрос будет разбит на несколько, каждый из которых будет содержать batch-size приборов. Например, при загрузке 1150 приборов и batch-size = 400 на сервер будут отправляться запросы по 400 + 400 + 350 приборов. Оптимальное значение - от 100 до 300.&nbsp;[[Алгоритм работы AGDataLoader|Подробее об алгоритме работы.]]<br/>
  +
| style="width: 93px;" | <br/>
  +
|-
  +
| style="width: 163px;" | thread-count<br/>
  +
| style="width: 1327px;" |
  +
количество потоков для одновременной работы. Оптимальное значение - 2-4, однако при большом количестве приборов имеет смысл увеличить до 8-10. [[Алгоритм работы AGDataLoader|Подробее об алгоритме работы.]]
  +
  +
| style="width: 93px;" | <br/>
  +
|-
  +
| style="width: 163px;" | data-last-weeks<br/>
  +
| style="width: 1327px;" | ограничение по загрузке данных. Данные старее data-last-weeks недель загружаться не будут<br/>
  +
| style="width: 93px;" | <br/>
  +
|-
  +
| style="width: 163px;" | files-directory<br/>
  +
| style="width: 1327px;" | каталог для загружаемых пользовательских файлов (только V4)<br/>
  +
| style="width: 93px;" rowspan="6" colspan="1" | <span style="line-height: 20.7999992370605px;">Только для серверов V4</span><br/>
  +
|-
  +
| style="width: 163px;" | file-sync-period<br/>
  +
| style="width: 1327px;" | период синхронизации файлов (в секундах)<br/>
  +
|-
  +
| style="width: 163px;" | files-exclude<br/>
  +
| style="width: 1327px;" | маски файлов, которые будут игнорированы при синхронизации (через точку с запятой)<br/>
  +
|-
  +
| style="width: 163px;" | file-size-limit<br/>
  +
| style="width: 1327px;" | лимит на размер файлов. Файлы больше указаного размера (в байтах) будут игнорироваться при синхронизации.<br/>
  +
|-
  +
| style="width: 163px;" | files-in-one-directory<br/>
  +
| style="width: 1327px;" |
  +
true, если файлы от нескольких пользователей будут складываться в один каталог files-directory<br/>false, если будут созданы подкаталоги с именами пользователей.
  +
  +
|-
  +
| style="width: 163px;" | files-overwrite<br/>
  +
| style="width: 1327px;" | true, если файлы с одинаковыми именами, загруженные с разных серверов будут перезаписываться<br/>false, если перезапись отключена - будет сохранён только первый файл с таким именем.<br/>
  +
|-
  +
| style="width: 163px;" | dispatcher-port<br/>
  +
| style="width: 1327px;" | диспетчерский порт V3-протокола<br/>0, если диспетчерский V3-модуль отключен<br/>
  +
| style="width: 93px;" | <br/>
  +
|-
  +
| style="width: 163px;" | http-dispatcher-port<br/>
  +
| style="width: 1327px;" | диспетчерский порт HTTP-протокола или 0, если диспетчерский HTTP-модуль отключен.<br/>
  +
| style="width: 93px;" | <br/>
  +
|-
  +
| style="width: 163px;" | logs-per-server<br/>
  +
| style="width: 1327px;" | true, если логи разбиваются посерверно или false, если логи по всем серверам пишуться в один файл.<br/>
  +
| style="width: 93px;" | <br/>
  +
|-
  +
| style="width: 163px;" | dispatcher-port-v4<br/>
  +
| style="width: 1327px;" | диспетчерский порт V4-протокола<br/>0, если диспетчерский V4-модуль отключен<br/>
  +
| style="width: 93px;" rowspan="4" colspan="1" | Диспетчерская часть протокола V4<br/>
  +
|-
  +
| style="width: 163px;" | users-directory-v4<br/>
  +
| style="width: 1327px;" | каталог с пользователями (формат каталога идентичен каталогу AutoGRAPH Сервер V4)<br/>
  +
|-
  +
| style="width: 163px;" | dbf-directory-v4<br/>
  +
| style="width: 1327px;" | каталог с приборами - .atg-файлами (формат каталога идентичен каталогу AutoGRAPH Сервер V4)<br/>
  +
|-
  +
| style="width: 163px;" | dispatcher-rule-filename<br/>
  +
| style="width: 1327px;" | имя файла с правилами фильтрации<br/>
  +
|-
  +
| style="width: 163px;" | hash<br/>
  +
| style="width: 1327px;" | пересчитывать хэш загруженного файла или нет. По умолчанию false.<br/>
  +
| style="width: 93px;" | <br/>
  +
|}
   
 
== Создание каталогов и конфигурация серверов для загрузки ==
 
== Создание каталогов и конфигурация серверов для загрузки ==
  +
  +
Структура каталогов AGDataLoader выглядит следующим образом:
  +
  +
{| border="0" cellspacing="0" cellpadding="3"
  +
|-
  +
| http://wiki.tk-chel.ru/images/8/8b/Agdataloader-directories.gif<br/><br/>
  +
| style="vertical-align: top;" |
  +
&nbsp;В данном примере каталог 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

Текущая версия на 21:08, 27 сентября 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 приборов. Оптимальное значение - от 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