# Локальный агент

# Локальный агент — справка по компоненту

## Назначение

Локальный агент — дополнительный компонент для модуля Мониоринга. Представляет из себя службу на рабочей станции, которая отслеживает локальную очередь печати и передаёт данные о заданиях и USB-устройствах на сервер Мониторинга.

## Основные задачи

### Мониторинг USB-устройств

Сбор статистики по локально подключённым (по USB) принтерам и МФУ, недоступным для сетевого мониторинга по SNMP.

Поскольку Локальный агент не взаимодействует с устройством, он не получает напрямую от устройства:
- серийный номер устройства;
- показания счётчиков;
- состояние расходных материалов.

Учёт объёмов печати выполняется на основании данных о заданиях печати, полученных из локальной очереди операционной системы.

Для локальных устройств администратор может указать начальное значение счётчика отпечатков.

По мере выполнения заданий печати система автоматически увеличивает значение счётчика на основании данных, полученных от Локального агента.

При необходимости администратор может вручную скорректировать текущее значение счётчика в процессе эксплуатации.

### Мониторинг заданий печати

Сбор статистики печати по пользователям и подразделениям без использования ПринтМенеджера.

## Что собирает Локальный агент

Локальный агент не получает данные напрямую от принтера или МФУ.
Источником данных является локальная очередь печати операционной системы.
Из очереди печати агент получает информацию о заданиях, включая:
- пользователя;
- устройство печати;
- количество страниц;
- цветность;
- статус задания;
- другие параметры, доступные драйверу печати.

## Особенности
- Локальный агент отслеживает изменение статусов заданий печати. После получения статуса успешного завершения задание полностью записывается в статистику системы. Система учитывает задания целиком. Определение количества фактически напечатанных страниц внутри задания (например, 5 страниц из 7) не выполняется, поскольку такая информация отсутствует в локальной очереди печати операционной системы.
- Определение цветности задания зависит от драйвера печати. В некоторых случаях драйвер может пометить задание как цветное, даже если документ фактически содержит только чёрно-белые страницы. Для монохромных устройств система выполняет дополнительную проверку. Если драйвер сообщает о цветном задании, но устройство не поддерживает цветную печать, задание будет учтено как чёрно-белое. Для полноцветных устройств используется информация, полученная от драйвера. Анализ содержимого документа локальным агентом не выполняется. Проверка фактического содержимого документа доступна только при использовании ПринтМенеджера.
- Для авторизации агента на сервере используется ключ, указанный в настройках Мониторинга. Один ключ используется для всех Локальных агентов в рамках одной организации. Создавать отдельный ключ для каждого установленного агента не требуется.

## Связанные страницы

- [Мониторинг — справка по компоненту](http://wiki.printum.io/books/2-komponenty-sistemy/page/monitoring-spravka-po-komponentu)
- [Установка Локального агента на Windows](http://wiki.printum.io/books/3-ustanovka/page/ustanovka-lokalnogo-agenta-na-windows)
- [Установка Локального агента на Linux](http://wiki.printum.io/books/3-ustanovka/page/ustanovka-lokalnogo-agenta-na-linux)
- Мониторинг USB-устройств через локальный агент
- Мониторинг заданий печати через локальный агент

# Как Локальный агент отслеживает задания печати

## Описание

**Локальный агент** (внутреннее техническое название службы — Job Tracking Monitor, `PrintumJTMS`) — служба, устанавливаемая на АРМ пользователя или сервер печати. Её задача — отслеживать локальную очередь печати и отправлять информацию о заданиях в Мониторинг.

Служба работает в фоне и постоянно опрашивает очередь печати на наличие заданий. Отслеживаемые статусы заданий:

- `Printed` — задание напечатано;
- `Retained` — задание удержано в очереди;
- `Completed` — задание завершено.

## Как отправляются данные

Данные отправляются в Мониторинг по **TCP**, по протоколам HTTP или HTTPS и портам 8000 или 8001 соответственно. Доставка сообщений **не гарантирована**: при проблемах со связью часть событий может быть потеряна без возможности восстановления.

## Потенциальные проблемы

#### Потеря событий при нестабильном соединении

Если в момент отправки данных связь с Мониторингом прервалась, событие теряется. Механизма повторной отправки нет.

#### Быстрое удаление задания из очереди

Если задание исчезает из очереди быстрее, чем Локальный агент успевает его опросить, нужный статус может не зафиксироваться.

## Что важно для диагностики

#### Windows
- Логи агента записываются в стандартный журнал событий:
```
Просмотр событий → Журналы Windows → Приложение → Источник ServicePrintum
```
#### Linux
- Статус работы службы и логи работы:
```
sudo systemctl status printum-jtm.service
/var/log/printum-jtm
```
## Связанные страницы

- [Как работают локальные устройства](http://wiki.printum.io/books/1-arxitektura-i-koncepcii/page/kak-rabotaiut-lokalnye-ustroistva)
- [Процессы в Мониторинге](http://wiki.printum.io/books/1-arxitektura-i-koncepcii/page/processy-v-monitoringe)

# Мониторинг USB-устройств с помощью локального агента

## Описание

В стандартной конфигурации Принтум собирает статистику через Сетевой агент, который опрашивает устройства по SNMP. Однако в инфраструктурах с USB-устройствами или нестандартными устройствами сетевой опрос недоступен.
Для таких случаев используется локальный агент – небольшая программа, устанавливаемая на рабочие станции, к которым подключены USB-устройства. Агент отслеживает очередь печати на этой станции и передаёт в Мониторинг сведения о заданиях, пользователях и устройствах.
Также агент позволяет вести учёт печати заданий в разрезе пользователей и отделов при отсутствии ПринтМенеджера.
Даже при наличии ПринтМенеджера локальный агент может быть полезен, если компания хочет анализировать задания, отправленные мимо сервера (например, на личные или временные устройства).

## Как работает Локальный агент

Агент подписывается на события локальной очереди печати. Когда пользователь отправляет задание, агент фиксирует:
- пользователя (по учётной записи операционной системы);
- имя МФУ и тип подключения;
- количество страниц, цветность, формат;
- атрибуты задания (двусторонняя печать, размеры и др.).

Эти данные отправляются на сервер Мониторинга по протоколу HTTP\HTTPS и порту 8000\8001. В базе появляется запись о задании, которая в дальнейшем используется для отчётов.

## Ограничения и точность данных

#### Ограниченный набор параметров
В отличие от SNMP-опроса через cетевой агент, локальный агент не может получить счётчики устройства или состояние расходников. Он видит только атрибуты конкретного задания и базовую информацию о целевом USB-устройстве.
#### Ошибки драйвера
Оценка цветности и других атрибутов зависит от драйвера устройства. Иногда драйвер считает документ цветным, даже если он черно-белый, потому что пользователь отправил его без изменения настроек. Принтум корректирует очевидные несоответствия (например, исключает цвет для монохромных МФУ), но полностью исключить погрешности невозможно.
#### Нет контроля очередей
Локальный агент относится только к мониторингу. Он не способен удерживать задания или применять правила печати. Для полного контроля требуется ПринтМенеджер.

## Рекомендации по развёртыванию

1. Устанавливайте локальный агент только там, где действительно нужны данные о печати: на рабочих станциях с USB-устройствами или на отдельных АРМ с высокими требованиями к учёту.
2. Настраивайте агент в режиме «мониторинг только USB-устройств» (фильтрация по типу подключения), если вас интересует только статистика по USB-устройств. Периодически сверяйте собранную статистику со счётчиками устройств, чтобы корректировать возможные ошибки в определении цветности или страниц.