Перейти к основному содержимому
Версия: 8.6

Управление агентами

Основная информация

Агент — это специальная программа, которую можно установить на удаленное устройство с целью сбора данных и выполнения каких-либо действий (полный список поддерживаемых платформ).

Агент получает задания от сервера Monq, выполняет их и собранную информацию передает по защищенному сетевому протоколу на сервер.

Задания могут быть самого разного рода: запустить bash или PowerShell - скрипт, обратиться к HTTP REST интерфейсу, выполнить запрос к СУБД.

Для ускорения работы и упрощения написания заданий для агентов, используются плагины.
Плагины бывают как встроенные (например, плагин для работы с HTTP или плагины работы с наиболее популярными версиями СУБД), так и устанавливаемые на агенте отдельно (например, для сбора данных из Zabbix).

Также следует отметить, что мы предоставляем возможность разрабатывать собственные плагины самостоятельно, что бывает полезно в ряде случаев. Например, написать кастомный плагин для взаимодействия со специфической системой бронирования билетов.
Инструкция по написанию плагинов (github).

Подключение агентов к платформе Monq осуществляется через координатор по HTTPS протоколу, используя API-ключ для авторизации.

Координаторы обеспечивают возможность подключения агентов и выполняют распределение заданий потоков данных между подключенными агентами.

Изображение

Основные возможности агентов:

  • Обработка поступающих сценариев заданий
  • Генерация результирующего артефакта и отправка его в потоки данных
  • Прямой запуск команд взаимодействия с консолью ОС (sh, bash, windows command, powershell)
  • Запуск параллельного выполнения нескольких заданий
  • Подключение плагинов интеграций, таких как Zabbix, Kubernetes, vCenter, PostgreSQL, SCOM, Nagios и другие
По умолчанию все задания выполняются на системном агенте

Системный агент получает задания от системного координатора, имеющего метку SharedAgents

Подключение внешних агентов к системному координатору недоступно

Экран «Управление агентами»

Экран управления агентами и координаторами находится в разделе главного меню «Сбор данных (ETL)» «Управление агентами» и содержит следующие вкладки:

На каждой из них находится таблица со списком объектов и их параметрами, а также строка поиска и рубрикатор, обеспечивающие удобство фильтрации и быстрого поиска нужного объекта.

Доступ к экрану регулируется ролевой моделью: права зависят от назначенной пользователю роли.

Примеры использования агентов представлены в виде готовых сценариев заданий по сбору данных.

Координаторы

На вкладке «Координаторы» пользователю доступны следующие возможности:

  1. Просматривать список с уже созданными координаторами
  2. Выполнять действия с координаторами из списка
  3. Перейти в карточку координатора
  4. Создать новый координатор
  5. Поиск координаторов в списке
  6. Фильтрация координаторов в списке

Изображение

Список координаторов

На вкладке «Координаторы» представлена таблица со списком существующих координаторов. Таблица имеет следующие поля:

  • Название: рядом с названием расположена иконка-индикатор активности координатора
  • Метки: рядом с названием метки присутствует иконка Изображение, говорящая о принадлежности метки координатору. Также отображается числовая индикация общего количества меток координатора. Клик по ней раскрывает список всех меток.
  • API-ключ
  • Состояние: одновременно отображает текущее состояние ВКЛ/ВЫКЛ и позволяет его переключить
Системный координатор в списке не отображается

Поиск координаторов

Для быстрого поиска и фильтрации координаторов пользователю доступны 2 инструмента, способных работать в паре:

  • Строка поиска
    Позволяет фильтровать список по полям «Имя», «Описание» и «API-ключ»
  • Рубрикатор
    Предоставляет возможности фильтрации по параметрам:
    • Состояние: запущен или остановлен
    • Метки: отображается до 5 меток текущего контекста (с возможностью развернуть полный список или найти через строку поиска)

Между собой блоки рубрикатора связаны логическим «И», что позволяет комбинировать фильтры для более точного поиска.
Рядом с каждым выбранным параметром отображается количество координаторов, соответствующих фильтру.

Создание координаторов

  1. Нажмите в верхнем правом углу экрана «Создать координатор».
  2. Заполните поля:
    • Владелец
    • Название координатора
    • Добавьте метки
      Метки используются для распределения заданий потоков данных между координаторами

      При добавлении метки на координатор, она автоматически присваивается всем подключенным к нему агентам.

      при добавлении метки SharedAgents к созданному координатору

      планировщик распределит запуск заданий с меткой SharedAgents (установленной по умолчанию) также и на подключенные агенты.

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

  3. Нажмите «Создать»

Готово, новый координатор создан, API-ключ для подключения агентов скопирован в буфер обмена.

Настройка координаторов

Для управления настройками координаторов необходимо перейти в карточку одного из них, кликнув по нему в общем списке.

В верхней части карточки пользователю отображается:

  1. «Хлебные крошки» с возможностью вернуться на вкладку «Координаторы»
  2. Название координатора с иконкой-индикатором состояния: «Запущен» / «Остановлен»
  3. API-ключ (с возможностью копирования)
  4. Количество активных агентов координатора с возможностью перехода к ним
    При переходе откроется вкладка «Агенты» с выбранным координатором и состоянием «Запущен» (даже если агентов 0)
  5. Управление состоянием
  6. Дополнительные действия Изображение, такие как остановка координатора, копирование API-ключа, перевыпуск API-ключа и удаление координатора

Основная информация

  • Владелец: выбирается из списка РГ, в которых у пользователя есть право на редактирование раздела «Координаторы агентов»
  • Название: должно быть уникальным в рамках РГ
  • Описание
  • Метки: позволяют назначать координатору собственные идентификаторы, которые автоматически распространяются на все подключенные к нему агенты, обеспечивая их удобную идентификацию и фильтрацию.
    Особенности работы с метками:
    • Добавление меток возможно из списка уже доступных в контексте владельца координатора или создание собственных уникальных меток
    • Метки чувствительны к регистру: «Метка» и «метка» - считаются разными
    • Нельзя добавить одинаковую метку дважды на один координатор
    • При смене РГ координатора уже назначенные метки сохраняются
    • Установленные на координаторе метки автоматически наследуются всеми подключенными к нему агентами
    • Чтобы метка добавилась, после ее ввода нажмите Enter или пробел
    • Чтобы добавить метку с пробелом в названии, используйте copy-paste

Для удаления метки просто снимите её в интерфейсе, после чего она перестанет применяться к координатору и его агентам.

Конфигурации агентов

В секции «Конфигурации агентов» можно настраивать распределяемые рабочие конфигурации на подключенные к координатору агенты. Здесь можно создавать новые конфигурации, просматривать уже существующие, изменять их параметры, управлять состоянием, настраивать логику распределения по меткам агентов, а также удалять конфигурации при необходимости.

Конфигурация распределяется на агент по аналогии с заданиями, однако выполняется непрерывно, занимая слот агента.

Все изменения применяются динамически, без перезапуска агентов

Создание новой конфигурации

  1. Нажмите «Создать конфигурацию»
  2. После создания конфигурация сразу появляется в списке и отрывается боковая панель с настройками:
    • Состояние конфигурации — по умолчанию выключено
    • Название — автоматически присваивается «Новая конфигурация агента [N]», где N — порядковый номер новой конфигурации. Название должно быть уникальным в пределах одного координатора
    • Описание — произвольный текст для удобства идентификации
    • Метки агентов — определяют, каким агентам будет выдаваться конфигурация
      • «Агент содержит любую метку из списка» - применяется логический оператор «ИЛИ»
      • «Агент содержит все метки из списка» - применяется логический оператор «И»
        • Если агент имеет все указанные метки + еще какие-то - он все равно получит такую конфигурацию
        • Если хоть одна метка не существует - конфигурация не будет выдана т.к. агент не найдется
      • Несуществующая метка помечается особым образом, и при сохранении пользователь увидит предупреждение
      • Такая метка может стать валидной, если впоследствии подключится агент с этой меткой
      • Можно указать одну или несколько меток
      • Метки чувствительных к регистру
    • Содержимое файла конфигурации - YAML-скрипт, который определяет логику работы на стороне агента. По умолчанию пустой. Доступна проверка корректности заполнения с точки зрения синтаксиса YAML
  3. По завершении настройки сохраните конфигурацию

Сразу после сохранения новая конфигурация отображается в конце списка. При обновлении страницы конфигурации сортируются по алфавиту

Запуск и остановка координаторов

После создания нового координатора он переходит в состояние «Запущен» автоматически. Координатор сразу начинает распределять задания на подключенные к нему агенты.

Запуск и остановка могут выполняться как из общего списка координаторов, так и из личной карточки одного из них.

Кнопка запуска в списке координаторов находится в столбце «Состояние», а в личной карточке - в правом верхнем углу экрана. Изображение

Изображение

При остановке работы координатора

агенты останутся подключенными к нему, но задания на них распределяться больше не будут

Перевыпуск API-ключа

Перевыпуск API-ключа доступен как из общего списка координаторов, так и из личной карточки одного из них.

Кнопка перевыпуска находится в меню дополнительных действий Изображение «Перевыпустить API-ключ»

После перевыпуска API-ключа

все подключенные к координатору агенты потеряют связь с системой, для их подключения необходимо будет заменить API-ключ в конфигурациях агентов на новый

Удаление координаторов

Удаление координатора доступно как из общего списка координаторов, так и из его личной карточки.

Кнопка удаления находится в меню дополнительных действий Изображение «Удалить»

при удалении координатора

все подключенные к нему агенты потеряют связь с системой, а задания будут распределены на другие агенты при наличии на них соответствующих меток

Агенты

Список агентов

На вкладке «Агенты» представлена таблица со списком существующих агентов. Таблица имеет следующие поля:

  • Название: рядом с названием расположена иконка-индикатор активности агента
  • Тип: статический/динамический
  • IP-адрес
  • Координатор
  • Метки: рядом с названием метки присутствует иконка, говорящая о типе конфигурации. Также отображается числовая индикация общего количества меток агента. Клик по ней раскрывает список всех меток.
  • Конфигурации
  • Слоты

Поиск агентов

Для быстрого поиска и фильтрации агентов пользователю доступны 2 инструмента, способных работать в паре:

  • Строка поиска
    Позволяет фильтровать список по полям «Имя», «Описание» и «API-ключ»
  • Рубрикатор
    Предоставляет возможности фильтрации по параметрам:
    • Состояние: запущен или остановлен
    • Тип: статический или динамический
    • Координатор, к которому подключен искомый агент
    • Метки: отображаются личные метки агентов, а также метки координаторов с отличительной иконкой Изображение
    • Конфигурации: отображаются конфигурации агентов с соответствующими их типу отличительными иконками

Между собой блоки рубрикатора связаны логическим «И», что позволяет комбинировать фильтры для более точного поиска.
Рядом с каждым выбранным параметром отображается количество агентов, соответствующих фильтру.

Состояние подключенных агентов

Чтобы увидеть подключенные, на текущий момент, агенты к координатору, выполните следующие действия:

  1. Перейдите через основное меню в раздел Сбор данныхАгенты

  2. Откройте вкладку Агенты

  3. На вкладке Агенты отображается информация о подключенных к координатору агентах:

    • Последний контакт – время, когда агент был активен

    • Название агента – имя агента, указанное в конфигурационном файле агента

    • Тип – Динамический или Статический (подробнее о типах агентов)

    • Состояние – Активен или Недоступен

    • Версия – версия подключенного агента

    Цифра возле названия вкладки информирует о количестве подключенных агентов к координатору.

Статические агенты, которые не активны в данный момент – могут быть удалены из списка подключенных к координатору.

Чтобы удалить эти агенты, нажмите кнопку Удалить расположенную следом за версией агента.

Состояние выполнения заданий

Для просмотра информации о назначенных для выполнения заданиях на координаторе, выполните следующие действия:

  1. Перейдите через основное меню в раздел Сбор данныхАгенты.
  2. Откройте вкладку Задания.
  3. На вкладке Задания отображается информация о назначенных для выполнения заданий из шаблона конфигурации потока данных:
    • Последний запуск – время последнего запуска задания на агенте
    • Последний статус – статус выполнения последнего задания на агенте
    • Владелец задания – поток данных, которому принадлежит задание
    • Название – название задания в шаблоне конфигурации потока данных
    • Метки – информация о метках, связывающих координатор с заданием шаблона конфигурации
  4. Произведите сортировку списка заданий по полям:
    • Последний запуск
    • Последний статус
    • Владелец задания
    • Название

Изображение

Поиск на вкладке Задания осуществляется по полям: Название и Владелец задания.

Подключение агента

Перед подключением агента его необходимо загрузить и произвести конфигурацию.

Загрузка агента

Агенты Monq доступны для загрузки по следующим ссылкам:

Агент для Windows

Агент для Linux

Для подключения агента необходимо иметь API-ключ координатора. Если координатор не создан вернитесь к его созданию.

Агент подключается к координатору Monq по протоколу HTTPS (SignalR) c указанием API-ключа и базового URL системы.

Установка в Linux

  1. Создайте рабочую директорию для агента и перейдите в нее:

    mkdir -p /opt/monq-agent && cd /opt/monq-agent
  2. Загрузите актуальную версию monq-agent:

    wget https://downloads.monq.ru/tools/monq-agent/latest/linux-x64/monq-agent.zip
  3. Разархивируйте загруженный архив в текущую директорию:

    unzip monq-agent.zip && rm -f monq-agent.zip
  4. Сделайте двоичный файл monq-agent исполняемым:

    chmod +x ./monq-agent
  5. Установите зависимости libicu, совместимой с вашей версией Linux:

    • CentOS/RHEL

      yum install libicu
    • Debian/Ubuntu

      # найти актуальную версию
      apt search '^libicu[0-9]*$'

      # выполнить установку найденной версии, например 66
      apt install libicu66
  6. Далее произведите настройку конфигурационного файла

Установка в Windows

  1. Загрузите актуальную версию monq-agent.
  2. Извлеките содержимое архива в папку, например: C:\monq-agent\monq-agent.exe.
  3. Далее произведите настройку конфигурационного файла

Конфигурация агента

Создайте в директории с исполняемым файлом файл конфигурации monitoring-agent.conf, следующего содержания:

# Базовый URI системы Monq
BaseUri="https://monq.domain.com"
# API-ключ координатора для авторизации агента
ApiKey="fc63b95b-0393-430a-b8d0-46a8c4813675"
FileStorage=""
Timeout=100
[Plugins]
CSharpPath="/opt/monq-agent/plugins"
[Connection]
Timeout=100
RetryCount=12
[Agent]
Description=""
SlotsCount=2

Полное описание параметров конфигурации агента смотрите в таблице:

Параметр конфигурацииОписаниеОбязательный параметрЗначение по умолчанию
BaseUriБазовый URL системы (https://monq.domain.com)данет
ApiKeyAPI-ключ координатора для авторизации агентаданет
FileStorageПуть к хранилищу файловнетнет
TimeoutТаймаут выполнения заданий, в секундахнет100
[Plugins]Секция управления плагинами
CSharpPathПуть к директории с плагинами агентанетнет
AutoloadАвтозагрузка плагинов с хранилищанетfalse
[Connection]Секция управления настройками подключения
TimeoutТаймаут на установку соединения, в секундахнет30
RetryCountКоличество попыток установки соединениянет12
[Agent]Секция конфигурации агента
NameНазвание агентанетнет
DescriptionОписаниенетнет
SlotsCountКоличество слотов для выполнения заданийнет2
Labels:1-NПерсональная метка агента с порядковым номером от 1 до Nнет2
[WorkConfigs]Секция настройки "рабочих" конфигураций
PathПуть к "рабочим" конфигурациямнетнет
[Serilog:MinimumLevel]Секция настройки уровня логирования
DefaultУровень логированиянетInformation
[Buffer]Секция настройки буфера (только при использовании рабочих конфигураций)
BufferPathПуть к директории, в которой хранить буфер приеманетнет
BufferTotalLimitSizeМаксимальный размер выделяемой памяти на диске для хранения очереди, в байтахнет134217728
FlushTimeЧастота отправки файлов очерединет"00:00:01"
MaxChunksInMemoryМаксимальное количество порций для отправки в систему за одну операциюнет128
BacklogMemoryLimitЛимит размера всех порцийнет5242880

Рабочие конфигурации агентов

Начиная с версии агента 2.1.0 появилась возможность настройки непрерывного выполнения заданий на агенте. Это удобно для прослушивания TCP/UDP портов, приема логов в формате syslog и других подобных задач.

Настройка таких заданий выполняется при помощи рабочих конфигураций агента.

Формат, используемый в файлах рабочих конфигураций - YAML.

Каталог хранения рабочих конфигураций задается в основном конфигурационном файле в секции [WorkConfigs], параметр Path. При запуске агента считываются все конфигурационные файлы *.yaml и *.yml в указанном каталоге.

Для каждой рабочей конфигурации требуется выделение 1 слота агента. Если количество слотов на агенте будет меньше, чем количество конфигураций, часть конфигураций будет проигнорирована.

Пример файла рабочей конфигурации агента:

continuous-jobs:
- init-step:
plugin: tcp
with:
listen: 0.0.0.0
port: 5170
separator: \n
bufferType: memory
bufferInputName: tcp.job1
bufferSize: 20
chunkSize: 20
format: none
streamKey: "ключ потока"

На текущий момент имеются следующие встроенные плагины для настройки рабочих конфигураций: tcp, udp, syslog.

Справочную информацию о доступных параметрах этих плагинов можно найти в разделе Справочник - Плагины агентов.

Персональные метки агентов

Для более гибкой настройки распределения заданий на агенты, существует возможность установить персональную метку на агент.

В файле конфигурации можно добавить любое количество персональных меток в формате:

...
[Agent]
# Название
# Name="monq-agent-hostname"
# Описание
# Description=""
# Количество слотов для выполнения заданий
# SlotsCount=2
# Метки агента
Labels:1 = "Agent2"
Labels:2 = "GeneralLabel"
...

После подключения агента к координатору, все указанные метки будут доступны для выбора в поле «Агент» в задании потока данных.

Типы агентов

Агент может быть сконфигурирован как статический или динамический:

  • Статические агенты - это агенты, состояние которых контролирует координатор. При подключении статического агента координатор регистрирует его в списке подключенных агентов и контролирует его состояние.

  • Динамические агенты - видны в системе до тех пор, пока они активны. При отключении динамического агента, он пропадает из списка подключенных к координатору.

Для управления типом агента, служит параметр конфигурации Name - название агента:

  • Если параметр Name не задан - координатор устанавливает агенту тип динамический и присваивает автоматически сгенерированное название.
  • Если параметр Name задан - координатор устанавливает агенту тип статический и регистрирует его с заданным названием.

⚠️ Подключение нескольких агентов с одинаковыми названиями недопустимы. Названия агентов при подключении проверяются в рамках пользовательского пространства.

Подключение плагинов

Плагины доступны для загрузки по ссылке.

Для подключения плагина к агенту, извлеките архив с плагином в директорию, указанную в конфигурационном файле агента (CSharpPath=/opt/monq-agent/plugins).

Информацию по настройке плагинов можно найти по ссылке.

Начиная с версии Monq 8.3.0 плагины на агенты могут загружаться автоматически. Для включения этой опции необходимо добавить параметр Autoload со значением True в секции "[Plugins]".

Автоматическая загрузка плагинов на агент работает следующим образом: При получении нового задания, агент проверяет наличие необходимого плагина в указанной в файле конфигурации директории CSharpPath (например, /opt/monq-agent/plugins). Если в директории нужный плагин есть - задание выполняется. Если нужного плагина в директории нет - агент запросит плагин из хранилища (при условии, что включен параметр Autoload=True), сохранит его в свою директорию CSharpPath и без перезапуска продолжит исполнение полученного задания.

Запуск

Поддерживаемые команды
  • start - Запуск агента.

Использование: monq-agent [options] start

Параметры запуска:

  • --config <config> - путь к конфигурационному файлу, по умолчанию конфигурационный файл monitoring-agent.conf.
  • --insecure - не использовать проверку SSL сертификата, по умолчанию выключено.
  • -?, -h, --help - показать справку.

Запуск в Linux

Для запуска агента в качестве сервиса необходимо в директории /etc/systemd/system/ разместить файл конфигурации monq-agent.service:

  • Пример конфигурации для запуска службы от имени суперпользователя:

    [Unit]
    Description=Monqlab Agent Service
    Documentation=https://docs.monq.ru/

    [Service]
    Type=notify
    WorkingDirectory=/opt/monq-agent
    ExecStart=/opt/monq-agent/monq-agent start --config /opt/monq-agent/monitoring-agent.conf
    StandardOutput=syslog
    User=root

    [Install]
    WantedBy=multi-user.target
    Alias=monq-agent.service
  • Пример конфигурация для обычного пользователя

    Создание пользователя и назначение владельцем директории с monq-agent

    useradd --no-create-home --shell /bin/false -d /opt/monq-agent monq
    chown -R monq:monq /opt/monq-agent

    Пример конфигурации Unit Systemd:

    [Unit]
    Description=Monqlab Agent Service
    Documentation=https://docs.monq.ru/
    [Service]
    Type=notify
    WorkingDirectory=/opt/monq-agent
    Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=/opt"
    ExecStart=/opt/monq-agent/monq-agent start --config /opt/monq-agent/monitoring-agent.conf
    User=monq
    [Install]
    WantedBy=multi-user.target
    Alias=monq-agent.service

Управление сервисом осуществляется через команды systemctl:

  • Загрузить новый файл конфигурации systemd (выполняется при изменении файла monq-agent.service)

    sudo systemctl daemon-reload 
  • Проверить статус сервиса monq-agent.service

    sudo systemctl status monq-agent.service 
  • Запустить сервис monq-agent.service

    sudo systemctl start monq-agent.service 
  • Открыть логи сервиса monq-agent.service

    sudo journalctl -u monq-agent.service -f 

Запуск в Windows

Для запуска monq-agent в качестве службы Windows необходимо от имени Администратора создать и зарегистрировать службу с помощью утилиты для командной строки Диспетчер управления службами Windows.

Пример:

# Создать службу
sc.exe create MonqAgent binPath= "C:\monq-agent\monq-agent.exe start --config C:\monq-agent\monitoring-agent.conf"
# Запустить службу
sc.exe start MonqAgent
# Остановить службу
sc.exe stop MonqAgent
# Удалить службу
sc.exe delete MonqAgent

Запуск в Kubernetes

Репозиторий Monq agent в GitHub

Установка Monq agent через Helm

Должен быть установлен Helm для использования чартов.

Пожалуйста, обратитесь к документации по Helm, чтобы начать.

Когда Helm будет настроен правильно, установите последнюю версию чарта с именем релиза monq-agent следующей командой:

kubectl create namespace monq

helm upgrade --install monq-agent monq-agent --repo https://monqdl.github.io/monq-agent --namespace monq \
--set config.baseUri="https://monq.mydomain.com" --set config.apiKey="<my coordinator key>"

Удаление Monq agent через Helm

Для удаления monq-agent выполните следующую команду:

helm delete monq-agent -n monq

Данная команда удаляет все компоненты Kubernetes, связанные с чартом, и удаляет релиз.

Параметры конфигурация агента при установке через Helm

КлючТипЗначение по умолчаниюОписание
config.baseUristringnilПолностью определенное доменное имя (FQDN) экземпляра Monq
config.apiKeystringnilAPI ключ координатора Monq
config.fileStoragestringnilПуть к хранилищу файлов агента
config.timeoutint100Таймаут для подключения к экземпляру Monq
config.pluginsPathstringagent-pluginsПуть к хранилищу плагинов агента
config.retryCountint10Количество попыток повторного подключения к экземпляру Monq
config.slotsCountint2Количество активных слотов агента
replicasint1Количество реплик агента
image.repositorystringghcr.io/MONQDLРепозиторий образов контейнеров
image.namestringmonq-agentНазвание образа
image.pullPolicystringIfNotPresentПолитика загрузки образа
image.tagstringnilТэг образа, используется AppVersion, если не определено
imagePullSecretslist[]Необязательный массив imagePullSecrets, содержащий учетные данные для доступа к закрытому реестру образов # Справка: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
resources.limits.cpustringnilЛимит использования ЦПУ
resources.limits.memorystringnilЛимит использования памяти
resources.requests.cpustring250mЗапрашиваемые ресурсы ЦПУ
resources.requests.memorystring256MiЗапрашиваемые ресурсы памяти
nodeSelectorobject{"kubernetes.io/os":"linux"}Метки nodeSelector для распределения пода на ноде # Справка: https://kubernetes.io/docs/user-guide/node-selection/ #

Установка при помощи манифеста

Установите Monq-agent в качестве развертывания (Deployment) на ваш кластер Kubernetes, применив манифест:

export MONQ_URI="https://monq.mydomain.com"
export MONQ_KEY="<my coordinator key>"

curl https://raw.githubusercontent.com/MONQDL/monq-agent/master/manifests/monq-agent/monq-agent.yaml -o monq-agent.yaml

envsubst < monq-agent.yaml | kubectl apply -f -

Этот манифест также создает ClusterRole, ClusterRoleBinding, ServiceAccount и Secret для работы с компонентами кластера.

Траблшутинг при подключении

Подключение в legacy-mode

В случае если необходимо подключить monq-agent, работающий на операционной системе:

  • Windows Server 2008
  • Windows 7
  • Windows Server 2012
  • Windows 8
  • Windows 8.1

Cистемному администратору инфраструктуры Monq необходимо разрешить в конфигурации ingress-nginx-controller использование cipher поддерживаемых устаревшими ОС.

Для этого в configMap ingress-nginx-controller необходимо добавить следующую опцию:

kubectl edit cm -n ingress-nginx ingress-nginx-controller
...
ssl-ciphers: "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256"
...

При возникновении ошибок с загрузкой DLL при запуске monq-agent в данной ОС Windows необходимо дополнительно установить Microsoft Visual C++ 2015 Redistributable (x64)

Проверка подключения

Об успешном запуске и подключении агента к платформе, свидетельствует запись в лог-файле:

sudo journalctl -u monq-agent.service -f 
Nov 23 13:37:39 elk monq-agent[102088]: [2021-11-23 13:37:39 +03:00 INF] Establishing connection.
Nov 23 13:37:44 elk monq-agent[102088]: [2021-11-23 13:37:44 +03:00 INF] Connection established.

  1. Перейдите в раздел Сбор данных - Агенты.
  2. Откройте координатор к которому выполнялось подключение агента.
  3. Перейдите на вкладку «Агенты» и убедитесь в том, что агент подключен.

Изображение

⚠️ Если домен на котором работает Monq подписан self-signed сертификатом безопасности необходимо добавить параметр --insecure в строке запуска агента.

Внимание

После успешного подключения агента переходите к конфигурации заданий по сбору данных.

Настройка логирования

Пример настройки логирования агента в файл:

...
[Serilog:WriteTo:0]
Name="File"

[Serilog:WriteTo:0:Args]
path="D:\\monq-log.txt"
rollingInterval="Day"

[Serilog:MinimumLevel]
Default="Debug"

[Serilog:MinimumLevel:Override]
Microsoft="Debug"
System="Debug"
...

Дополнительную информацию по конфигурации Serilog можно найти по ссылке.

Тонкая настройка соединения

Возможны ситуации, когда расположенные на большом расстоянии или имеющие медленный интернет агенты, не успевают установить соединение с Monq и попытка соединения обрывается по таймауту установки защищенного соединения.

Пример записи из лога:

[2024-02-08 13:10:59 +00:00 INF]  Establishing connection.
[2024-02-08 13:11:14 +00:00 ERR] The server disconnected before the
handshake could be started.System.IO.IOException: The server disconnected before the handshake could be
started.
at
Microsoft.AspNetCore.SignalR.Client.HubConnection.HandshakeAsync(ConnectionState
startingConnectionState, CancellationToken cancellationToken)

Изменить параметры соединения можно с помощью клиента управления monqctl через команду monqctl registry apply применительно к сервису pl-agents-service (объект Hub).

Список свойств, доступных для настройки:

СвойствоОписаниеФорматПримерПо умолчанию
KeepAliveIntervalИнтервал, используемый сервером для периодической проверки связи с клиентами. При изменении значения здесь, следует также изменить ServerTimeout в настройках клиентовD.HH:mm:ss (string)"0.00:00:10"10 секунд
HandshakeTimeoutИнтервал таймаута входящих запросов подтверждения от клиентов. Менять этот параметр стоит только в случае возникновения ошибок по таймауту из-за серьезной задержки в сетиD.HH:mm:ss (string)"0.00:00:15"15 секунд
ClientTimeoutIntervalИнтервал, за который клиенты должны обработать сообщение, прежде чем сервер разорвет соединение. Рекомендуемое значение: как минимум х2 от KeepAliveInterval сервераD.HH:mm:ss (string)"0.00:00:30"30 секунд
EnableDetailedErrorsФлаг отправки клиенту подробных сообщений об ошибкахbooleantruefalse
MaximumReceiveMessageSizeМаксимальный размер одного входящего сообщения в байтахnumber10485761МБ
StreamBufferCapacityМаксимальный размер буфера для клиентских потоков загрузки данныхnumber1010
MaximumParallelInvocationsPerClientКоличество параллельно выполняемых клиентами методов концентратораnumber21
Применяемая настройка обновляет все свойства!

Если обновить только одно, например KeepAliveInterval, остальные свойства затрутся значениями по умолчанию.

Поэтому перед применением изменений рекомендуется сначала проверить исходную настройку, полностью скопировать всю выданную структуру, в ней изменить необходимые значения свойств на желаемые и/или добавить новые, после чего применить конфигурацию:

  1. Проверка текущей конфигурации:
monqctl registry get microservice-parameters pl-agents-service --output json | jq '.[] | select(.Name == "Hub") | .Value'
  1. Пример ответа, выводимого в консоль:
{
"MaximumReceiveMessageSize": 1048576
}
  1. Применение новой конфигурации с обновленными свойствами:
monqctl registry apply microservice-parameter pl-agents-service \
--name=Hub \
--settingsKey="appsettings-scheduler.json" \
--value='
{
"MaximumReceiveMessageSize": 9999999999,
"EnableDetailedErrors": true,
"MaximumParallelInvocationsPerClient": 2
}
'

Кроме того, расширена конфигурация самого агента, т.к. соединение по веб-сокетам двухстороннее и требует настройки как на клиенте, так и на сервере одновременно:

[Connection]
# Глобальный таймаут установки и регистрации соединения в секундах.
# Значение по умолчанию - 30 секунд.
Timeout=30
# Количество попыток установки соединения.
# Значение по умолчанию - 12.
RetryCount=12
# Таймаут активности сервера.
# Если сервер не отправил сообщение за этот интервал, клиент считает, что сервер отключен, и закрывает соединение.
# Это значение должно быть достаточно большим, чтобы ping-сообщение могло быть получено клиентом за данный интервал.
# Рекомендуемое значение — по меньшей мере удвоенное значение KeepAliveInterval сервера.
# Значение по умолчанию - 30 секунд.
ServerTimeout="00:00:30"
# Таймаут запросов подтверждения с сервера.
# Если сервер не отправил ответ на handshake-сообщение в течение этого интервала, то клиент закрывает соединение.
# Менять этот параметр стоит только в случае возникновения ошибок по таймауту из-за серьезной задержки в сети.
# Рекомендуемое значение - не меньше, чем значение Timeout.
# Значение по умолчанию - 15 секунд.
HandshakeTimeout="00:00:15"
# Интервал, с которым клиент отправляет ping-сообщения для проверки связи.
# Если клиент не отправил сообщение за ClientTimeoutInterval, установленном на сервере, то сервер считает, что клиент отключен.
# Значение по умолчанию - 10 секунд.
KeepAliveInterval="00:00:10"