Zabbix. Что делать, если принтер не делится информацией по SNMP?

Мониторинг принтеров — дело благородное

Zabbix. Что делать, если принтер не делится информацией по SNMP?

В этом посте расскажем о нашем опыте мониторинга принтеров в Zabbix, ведение реестра по ним в CMDB (iTop) и визуализации статусов в Grafana. Со всеми тремя продуктами мы успешно работаем и имеем опыт внедрения в малых и средних организациях.

Такая тема поста выбрана не случайно. Непрерывная работа печатающей техники, действительно, сказывается на производительности бизнес-процессов в организациях и положительном отношении пользователей к ИТ-службе. А положительное отношение — своего рода благородство.

Наш стандартный подход — использование конгломерата из трёх решений: Zabbix, iTop и Grafana.

Принтеры обычно рассредоточены по офисам, этажам и кабинетам. После разработки (или доработки) шаблонов по каждому устройству, для каждой такой локации мы создаём группы в Zabbix и добавляем туда заведённые в мониторинг устройства. Система позволяет создавать квазивложенные группы с устройствами, поэтому мы можем создавать группы по следующим форматам:

Мониторинг

Подобная группировка упорядочивает устройства и создаёт агрегирующие статусы для групп устройств. Агрегирующие статусы нужны для визуализации каждой локации в Grafana.

Zabbix. Что делать, если принтер не делится информацией по SNMP?
Обычный способ сбора метрик — это SNMP, но в некоторых случаях приходится собирать syslog. Для сбора syslog можем использовать Elasticsearch. Если принтер подключён к рабочей станции или серверу напрямую, данные по нему можно забирать из счётчиков производительности (Performance Counters) Windows. Zabbix позволяет выполнять низкоуровневое обнаружение (Low-level Discovery или LLD) таких счетчиков производительности, поэтому, если вдруг кто-то из пользователей решит подключить принтер к своему устройству, он через некоторое время автоматически появится в Zabbix.

Визуализация

Для визуализации, аналогичную структуру вложенности создаём в Grafana. Вот, к примеру, на скриншоте ниже, 4 этажа, которые мы описали в группах Zabbix. Таким образом, каждой плитке, по каждому этажу, присваивается агрегированный статус объектов, которые находятся в нём. Кликнув на плитке мы переходим на уровень ниже.

Zabbix. Что делать, если принтер не делится информацией по SNMP?
После клика на плитку «Этаж 25» переходим на уровень ниже и видим три принтера на этаже. На одном из них («Принтер 2») какая-то проблема. Под самими принтерами представление с событиями по ним. Перейдём ещё на уровень ниже, кликнув на «Принтер 2».
Zabbix. Что делать, если принтер не делится информацией по SNMP?
На уровне представления с конкретным принтером видим, что проблема в заканчивающемся тонере. Если прокрутить ниже там тоже будут события.

Zabbix. Что делать, если принтер не делится информацией по SNMP?
В Grafana можно создавать также динамические представления. Например, чтобы выводил список принтеров в отдельной локации в зависимости от того, какие принтеры добавлены в определённую группу в Zabbix.

Для создания CMDB мы используем iTop. Если кто не знает, это бесплатный инструмент для управления инцидентами, конфигурациями и запросами. Нас сейчас интересуют конфигурации. Начнём с расположений. Все используемые в Grafana расположения мы заводим в iTop. Посмотрите их в списке расположений. Для каждого уровня создано своё расположение. Не все же принтеры находятся в кабинетах, некоторые ютятся на этажах.

Zabbix. Что делать, если принтер не делится информацией по SNMP?
Используя фильтр по расположению принтера мы можем обнаружить список всех принтеров в этой локации. Кстати, на это представлении также можно перейти из Grafana, кликнув там по ссылке в верхнем меню.

Zabbix. Что делать, если принтер не делится информацией по SNMP?
Теперь перейдём в карточку принтера. Здесь есть стандартный набор полей: имя, марка, модель, дата ввода в эксплуатацию, период гарантии и т. д. У одного из заказчиков мы также добавляли сюда график работы офиса (филиала), который реплицировался в Zabbix, чтобы не сигнализировать о недоступности в нерабочие часы офиса. Принтер там могли отключить на ночь. Также в карточке доступны контакты ответственных лиц за принтер, подключенные сетевые устройства, договоры на обслуживание и так далее.

Zabbix. Что делать, если принтер не делится информацией по SNMP?
Таким подходом мы можем обеспечить мониторинг и учёт принтеров на полностью бесплатном ПО. Конечно, в CMDB можно также хранить и другие активы. В некоторых ситуациях заказчики просят также об отчётности по недоступности принтеров. Помимо стандартного SLA в Zabbix, эта задача может быть решена в Elastic Stack. Для этого в Kibana создан специальный дашборд с фильтром по локациям, чтобы увидеть самые проблемные и озадачить этим ответственных сотрудников.

Zabbix. Что делать, если принтер не делится информацией по SNMP?
Это всё, что мы хотели рассказать о мониторинге принтеров. Если наш подход заинтересовал, вы можете нам позвонить или оставить заявку в форме обратной связи.

Вы получите поддержку экспертного уровня: в нашем штате работают инженеры с сертификатами уровня Zabbix Certified Specialist и Zabbix Certified Professional по актуальной версии Zabbix 5.0.

Читайте статьи в нашем корпоративном блоге на Хабре:

Мониторинг принтеров HP, Kyocera, Brother через snmp в zabbix

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

  • 1 Введение
  • 2 Поиск необходимых OID
  • 3 Настройка мониторинга принтеров по snmp
  • 4 Заключение

Введение

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Zabbix. Что делать, если принтер не делится информацией по SNMP?

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

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

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

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

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

Установка CentOS 7.

Настройка CentOS 7.

Установка и настройка zabbix сервера.

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

Установка Debian 9.

Базовая настройка Debian 9.

Установка и настройка zabbix на debian.

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

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

Zabbix. Что делать, если принтер не делится информацией по SNMP?

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

Zabbix. Что делать, если принтер не делится информацией по SNMP?

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

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

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

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

Возможно, вас еще заинтересует параметр 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

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Zabbix. Что делать, если принтер не делится информацией по SNMP?

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

Printer_HP.xml Printer_Kyocera.xml Printer_Brother.xml

Zabbix. Что делать, если принтер не делится информацией по SNMP?

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

Zabbix. Что делать, если принтер не делится информацией по SNMP?

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

Zabbix. Что делать, если принтер не делится информацией по SNMP?

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

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Всю информацию о принтерах можно вывести на Dashboard примерно в таком виде:

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Интервалы опроса итемов в шаблонах:

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

На момент отладки рекомендую поставить эти значения 1 минута.

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

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

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

Заключение

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

Читайте также:  Что такое VDS? VPS - что это? |

Получаем в Zabbix статистику с устройств Kyocera

Привет!
SNMP

Убедившись, что наше устройство что-то отдаёт по SNMP, я отправился в гугл, дабы найти MIB для нашего аппарата. Однако, удалось найти информацию лишь о том, что его нет. Не хочет Kyocera делиться такой информацией, по каким то причинам. Естественно, приходит на ум мысль о слегка рутинном поиске необходимых значений самостоятельно. Алгоритм не самый сложный — snmpwalk, печать, snmpwalk, diff.
Вот что нашлось:

И тут первая странность: значение несколько отличается от указанного в web панельке самого устройства (и в меню принтера):

Получаем в Zabbix статистику с устройств Kyocera

И тут странность номер два: кроме обмена SNMP трафиком у нас тут есть и HTTP!

Получаем в Zabbix статистику с устройств Kyocera

HTTP

Дальнейшее расследование приводит нам с к тому, что принтер и ПО общаются XML’ками через SOAP.
Принцип предельно простой: POST запросом на принтер отправляется специальная XML, содержащая запрос. В нашем случае запросом является «ALL_COUNTER», то есть мы желаем получить все счётчики. Принтер может в ответ прислать показания счётчиков или сообщение «DEEP_SLEEP_NOW_ERROR», что понятно из без перевода. Будить принтер как-то по особенному совсем не надо. Он уже проснулся от нашего запроса, просто посылаем запрос ещё раз и получаем XML со счётчиками.
Все значения указаны в виде <параметр>число</параметр>. Делаем небольшой парсер и получаем скрипт, выдающий нам необходимые цифры в удобном виде.

Для M2535dn мне были интересны следующие счётчики:

  • accounting_print_black_and_white_copy_counter: Колличество ч/б страниц, напечатанных с использованием копировального аппарата
  • accounting_print_black_and_white_printer_counter: Колличество ч/б страниц, напечатанных с использованием принтера
  • accounting_print_combine_none_counter: Общий счётчик напечатанных страниц
  • accounting_scan_copy_counter: Колличество страниц, отсканированных с использованием копира
  • accounting_scan_other_counter: Колличество прочих отсканированных страниц ( на флешку, в сеть и пр.)
  • device_life_counter: (?) Общий счётчик напечатанных страниц за всю жизнь устройства

Разница показаний счётчиков accounting_scan_copy_counter и accounting_print_black_and_white_copy_counter объясняется просто: было сделано 2 копии одного оригинала. Со сканера в копир отправилась одна страничка, а принтер из копира распечатал две. Помимо этих счётчиков можно получить ещё много чего интересного: количество напечатаных а4, а5, letter и пр. страниц, количество страниц, распечатанных с использованием дуплекса, копированных в режимах 2в1 и 4в1, для цветных устройств можно получать количество ц/б и цветных копий отдельно. Счётчик device_life_counter принтер отдаёт нам по SNMP, но ни в веб интерфейсе, ни в специальном ПО это значение не отображается. Я не очень понял значение этого параметра. Вчера он отличался от общего счётчика на 3, сегодня уже на 8. Жду ваших идей в комментариях.

Zabbix

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

Теперь осталось сообразить новый шаблон и наполнить его элементами данных:

Получаем в Zabbix статистику с устройств Kyocera

Маленькое замечание: не стоит выставлять слишком маленький интервал проверки, это может привести к снижению производительности системы мониторинга в целом. Применяем к узлам сети, настраиваем графики, отчёты и дальше по настроению.
На этом все, всем спокойной пятницы и отличных выходных!

P.S. Не все мы идеальны и об ошибках в тексте просьба уведомлять в ЛС.

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

Продолжение поста «Украденная у меня иллюстрация попала на маркетплейсы, а потом в сериал "Король и Шут"» Авторские права, OZON, Цифровой рисунок, Маркетплейс, Wildberries, Длиннопост, Король и Шут, Король и Шут (сериал), Ответ на пост

Продолжение поста «Украденная у меня иллюстрация попала на маркетплейсы, а потом в сериал "Король и Шут"» Авторские права, OZON, Цифровой рисунок, Маркетплейс, Wildberries, Длиннопост, Король и Шут, Король и Шут (сериал), Ответ на пост

Аж 107 человек протянули руку помощи в борьбе за справедливость. Если честно, я даже не представляла, что такое может произойти.
Я благодарна абсолютно каждому! И все пожелания заскриншотила на память, а полученные деньги положила на отдельный счёт — они будут потрачены исключительно на юридические разборки.

Очень многие писали в личку ВК со словами поддержки.

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

Писал журналист Рен-ТВ с предложением снять репортаж. Но у нас не сложилось по времени, да и ладно.

Но самое главное — поступило предложение от юридической фирмы «Солнцев и партнёры» взять на себя ведение этого дела. Мы заключили Договор Доверительного Управления и теперь процесс в руках профессиональных юристов.

Мы собрали в табличку все ссылки на товары с моей иллюстрацией. Там оказались не только футболки, но и рюкзаки и даже картины в интерьер.
И да, сотрудники компании так же заверяют у нотариуса скриншоты, как я и планировала делать самостоятельно. А я компенсирую им расходы.

Продолжение поста «Украденная у меня иллюстрация попала на маркетплейсы, а потом в сериал "Король и Шут"» Авторские права, OZON, Цифровой рисунок, Маркетплейс, Wildberries, Длиннопост, Король и Шут, Король и Шут (сериал), Ответ на пост

Вот так выглядит протокол осмотра доказательств, за который в Москве нотариусы просят аж 20 000 р. В Калининграде такой стоит вдвое меньше.

Такой же протокол составлен и в отношении товаров на Wildberries.

Следующим шагом будет проводиться контрольная закупка контрафакта.
И всё это под музыку))

Продолжение поста «Украденная у меня иллюстрация попала на маркетплейсы, а потом в сериал "Король и Шут"» Авторские права, OZON, Цифровой рисунок, Маркетплейс, Wildberries, Длиннопост, Король и Шут, Король и Шут (сериал), Ответ на пост

Так что не прощаемся, буду держать вас в курсе. Надеюсь, эта серия постов однажды принесёт кому-нибудь пользу и расскажет, как поэтапно отстоять своё право.

Ещё раз огромное спасибо всем, кто на моей стороне!

Время на прочтение

Эта статья посвящена особенностям мониторинга сетевого оборудования с помощью протокола SNMPv3. Мы поговорим об SNMPv3, я поделюсь своими наработками по созданию полноценных шаблонов в Zabbix, и покажу, чего можно добиться при организации распределенного алертинга в большой сети. Протокол SNMP является основным при мониторинге сетевого оборудования, а Zabbix отлично подходит для мониторинга большого количества объектов и обобщения значительных объемов поступающих метрик.

Несколько слов об SNMPv3

Начнем с назначения протокола SNMPv3, и особенностей его использования. Задачи SNMP – мониторинг сетевых устройств, и элементарное управление, с помощью отправки на них простых команд (например, включение и отключение сетевых интерфейсов, или перезагрузка устройства).

  • аутентификация (Authentication), определяющая, что запрос получен от доверенного источника;
  • шифрование (Encryption), для предотвращения раскрытия передаваемых данных при их перехвате третьими лицами;
  • целостность (Integrity), то есть гарантия того, что пакет не был подделан при передаче.

SNMPv3 подразумевает использование модели безопасности, при которой стратегия аутентификации устанавливается для заданного пользователя и группы, к которой он относится (в предыдущих версиях SNMP в запросе от сервера к объекту мониторинга сравнивалось только «community», текстовая строка с «паролем», передаваемая в открытом виде (plain text)).

В таблице описаны комбинации моделей и уровней безопасности SNMPv3 (первые три столбца я решил оставить как в оригинале):

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Соответственно, мы будем использовать SNMPv3 в режиме аутентификации с применением шифрования.

Настройка SNMPv3

Мониторинг сетевого оборудования предполагает одинаковую настройку протокола SNMPv3 и на сервере мониторинга, и на наблюдаемом объекте.

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

snmp-server group snmpv3group v3 priv read snmpv3name
snmp-server user snmpv3user snmpv3group v3 auth md5 md5v3v3v3 priv des des56v3v3v3
snmp-server view snmpv3name iso included

Первая строка snmp-server group – определяет группу SNMPv3-пользователей (snmpv3group), режим чтения (read), и право доступа группы snmpv3group на просмотр определенных веток MIB-дерева объекта мониторинга (snmpv3name далее в конфигурации задает, к каким веткам MIB-дерева группа snmpv3group сможет получить доступ).

Третья строка snmp-server view определяет кодовое имя, которое задает ветки MIB-дерева snmpv3name, чтобы их могла запрашивать группа пользователей snmpv3group. ISO, вместо строгого определения какой-то одной ветки, позволяет группе пользователей snmpv3group получать доступ ко всем объектам MIB-дерева объекта мониторинга.

Аналогичная настройка оборудования Huawei (так же в CLI) выглядит следующим образом:

snmp-agent mib-view included snmpv3name iso
snmp-agent group v3 snmpv3group privacy read-view snmpv3name
snmp-agent usm-user v3 snmpv3user group snmpv3group
snmp-agent usm-user v3 snmpv3user authentication-mode md5 md5v3v3v3
snmp-agent usm-user v3 snmpv3user privacy-mode des56 des56v3v3v3

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

snmpwalk -v 3 -u snmpv3user -l authPriv -A md5v3v3v3 -a md5 -x des -X des56v3v3v3 10.10.10.252

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Более наглядный инструмент для запроса конкретных OID-объектов, с использованием MIB-фалов – snmpget:

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Теперь перейдем к настройке типового элемента данных для SNMPv3, в рамках Zabbix-шаблона. Для простоты и независимости от MIB, я использую цифровые OID:

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Я использую в ключевых полях пользовательские макросы, поскольку они будут одинаковы для всех элементов данных в шаблоне. Задавать их можно в рамках шаблона, если в Вашей сети у всех сетевых устройств параметры SNMPv3 одинаковы, или в рамках узла сети, если параметры SNMPv3 для разных объектов мониторинга отличаются:

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Обратите внимание, система мониторинга располагает только именем пользователя, и паролями для аутентификации и шифрования. Группа пользователей и область MIB-объектов, к которым разрешен доступ, задается на объекте мониторинга.
Теперь перейдем к наполнению шаблона.

Шаблон опроса в Zabbix

Простое правило при создании любых шаблонов опроса – делать их максимально подробными:

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Я уделяю большое внимание инвентаризации, чтобы с большой сетью было удобнее работать. Об этом немного позднее, а пока – триггеры:

Zabbix. Что делать, если принтер не делится информацией по SNMP?

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

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

discovery[{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7]

Zabbix. Что делать, если принтер не делится информацией по SNMP?

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

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Zabbix. Что делать, если принтер не делится информацией по SNMP?

При обнаружении будут исключены следующие интерфейсы:

  • выключенные вручную (adminstatus<>1), благодаря IFADMINSTATUS;
  • не имеющие текстового описания, благодаря IFALIAS;
  • имеющие в текстовом описании символ *, благодаря IFALIAS;
  • являющиеся служебными или техническими, благодаря IFDESCR (в моем случае, в регулярных выражениях IFALIAS и IFDESCR проверяются одним регулярным выражением alias).

Шаблон для сбора данных по протоколу SNMPv3 почти готов. Не будем подробнее останавливаться на прототипах элементов данных для сетевых интерфейсов, перейдем к результатам.

Итоги мониторинга

Для начала – инвентаризация небольшой сети:

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Если подготовить шаблоны для каждой серии сетевых устройств – можно добиться удобной для анализа компоновки сводных данных по актуальному ПО, серийным номерам, и оповещении о приходе в серверную уборщицы (по причине малого Uptime). Выдержка моего списка шаблонов ниже:

А теперь – главная панель мониторинга, с распределенными по уровням важности триггерами:

Zabbix. Что делать, если принтер не делится информацией по SNMP?

Благодаря комплексному подходу к шаблонам для каждой модели устройств в сети, можно добиться того, что в рамках одной системы мониторинга будет организован инструмент для прогнозирования неисправностей и аварий (при наличии соответствующих датчиков и метрик). Zabbix хорошо подходит для мониторинга сетевых, серверных, сервисных инфраструктур, и задача обслуживания сетевого оборудования наглядно демонстрирует её возможности.

Возникла необходимость собирать статистику использования бумаги и прочих расходников принтерами и МФУ. Говорят, что Zabbix очень подходит для этого. Кто использовал? Эффективен ли Zabbix для этих целей?

Удобно ли формировать отчеты со статистикой и экспортировать например в Excel ?


  • Вопрос задан

    более трёх лет назад

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

Неудобно(imho). Причина — мониторинг через snmp. Следовательно: устройства д.б. 1. Сетевыми 2. Парк устройств должен быть более или менее однороден. Далее требуется связь с какой -либо учётной системой, т.к. требуется анализ и учёт. Заббих ни одной стороной не учётная система. Если есть время на развлечения с мониторингом, то проще сделать сбор статистики через snmpwalk и пришить его к чему-нибудь а ля 1С. Если времени нет, разумнее купить готовое решение.

26 апр. 2023, в 02:47

30000 руб./за проект

26 апр. 2023, в 00:41

10000 руб./за проект

26 апр. 2023, в 00:37

5000 руб./за проект

Минуточку внимания

FreeBSD

> cd /usr/ports/net-mgmt/zabbix-agent
> make install clean
> echo 'zabbix_agentd_enable="YES"' >> /etc/rc.conf
> cd /usr/local/etc/zabbix
> cp zabbix_agentd.conf.sample zabbix_agentd.conf
> touch /var/log/zabbix_agentd.log
> chown zabbix:zabbix /var/log/zabbix_agentd.log
> ee zabbix_agentd.conf
#Изменяем параметры
...
Server=127.0.0.1
Hostname=localhost
DisableActive=1
StartAgents=5
LogFile=/var/log/zabbix_agentd.log
...
> /usr/local/etc/rc.d/zabbix_agentd start
Starting zabbix_agentd.
> tail -F /var/log/zabbix_agentd.log 11361:20090821:145209 zabbix_agentd started. ZABBIX 1.6.5 (revision 7442).

Community Properties

This sub-menu allows to set up access rights for the SNMP data.

 /snmp community> print value-list name: public address: 0.0.0.0/0 security: none read-access: yes write-access: no authentication-protocol: MD5 encryption-protocol: DES authentication-password: ***** encryption-password: *****

Warning: Default settings only have one community named public without any additional security settings. These settings should be considered insecure and should be adjusted according required security profile.

item became not supported

Во время отладки работ я столкнулся с проблемами. Периодически Item отваливались и получали статус: Not Supported. При этом в логах сервера были следующие записи:

27614:20150702:065936.698 item "videoserver:Temperature.CPU" became not supported: Timeout while executing a shell script.
27625:20150702:070938.720 item "videoserver:Temperature.CPU" became supported

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

Я обратил внимание, что при запуске батника из командной строки, вывод данных происходит с приличной задержкой в 3-5 секунд. В Zabbix по-умолчанию стоит параметр, по которому агент ожидает ответа от скрипта 3 секунды и на сервере есть подобный параметр, по которому сервер ждет ответа от агента 3 секунды

Если за это время данные не поступают, то итем переходит в статус Not Supported и данные с него не собираются.

Чтобы избавиться от этой ошибки, необходимо увеличить таймаут до 15-ти секунд. Меняем параметр в конфиге на клиентах и на сервере. Он и там и там один и тот же:

Timeout=15

Потом перезапускаем сервер и агентов и ждем результатов. Больше ошибок быть не должно.

На этом, собственно настройка мониторинга температуры окончена. Можно дальше все оформить как полагается: настроить тригеры, оповещения, графики красивые нарисовать. Кому что нужно. Я себе вывел вот такую картинку для наглядности:

Мониторинг Mikrotik в Zabbix по snmp

Стандартный шаблон собирает все метрики по snmp. Так что нам надо включить его на микротике. Для этого подключаемся к нему по Winbox и идем в раздел IP -> SNMP. Настраиваем работу snmp.

Мониторинг Mikrotik в Zabbix по snmp

Мы включили snmp, выставили версию 2, разрешили подключаться только с ip адреса zabbix server — 10.1.3.29. Не забудьте указать адрес своего сервера.

Сходим теперь на zabbix-server и убедимся, что мы через него можем забирать информацию с mikrotik по snmp. Для этого подключимся к нему по ssh и воспользуемся утилитой snmpwalk. Если у вас ее нет, то поставить можно командой:

# yum install net-snmp-utils

Подключаемся к микротику по snmp.

# snmpwalk -v 2c -c public 10.1.3.111

Подключаемся к микротику по snmp.

Получите кучу значений в консоли. Если хотите удобно их просмотреть, направьте вывод команды в файл и почитайте его. Если подключение прошло успешно, то переходим в Web интерфейс Zabbix сервера.

  • template_module_generic_snmp_SNMPv2_EN.xml
  • template_module_interfaces_SNMPv2_EN.xml
  • 00template_module_icmp_ping__EN.xml

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

Лично я немного поднял пороговые значения по температуре.

Теперь нам нужно добавить в систему само устройство Mikrotik. Делаем это как обычно, не забывая указать snmp интерфейс.

И не забудьте ему подключить шаблон Template Net Mikrotik SNMPv2. После этого можно идти в Lates Data и проверять поступление информации с устройства в систему мониторинга.

Часть данных увидите сразу, а та, что поступает через правила автообнаружения, появится позже. Надо подождать. После того, как отработают все правила автообнаружения, рекомендую сходить на хост и поотключать то, что вам не нужно. К примеру, если у вас настроен capsman, то в мониторинг с мастера попадут интерфейсы cap, которые отключаются, если к точке нет подключенных клиентов по wifi. В итоге будет ненужный спам от мониторинга с точек.

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

Логи с устройств мы собрали в одном месте. Теперь будем их анализировать и отправлять уведомления при каждом подключении к Mikrotik через Winbox. Я для этого сделал отдельный шаблон, где созданы элементы данных типа Журнал (лог) для анализа лог файла от каждого устройства.

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

Я не стал делать в шаблоне автообнаружение. Настраивал это в системах до 10-ти точек и мне банально было лень это делать, хотя и не сложно. Я просто копировал и исправлял итемы и триггеры, меняя ip адреса устройств. Для автообнаружения надо скрипт на сервер класть, который будет передавать список логов в мониторинг. А если руками делать, то можно все на сервере в шаблоне добавлять.

Итак, создаем простой итем.

К итему делаем триггер.

Вот и все. Прикрепляйте шаблон к хосту, на котором находится сам лог файл и проверяйте. В первую очередь смотрите, чтобы в Latest Data появилось содержимое лога.

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

И еще одно после отключения.

Такой несложный механизм мониторинга за подключениями. Я отслеживаю именно подключения по winbox. Вы можете это изменить, добавив и другие типы подключения. Для этого надо изменить регулярное выражение в триггере.

Пример моего шаблона с двумя микротиками — zabbix-mikrotik-logs.xml. Если у вас много устройств, настройте автообнаружение лог файлов, чтобы автоматически создавать итемы и триггеры. Пример настройки автообнаружения в Zabbix можете посмотреть на примере мониторинга openvpn подключений. Там как раз показан очень похожий пример, когда анализируется список файлов в директории и передается в zabbix server.

На этом по мониторингу микротиков в Zabbix у меня все. По идее, рассмотрел все актуальные задачи по этой теме.

Отправка логов Mikrotik в syslog

Первым делом настроим сбор логов с микротиков на любой syslog сервер. В моем случае это будет сам сервер мониторинга на базе rsyslog и centos 7, но это не принципиально. Главное, чтобы на нем был zabbix-agent, который будет отправлять логи микротиков на заббикс сервер.

Для этого в rsyslog включим возможность слушать udp port 514. Открываем конфиг /etc/rsyslog.conf и раскомментируем там строки:

$ModLoad imudp
$UDPServerRun
514

Дальше в этом же файле в самом начале перечисления правил, добавляем свое.

$template FILENAME,»/var/log/mikrotik/%fromhost-ip%.log»
if $fromhost-ip != ‘127.0.0.1’ then ?FILENAME
&amp; stop

Данное правило будет автоматически раскладывать все логи с удаленных устройств по файлам в директории /var/log/mikrotik с именами в виде IP адресов. При этом не будет создан лог 127.0.0.1.log, куда бы складывались все локальные лог файлы. В своей предыдущей статье я не учитывал этот нюанс, что приводило к дублированию всех локальных логов. Сейчас я это исправляю.

Сразу же настроим ротацию лог файлов, чтобы они не забили нам весь диск. Для этого создаем конфиг для logrotate в файле /etc/logrotate.d/mikrotik примерно следующего содержания:

Я ротирую файлы логов раз в неделю, сразу сжимаю и кладу их в директорию /var/log/mikrotik/old, где будут храниться 12 последних версий файла.

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

Это важно, так как агент должен их читать

После завершения настройки, надо перезапустить rsyslog.

# systemctl restart rsyslog

Отправляемся на Mikrotik и настраиваем отправку логов на наш syslog сервер. Для этого переходите в раздел System -> Logging -> Actions и добавляйте новое действие.

Чтобы проверить отправку логов, достаточно тут же в Mikrotik открыть новый терминал. Создастся событие в логе, который улетит на удаленный сервер. На сервере с rsyslog будет создан лог файл с содержимым.

Если у вас так же, можно двигаться дальше. Если же логи не поступают на syslog сервер, разбирайтесь в чем может быть причина. Первым делом проверьте настройки firewall. Убедитесь, что доступ к udp порту 514 есть. Дальше проверьте, что ваш rsyslog сервер реально слушает этот порт.

Шаг 11 — Защита Zabbix (опционально)

Мой Zabbix сервер имеет реальный IP и значит его видит весь мир. Разрешим доступ к веб интерфейсу только с определённых доверенных IP. В мой конфигурации я использую Apache/2.4.41 и буду использовать директиву Require ip. Если вы используете другой веб- сервер, вам следует изучить документации того веб сервера, который используете.

В конфигурационном файле Zabbix для Apache2 /etc/apache2/conf-enabled/zabbix.conf добавим директиву Require ip с вашим IP:

<Directory "/usr/share/zabbix">
Require ip x.x.x.x

FAQ Zabbix для версии < 5

  • Automated backup of Zabbix configuration (MySQL) сохранение настроек, без истории
  • Zabbix, OpenVPN, D-Link DAP-2360

  • Zabbix templates, modules & more

  • Zabbix Notifier add-on for Chrome
  • Zabbix Alert Check Extension add-on for Chrome
  • Простые проверки: ping

  • Веб-мониторинг. Доступность веб-сайтов

  • Низкоуровневое обнаружение обнаружение файловых систем; обнаружение сетевых интерфейсов; обнаружение CPU
  • Мониторинг Mikrotik в Zabbix

  • Если вы хотите изменить параметр SNMP community, то это можно сделать прямо в Zabbix: зайдите в шаблон в Configuration → Templates , в Items выделите нужные элементы галочками и внизу выберите из выпадающего списка Mass update. Или для любого устройства Host→Macros, где можно переопределить любую переменную в том числе и {$SNMP_COMMUNITY} (Пользовательские макросы).
  • Ошибка: Zabbix proxy poller processes more than 75% busy
    # nano /etc/zabbix/zabbix_server.conf
    StartPollers=20
  • Ошибка: Zabbix icmp pinger processes more than 75% busy

    # nano /etc/zabbix/zabbix_server.conf
    StartPingers=10
    StartDiscoverers=10
  • Ошибка: Zabbix unreachable poller processes more than 75% busy

    # nano /etc/zabbix/zabbix_server.conf
    StartPollersUnreachable=10

Алгоритм настройки Zabbix сервера

  1. сменить шаблон для localhost’а на Template_FreeBSD (или просто отцепить шаблон)
  2. активировать мониторинг localhost’а
  3. создать нужные “Элементы данных” (items)
  4. создать на них триггеры
  5. настройки отправку сообщений по триггерам

Настройка нового шаблона:

  1. полностью клонировать из стандартного (или создать новый) шаблона
  2. удалить (добавить) необходимые элементы данных и графики. Например, можно смело удалить для всех templates серверов элемент «Number of running processes zabbix_server» кроме шаблона для localhost

Zabbix и оборудование

Мониторинг температуры с помощью NetPing TS v2 и Zabbix

Настройка и использование SSH проверки используются для безагентного мониторинга

Обратите внимание, что Zabbix агент не требуется для проверок по SSH.

Zabbix и PostgreSql

Zabbix мониторинг сервера баз данных PostgreSQL версии 8.4.9.

  • PostgreSQL 8.4.11 Documentation

  • Template Postgres. Указываем согласно руководству вместо тестовой БД «neiron» собственную. И создадим суперпользователя zabbix
    sudo -u postgres createuser zabbix
    Shall the new role be a superuser? (y/n) y

Заключение

Мониторинг smart значений жесткого диска достаточно полезная штука, но не стоит ей слепо доверять. У меня были ситуации, когда диски с Bad Sector Count работали годами

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

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

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

Онлайн курс Infrastructure as a code

Если у вас есть желание научиться автоматизировать свою работу, избавить себя и команду от рутины, рекомендую пройти онлайн курс Infrastructure as a code. в OTUS. Обучение длится 4 месяца.

Что даст вам этот курс:

  • Познакомитесь с Terraform.
  • Изучите систему управления конфигурацией Ansible.
  • Познакомитесь с другими системами управления конфигурацией — Chef, Puppet, SaltStack.
  • Узнаете, чем отличается изменяемая инфраструктура от неизменяемой, а также научитесь выбирать и управлять ей.
  • В заключительном модуле изучите инструменты CI/CD: это GitLab и Jenkins

Смотрите подробнее программу по .


Доброго времени суток!

Данная статья – небольшой мануал, написанный в несколько художественной форме. В статье много картинок, заботливо упрятаных в спойлеры.

Для кого написана эта статья? Для начинающих сисадминов, еще слабо знакомых с UNIX-системами, Zabbix’ом, но имеющих желание централизованно собирать информацию с принтеров.

  • Zabbix 5.0
  • CentOS 8
  • Принтер, который не отдает нужную информацию о расходниках по SNMP (в данном мануале взят в качестве примера Oki C834)
  • Практически отсутствующие знания о Zabbix, UNIX-системах
  • Очень большое желание собирать информацию о расходниках с принтеров централизованно.

Причины и логические обоснования

Лень – двигатель прогресса. В одно прекрасное утро я понял, что мне лень обходить принтеры, установленные в офисе, для того чтобы контролировать состояние расходных материалов – таких, как тонер-картриджи, драм-юниты, ленты и печи. А также собирать время от времени показатели счетчиков напечатанных страниц – на их основе принимается решение о ТО принтера.

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

В качестве операционной системы был установлен CentOS 8 – ибо я был хоть немного знаком именно с ним. Возможно, кто-то в данный момент уже пишет, что ай-яй-яй, надо изучать UNIX-системы, если уж взялся за сисадминство. Отвечу вам – да, вы абсолютно правы.

Изучение мануалов по мониторингу принтеров обещало крайне простую процедуру – snmpwalk, вычленение нужных параметров, подключение OID к Zabbix’у, профит. Реальность же немного пошатнуло эту прекрасную картину. Не было показателей состояния расходников. Даже отдаленно похожих не было. Вообще.

«Что ж, великолепно, приключения начинаются» — подумалось мне. Обдумывание вариантов решения привело к следующей логической цепочки:

  1. На данном этапе я не умею и не знаю как правильно сымитировать тот запрос, что отсылает Configuration Tool на принтер.
  2. Принтер имеет собственную веб-страницу, на которой он размещает информацию о состоянии расходных материалов и количестве отпечатанных страниц
  3. Решение моей проблемы – вытаскивать (парсить) по расписанию информацию с веб-страницы принтера и неким образом передавать эту информацию в Zabbix.

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

  1. Bash
  2. PHP
  3. Python

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

Я выбрал Bash – и вот почему:

  1. Предустановленность на большей части UNIX-систем. Мне не нужно ставить дополнительное ПО.
  2. Простота. Команды логичны, и вполне понятны после небольшого изучения синтаксиса.
  3. Необходимость изучения UNIX-систем. Изучить синтаксис команд явно не будет лишним в данном направлении.

Разбор веб-страницы принтера

Прежде, чем приступать к парсингу – давайте разберем, что из себя представляет веб-страница принтера.

Прошу прощения, если выражусь неправильно относительно элементов веб-страницы принтера. Я, все таки, начинающий сисадмин, а не веб-разработчик.

Переходим на веб-страницу принтера и видим следующее

image

Замечаем, что справа сверху на странице есть показатели состояния тонера. Теперь нам остается понять, как именно на веб странице появляются данные показатели. ПКМ-> Inspect. Нам открывается следующая картина.

Инспекция кода страницы

image
image

Подмечаем, что значения тонера, на самом деле, получаются через страницу /status.htm
Видим, что значение показателей тонера передаются в тегах:

После чего с помощью JavaScript значения округляются до десятков и подставляются в страницу.

Переходим на страницу 192.168.***.***/status.htm – и да, действительно нужные нам значения тонера мы видим на данной странице

image

Теперь мы знаем, где хранятся нужные нам значения состояния тонера. Приступим к парсингу.

Парсинг

Примечание: далее будет описание построения скрипта для парсинга страницы с примерами и картинками. Я постараюсь, что бы описание было понятно даже тем, кто очень слабо знаком с Bash. Если же вы имеете желание прочитать уже результат – прошу пролистывать дальше.
Итак, Bash. Рубикон пройден, как сказали две тысячи лет назад на берегу одноименной реки.
Первым делом я предлагаю ознакомиться с синтаксисом языка. Он крайне прост и незамысловат – но это нам поможет при написании скрипта и автоматизации.

Далее обратим внимание на cURL – command line and tool, как заявлено на официальном сайте этого инструмента. cURL поддерживает огромное количество протоколов, из которых нам требуется поддержка HTTP – помним, что именно по этому протоколу идет «общение» с веб-страницей принтера.
Напишем первый запрос:

$ curl 192.168.***.***/status.htm

image

В ответ нам вываливается прямо в командную строку огромное количество информации, которую не совсем удобно читать в терминале, не говоря уже об обработке данной информации.
Перенаправим вывод в файл – так будет явно удобнее. В этом нам поможет спецсимвол ‘>’

$ curl 192.168.***.***/status.htm > Oki.txt

Открываем получившийся файл в редакторе Vi

$ vi Oki.txt

Oki.txt в редакторе Vi

image

Уже гораздо лучше, не правда ли? Однако, вся страница нам все равно не нужна. Нужны лишь значения состояния тонера. Начинаем вычленять данные. В этом нам поможет grep – утилита, ищущая строки, в которых содержится значение, равное указанному регулярному значению.

Внимательно рассмотрим теги, в которых содержится значения тонера. Видим, что в них мы встречаем одно и то же выражение ‘value=”***”’

Почему три звездочки? Потому что тонер-картридж может быть полон и отдавать значение 100.

Более опытные читатели так же могут заметить, что можно отсеять данные по регулярному выражению “hidden”. Да, вы абсолютно правы. Для подтверждения прикрепляю скриншот вывода терминала. Как можете видеть – результат абсолютно такой же, как и при отсеивании через ‘value=”***”’

image

«Грепаем» результаты, полученные через cURL. Дабы немного ускорить и визуализировать процесс – выводим значения сразу в терминал.

$ curl 192.168.***.***/status.htm | grep ‘value=”***”’ 

image

Отлично. Достаточно лаконичный вывод. Далее нам нужно избавиться от текста и оставить лишь числовые значения.

Возможно, более опытные читатели сейчас воскликнули – «Можно ведь и в Zabbix’е обрезать строки и получить числовые результаты!». Можно, не спорю. Но мое мнение – лучше завести числовые значения. Это лаконичнее и элегантнее.

Отсеем текстовые данные, оставив лишь числовые значения. В этом нам снова поможет grep c флагом -Eo. Он позволить вывести только числовые значения.

$ curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’

image

Итак, мы получили необходимые числовые значения. Теперь разберем наш вывод на отдельные строки – дабы мы могли их по отдельности сохранить в текстовые файлы. В этом нам поможет sed, утилита, являющаяся потоковым текстовым редактором. В нашем случае самое важное то, что sed может вычленять отдельные строки – а нам это как раз и нужно.

Curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 1p

Результат работы sed

image

Разберем часть с sed. 1p – дать на вывод первую строку. -n – отсеять все, кроме указанной строки. Как видим – после данной команды на выводе – лишь численное значение состояния голубого тонера.

Теперь займемся написание скрипта.

Скрипт же будет выглядеть следующим образом:

#! /bin/bash
#This script received toner level's from Oki_834
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 1p >/var/cyan.txt
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 2p >/var/magenta.txt
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 3p >/var/yellow.txt
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 4p >/var/black.txt

Добавляем файл скрипта в crontab, и тем самым автоматизируем его выполнение. Автор выставил */15 * * * * — выполнение каждые 15 минут.

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

Перенос полученных значений в Zabbix

Теперь займемся переносом данных в Zabbix.

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

Создадим новый элемент данных. Именуем как нам угодно, тип указываем Zabbix agent.

Я проводил все вышеописанные манипуляции на сервере с установленным Zabbix-server и Zabbix-agent. На вашем сервере, где вы провели вышеуказанные манипуляции, тоже должен быть установлен Zabbix-agent.

Создание элемента данных в Zabbix

image

Указываем наш путь к файлу и проверяем правильность. На выводе теста мы должны увидеть наше значение черного тонера.

Успешно выполненный тест

image

Итог – мы осуществили перенос данных в Zabbix, и теперь можем контролировать состояние расходных материалов централизованно.

Заключение

Мы освоили получение данных с помощью парсинга веб-страниц. В данном примере был взят принтер Oki 834, и успешно осуществлено получение данных о тонере. Я ответственно заявляю, что таким же способом было осуществлено получение данных о состоянии драм-юнитов, ленты и печи.

Доказательства в скриншотах

image

image

Таким образом возможно получение информации о расходниках с практически всех принтеров, и не только о принтерах. Парсинг – достаточно удобный инструмент, и работать с ним мне очень понравилось. И если моя статья поможет хотя бы одному человеку – значит, все было не зря.

Хочу так же выразить огромную благодарность redheaddeer, akozhevnikov97 и человеку, пожелавшему быть анонимом за помощь в написании статьи. Всем спасибо!

Оцените статью
Хостинги