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

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

26.03.2019
23 июня 2011 в 09:59

Опытные мелочи-6, или «Учет и контроль печатника Ивана Федорова»

  • Системное администрирование

В этом посте я расскажу о небольшом, но по-своему интересном опыте использования протокола SNMP для сбора статистики печати в организации.

В компании, о которой идет речь, довольно много печатают. Есть и большие, мощные принтера (типа HP 9000) и средние, и совсем уж Home класса. Благо, все они сетевые, и ассортимент производителей узок, всего два: HP и Ricoh (в разных ипостасях, от NRG до MB). И вот в один прекрасный весенний день, посмотрев на счета за канцелярию, бережливым руководством была поставлена задача: регулярно собирать статистику печати, «чтоб потом анализировать» . Причем сильно они и не заморачивались: «Все принтера сетевые, у них есть страничка статистики, с утра сели обошли по списочку, записали циферки в Excel, вот и все - делов-то» !

Естественно, на наш взгляд, это было неинтересно, глупо и «утомительно», т.к. принтеров в организации довольно много. И мы стали думать «как бы сделать так, чтоб оно само работало». Вообще, мне кажется, это желание («чтоб оно само работало») является ключевым и необходимым для каждого системного администратора, и те, у кого это получается раз за разом, всегда вызывают у меня добрую, белую зависть.

С ходу отринув парсеры веб-страниц (неправильно это, да и, например, у Ricoh страницы были динамическими, не было жесткого URL куда обращаться), мы обратились к старому доброму SNMP. И вот что из этого получилось.

Здесь наверное стоит сделать небольшое отступление для тех, для кого аббревиатура SNMP пока ничего не значит. Господа, вы многое упускаете! В срочном порядке рекомендую уделить вечер другой и изучить вопрос хотя бы на базовом уровне. Если быть кратким, SNMP - это протокол управления и мониторинга, работающий на основе UDP. Подавляющее большинство устройств(если не все), имеющих сетевой интерфейс, поддерживают этот протокол, и позволяют с его помощью не только собирать данные о работе устройства, но и управлять самим устройством. Данные (объекты), которые доступны по SNMP-протоколу, т.н. OID, организованы в иерархическом порядке. На бытовом плане это означает, что если спросить у устройства значение OID с «номером» .1.3.6.1.4.1.11, то устройство ответит и передаст это значение. А зная какой OID соответствует нужному нам значению, можно написать небольшой скрипт, который будет опрашивать устройства и собирать их ответы в базу. Опрашивать устройства можно, например, с помощью вот этих замечательных и бесплатных утилит . Забегая вперед, скажу что в нашем конкретном случае пригодились Snmpget и SnmpWalk .

Алгоритм в целом был понятен, утилиты были под рукой, осталось самое интересное - понять какие же OID обозначают то, что нам нужно: счетчик напечатанных страниц. Полное описание переменных устройства, т.н. MIB-базы довольно непросто найти (можно попробовать поискать ), но можно пойти и другим путем.

С помощью утилиты SnmpWalk , один раз опросив устройство, вы получаете с него ВСЕ OID с их значениями, которые оно способно выдать. Со своей стороны, мы четко знаем какие именно ЗНАЧЕНИЯ нам нужны (мы ведь можем узнать их текущее состояние на веб-странице). Дальше уже остается дело за малым:

  • Собираем в текстовый файл полную карту устройства с помощью SnmpWalk .
  • Узнаем через веб-интерфейс текущее число напечатанных страниц, которое нам требуется
  • Ищем в файле число напечатанных страниц, и таким образом узнаем код OID.
  • Используем полученный OID в нашем скрипте
Несколько замечаний
  • Каждый производитель в однотипных устройствах почти всегда придерживается единой структуры MIB. Соответственно номер OID, соответствующий например счетчику Total Pages Number будет единым для всех принтеров HP (за редким исключением). Это позволяет написать «шаблон опроса», которому будут соответствать многие принтера одного производителя.
  • Иногда в процессе анализа файла snmpwalk находится несколько искомых значений. Тут можно либо напечатать еще одну страничку и, снова собрав данные, определить какой OID содержит нужный нам счетчик, либо просто выбрать немного подумав логически (помним про иерархичность структуры!).
  • Некоторые принтера не показывая на веб-странице определенных счетчиков, тем не менее, позволяют их собрать по SNMP. Например, на веб-странице есть только Total счетчик страниц, но с помощью SNMP можно получить и более подробные значения (дуплекс, А3, число «запросов на печать» и т.д.)
  • Собирать данные лучше сразу куда-нибудь в базу «для последующего анализа». В нашем же случае, по настоянию хозяйственников, я писал все в текстовый файл, который затем автоматически открывался в Excel, и с помощью макроса раскладывался по ячейкам. С Excel хозяйственникам работать было проще, чем с SQL, ну а я лично был не против.
  • С помощью этого нехитрого способа за несколько месяцев мы построили довольно неплохую статистику печати в компании, разумно, с цифрами на руках получили бюджет на более мощные принтера в ряд отделов, и выяснили отношения с компанией заправщиком картриджей, когда выяснилось, что ряд их продукции вместо положенных 15000 страниц выдает на одной заправке от силы 6000.

В качестве бонуса приведу текст скрипта , Excel-макроса и дам несколько пояснений:

  • в начале кода скрипта описаны настройки (пул IP-адресов оборудования, и шаблоны опроса).
  • несмотря на то, что у производителей обычно единая структура MIB, в некоторых случаях, оборудование разного класса все таки имеет разные OID для одних и тех же данных (например у принтеров НР ниже 2ХХХ серии OID для получения серийного номера - один, а выше - другой.
  • для более мощных принтеров мы собираем не только TotalPagesCount, но и всякие другие счетчики (копир, A3, дуплекс и т.д.)
  • у HP есть такое понятие TotalpagesCountEquivalent - это число именно НАПЕЧАТАННЫХ страниц, т.е. полностью прошедших по печатному тракту. В то время как просто TotalPagesCount по версии НР - это число листов взятых из устройств подачи бумаги. Разница между ними - фактически равна замятиям.
  • скрипт собирает серийные номера принтеров, чтобы к ним потом в Excel привязывать данные, а также IP, дату и сетевое имя - это уже просто так, для наглядности.
  • в конце скрипт запускает лежащий рядом с ним Excel-файл, который в свою очередь при открытии запускает макрос, который уже и раскидывает все по полочкам. Довольно сумбурная система, но это результат разделения труда, т.к. от меня хотели голые данные, а «аналитику мы сами напишем». Вот и написали. В нем я уже не смогу что-то подробно объяснить, но попробую.
  • макрос действует так: открывает файл со статистикой, забирает оттуда все данные, копирует цифры статистики в нужные колонки таблицы, привязываясь к серийному номеру обрудования, переименовывает сегодняшний файл статистики в *.bak, закрывает Excel.
  • Макрос пришлось подписать внутренним сертификатом, т.к. отключать безопасность макросов в Excel совсем не хотелось, а без этого автоматически макрос не стартует. И, кстати, это было натуральным квестом, т.к. как и чем подписывать макрос ни я ни его авторы на тот момент понятия не имели:)

Расскажу о простом и эффективном способе наблюдения за сетевыми принтерами в организации. Речь пойдет о настройке мониторинга за состоянием принтеров HP, Kyocera, Brother через snmp с помощью Zabbix. Собирать буду значения напечатанных страниц за все время, состояние тонера, название картриджа и серийный номер принтера.

Практически все современные принтеры умеют отдавать данные о своем состоянии через протокол snmp. Система мониторинга Zabbix позволяет без проблем собирать эти данные, хранить, настраивать оповещения на различные события. В своем примере я буду отправлять уведомление, если уровень тонера в картридже будет опускаться ниже 10%.

Казалось бы актуальный запрос, но в сети я не нашел готового решения по этой теме. Есть всякие обсуждения, просьбы о помощи с настройкой, решения проблем. Но вот так, чтобы все было в одном месте мне не попалось. Постараюсь восполнить этот пробел. Самая большая проблема здесь — найти актуальные MIB и OID для собираемых значений. Если выполнить сбор всех доступных метрик по snmp, к примеру, с принтера HP, вы получите более 1000 различных метрик! Найти в этом то, что вам действительно нужно непростая задача. Я расскажу о тех метриках, что интересовали меня. Значения этих OID я узнал.

Я буду собирать следующие метрики:

  • Сколько принтер напечатал всего страниц за свою жизнь.
  • Максимальное количество страниц, которые принтер напечатает на текущем картридже.
  • Количество страниц, которые принтер уже напечатал на текущем картридже.
  • Модель картриджа.
  • Серийный номер принтера.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

То же самое на Debian 9, если предпочитаете его:

Приступаем к настройке.

Поиск необходимых OID

Для начала возьмем какой-нибудь принтер и посмотрим, что он нам будет отдавать по snmp. Я для примера возьму принтер HP LaserJet Pro MFP M426fdn (ip адрес 192.168.88.20). По-умолчанию у принтеров HP разрешен просмотр параметров по snmp.

Идем в консоль linux и посмотрим с помощью snmpwalk метрики принтера по snmp. Для этого установим необходимый пакет.

# yum install net-snmp-utils

Теперь посмотрим метрики принтера:

# snmpwalk -v 2c -c public 192.168.88.20

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

# snmpwalk -v 2c -c public 192.168.88.20 > ~/snmp.txt

Я вас томить не буду, а сразу укажу на строки, которые нас интересуют:

Возможно, вас еще заинтересует параметр mib-2.43.5.1.1.16.1 — название принтера. Мне лично это не нужно, но если все выводить в сводную таблицу, то может пригодиться. Так же обращаю внимание на параметр mib-2.43.11.1.1.8.1.1. Обычно он показывает максимальное число страниц, которые можно напечатать с текущего картриджа.

Мне приходилось сталкиваться с двумя различными ситуациями в показаниях уровня тонера:

  1. Уровень тонера выводится сразу в % в 2.43.11.1.1.9.1.1. Параметр максимального числа страниц с текущего картриджа указан как 100% в 2.43.11.1.1.8.1.1.
  2. Уровень тонера в 2.43.11.1.1.9.1.1 показывает количество напечатанных страниц с текущего картриджа. Второй параметр 2.43.11.1.1.8.1.1 показывает максимальное количество страниц, которое может быть напечатано текущим картриджем. Тогда уровень тонера в % нужно считать по формуле 100-100*(mib-2.43.11.1.1.9.1.1)/(mib-2.43.11.1.1.8.1.1).

Первая ситуация мне попалась в принтерах HP, вторая в Kyocera и Brother. Из-за этого пришлось сделать 3 разных шаблона под каждого производителя принтеров. Все остальные параметры у них совпали.

В принтерах Brother mib об уровне тонера были немного другие, такие же как у HP и Kyocera, но отличались на последнюю цифру — 2.43.11.1.1.8.1.2 и 2.43.11.1.1.9.1.2 соответственно. Я не знаю, с чем это связано, но видел подобную ситуацию у других людей. Кто-то из-за этого создавал правила автообнаружения, чтобы точно вычислить последнюю цифру. Мне не пришлось этого делать. Достаточно было создать разные шаблоны для каждого производителя. Все принтеры попали в эти шаблоны на 100%.

Отдельная история с цветными принтерами. Там несколько картриджей и надо внимательно смотреть на их номера. Но тоже не сложно, просто смещение будет на одну единицу, все картриджи будут идти по порядку.

Настройка мониторинга принтеров по snmp

На самом сервере мониторинга настраивать особо нечего. Вам достаточно будет взять мои готовые шаблоны, убедиться что MIB и OID совпадают с вашими принтерами и добавить сами принтеры в мониторинг, не забыв указать у них snmp интерфейс.

Все шаблоны экспортированы с версии сервера Zabbix 3.4. На других версиях я не проверял, но думаю, что работать будет, так как никаких специфичных вещей в шаблонах нет. Обычные snmp проверки.

Вот пример одного элемента для шаблона принтеров HP.

А вот пример вычисляемого значения уровня тонера для шаблона Kyocera.

Пример триггера, который присутствует во всех шаблонах.

  • Всего напечатано страниц – 1 час
  • Напечатано на текущем тонере – 10 мин
  • Объем тонера – 10 мин
  • Уровень тонера – 10 мин
  • Название картриджа – 1 день
  • Серийный номер – 1 день

Для элемента данных «Уровень тонера» указан тип данных «Числовой», чтобы работал триггер и сравнивал значение. Если у вас какие-то ошибки с тонером, например из-за того, что не новый использовали, а заправляли старый, то значение будет приходить -2 или -3 с типом «Строка». Итем станет неактивным с ошибкой:

Value "-2" of type "string" is not suitable for value type "Numeric (unsigned)"

С этим уже ничего не поделать. Можете сделать для таких принтеров отдельный шаблон и изменить тип итема с числового на строковый. Так вы хотя бы будете получать значение -2, а не ошибку итема.

На этом у меня все по данной теме. Добавляйте шаблоны, проверяйте и пользуйтесь.

Заключение

Такое простое решение, которое на деле оказалось очень полезным. Настраивается быстро, вывод информации наглядный. Возможно есть еще какие-то любопытные и полезные значения, которые можно брать по snmp. Мне просто в голову больше ничего не пришло. Может там есть что-то, что подскажет или намекнет на предстоящий ремонт. Например, ресурс печки или еще какого-нибудь элемента. На МФУ я видел информацию о сканированных страницах, о количестве сделанных копий. Я не придумал, зачем это может быть полезно. Если есть замечания и рекомендации по этой части, прошу делиться в комментариях.

Онлайн курс "Администратор Linux"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по.

Контроль принтеров и контроль печати необходимо внедрить множеству крупных и мелких компаний по всему миру. Почему это так? Почему так необходимо контролировать принтеры и их использование? Допустим, вы организуете работу средней или крупной компании с десятками компьютеров, объединенных в несколько локальных сетей. Все эти компьютеры могут печатать на локальных или сетевых принтерах, причем за каждым компьютером могут работать несколько человек. В этом случае, контроль над работой и использованием принтера становится очень трудоемкой задачей. Но с использованием программы для контроля принтера решение этой задачи становится простым и легким. Вот почему вы должны иметь программу для контроля принтеров в вашем офисе.

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

Какие проблемы может решить Accurate Printer Monitor?

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

Начните пользоваться Accurate Printer Monitor прямо сейчас!

После инсталляции, запустите Printer Monitor из меню "Пуск - Программы". Кликните на кнопке с зеленым плюсом и составьте список принтеров, которые вы хотите контролировать. Затем определите, в какой базе данных должны сохраняться данные о событиях принтера. Затем вы можете формировать отчеты по использованию принтеров в вашей организации.

Все возможных систем мониторинга под это предостаточно, как платных так и бесплатных. Но мне хотелось сделать что то свое, небольшое и работающее. на вооружении имеется 8 сетевых принтеров разных моделей (HP, Koycera ), все принтеры сетевые и с них нужно собирать информацию по состоянию картриджа и в случае когда порог картриджа доходит 6 % уведомлять меня по почте, что скоро на таком то принтере, закончится такой то картридж.

В итоге у меня родился небольшая утилитка которая все это делает прекрасно. Немного расскажу о получившейся программе.

Основная вкладка «Мониторинг «, здесь наглядно отображается информация по уже заведенным принтерам их состояние картриджа.

Вкладка «Принтеры «, здесь собственно вы заводим принтера которые желаем мониторить и производим настройку мониторинга. Добавить или подредактировать принтер можно с помощью расположенных внизу кнопок управления. Переключатель «Мониторинг » — включение мониторинга или его отключения. Переключатель «Уведомления » — включение отправку уведомление у заканчивающемся картридже или выключении. После того как произвели какие либо действия нажимаем обязательно «Сохранить »

Вкладка «Настройка SNMP «, здесь мы задаем параметры опроса принтеров на нужные нам значения для последующей обработки их вы использования. В принципе у всех принтеров одинаковые OID значения, поэтому менять их не рекомендую, должно все нормально отрабатывать. Но если все же есть желание поправить OID , то сделать это можно воспользовавшись кнопками управление внизу.

Вкладка «Настройка SMTP «, здесь настраивается отправка уведомлений на почту, думаю не составит труда разобраться что куда вписывать нужно. Адресатов можно указывать несколько, через ; (прим. [email protected];[email protected] ). После того как настроили не забываем сохранять!

Период опроса принтеров задан 15 минут. И в случае если картридж доходит до отметки в 6% нам приходит уведомление вот такого вида



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows