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

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Введение

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

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

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

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

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

  1. Установка CentOS 8.
  2. Настройка CentOS 8.
  3. Установка и настройка zabbix сервера.

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

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

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

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

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

Включение 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

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

SNMPv2-SMI::mib-2.43.10.2.1.4.1.1 = Counter32: 8909 Всего напечатано страниц
SNMPv2-SMI::mib-2.43.11.1.1.6.1.1 = STRING: "Black Cartridge HP CF226X" Название картриджа
SNMPv2-SMI::mib-2.43.5.1.1.17.1 = STRING: "PHB8K3H0P1" Серийный номер
SNMPv2-SMI::mib-2.43.11.1.1.9.1.1 = INTEGER: 85 Уровень тонера

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

Printer_HP.xml Printer_Kyocera.xml Printer_Brother.xml

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

Настройка snmp интерфейса в zabbix

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

Элемент данных "Всего напечатано страниц"

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

Элемент данных "Уровень тонера"

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

Оповещение о низком уровне тонера

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

Сводная таблица принтеров в zabbix

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

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

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

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

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

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

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

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

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

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

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

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

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

114 комментариев

  1. на 6 забиксе сработало так:
    делаем новый вычисляемы элемент данных
    100*last(//tonergramms.device)/last(//tonerboxpages.device)
    где:
    tonergramms.device - остаток тонера в картридже
    tonerboxpages.device - ресурс картриджа
    эти данные берутся из snmp
    ключ пусть будет level_toner

    и делаем тригеер
    last(/KyoceraLiptonsV2/level_toner)<10

    с него делаем триггер

  2. Вы ничего не путаете? У принтера Brother по тому OID что у вас выдается информация о DRUM а не о TONER. Она поэтому и отличается на единицу. Типа второй картридж.

  3. Gravier Pratch

    Как называется виджет, на основе которого можно построить такой дашборд?

  4. Александра

    Здравствуйте, благодарю за статью)

  5. не канает у hp designJet ваще другий oid mib и прочие ху *иды

    snmpwalk возвращает вот такую шляпу

    iso.3.6.1.2.1.4.21.1.2.0.0.0.0 = INTEGER: 0
    iso.3.6.1.2.1.4.21.1.2.127.0.0.1 = INTEGER: 0
    iso.3.6.1.2.1.4.21.1.2.169.254.0.0 = INTEGER: 0
    iso.3.6.1.2.1.4.21.1.2.172.16.0.0 = INTEGER: 0
    iso.3.6.1.2.1.4.21.1.2.172.16.0.1 = INTEGER: 0
    iso.3.6.1.2.1.4.21.1.3.0.0.0.0 = INTEGER: 1
    iso.3.6.1.2.1.4.21.1.3.127.0.0.1 = INTEGER: 0
    iso.3.6.1.2.1.4.21.1.3.169.254.0.0 = INTEGER: 0
    iso.3.6.1.2.1.4.21.1.3.172.16.0.0 = INTEGER: 0
    iso.3.6.1.2.1.4.21.1.3.172.16.0.1 = INTEGER: 0
    iso.3.6.1.2.1.4.21.1.4.0.0.0.0 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.4.127.0.0.1 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.4.169.254.0.0 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.4.172.16.0.0 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.4.172.16.0.1 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.5.0.0.0.0 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.5.127.0.0.1 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.5.169.254.0.0 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.5.172.16.0.0 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.5.172.16.0.1 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.6.0.0.0.0 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.6.127.0.0.1 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.6.169.254.0.0 = INTEGER: -1
    iso.3.6.1.2.1.4.21.1.6.172.16.0.0 = INTEGER: -1

    и как ето интырпритирывать спрашивается?!

    • Подкиньте идею, как можно мониторить момент замены тонер - картриджа. На основе этого хочу выстроить мониторинг заполняемости листов тонером.
      В Xerox WC 3345 Maintenance assist выдает и количество замен картриджа, и строку с CRUM - тонер - картриджа. ОИДы c CRUM есть. ОИДа с количеством замен картриджа на WC 3345 не нашёл. На киосерах 3040MFP+ и на Кэнонах строка с CRUM - просто модель картриджа, сложно по ним мониторить.

      • В Zabbix есть Printer_Error. Например, для HP LaserJet M608. Что это за ошибка? Где взять расшифровку?

        • Printer_Error - 2 забыла добавить. И другие цифры. На просторах инета нашла только что-то типа этого:
          Код ошибки Описание
          11 Paper Out
          Paper tray empty or not seated correctly.
          Defective Tray Size Sensing or Configuration.
          Verify the configuration through the menus on the printer.
          Defective Paper Control Sensor PCB.

  6. Коллеги, подскажите как вычислить количество напечатанных страниц за последнюю минуту - было бы наглядно видно использование принтера.
    Так же было бы полезно получать зто вычисляемое значение в сутках и месяцах (календарных) для статистики

  7. Александр

    "значение будет приходить -2 или -3 с типом "Строка". Итем станет неактивным с ошибкой:

    Value "-2" of type "string" is not suitable for value type "Numeric (unsigned)"
    С этим уже ничего не поделать."

    Я почти нашел решение данной проблемы но мне не хватает знаний для логического завершения.

    Что я имею:принтер brother dcp 9020 с неоригинальным картриджем и значением -3 в snmpwalk напротив показаний уровня тонера ( причем это значение никак не меняется даже если заканчивается тонер).

    Что я сделал: Нашел OID который выдаёт все значения в одной строке в виде 16-ричной системе счисления и нашел значения которые показывают количества тонера.

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

  8. Александр

    Всем привет, для принтеров Kyocera и Zabbix версии 5.4 разобрался какое выражение нужно указать чтобы получить тригер при уровне тонера <10%
    Черный тонер
    100*last(/Kyosera P5021cdn/mib-2.43.11.1.1.9.1.4,#1)/last(/Kyosera P5021cdn/mib-2.43.11.1.1.8.1.4,#1)<10
    голубой
    100*last(/Kyosera P5021cdn/mib-2.43.11.1.1.9.1.1,#1)/last(/Kyosera P5021cdn/mib-2.43.11.1.1.8.1.1,#1)<10
    пурпурный
    100*last(/Kyosera P5021cdn/mib-2.43.11.1.1.9.1.2,#1)/last(/Kyosera P5021cdn/mib-2.43.11.1.1.8.1.2,#1)<10
    Желтый
    100*last(/Kyosera P5021cdn/mib-2.43.11.1.1.9.1.3,#1)/last(/Kyosera P5021cdn/mib-2.43.11.1.1.8.1.3,#1)<10

    Надеюсь кому помог

  9. Алексей

    Простите за такой тупейше-глупейший вопрос, но как шаблоны то скачать? Я нажимаю на них и у меня открывается отдельная вкладка с его содержимым. Мне скопипастить в блокнот и поменять расширение? Подскажите, плз. А если копипастить то верхняя строчка , а нижняя , там фигурирует слово export, они тоже нужны.
    Спасибо!!!

    • Открываете шаблон по ссылке и жмёте "сохранить как". Вам нужно сохранить xml документ.

      • Алексей

        Спасибо. Получилось.
        А то Я просто копировал в блокнот и потом менял расширение. И не работало. Видимо из-за того, что при этом отсутствует такая строчка "?xml version="1.0" encoding="UTF-8"?"
        Чувствую себя отсталым(((

  10. Дмитрий

    Добрый день!

    Можно ли организовать мониторинг парка в разных организациях, чтобы данные стекались на один сервер в нашем офисе?

    • Можно. Для этого можно внутри организаций сделать zabbix-proxy который будет собирать данные с принтеров и посылать их на Ваш сервер.

  11. Аноним

    Уточните как вывели значение напечатанные на текущей неделе?

  12. Добрый день!
    Коллеги , А для Konica-Minolta что то где то найти реально ?
    Спасибо !

  13. Сергей

    Взял SNMP OID:1.3.6.1.2.1.43.11.1.1.9.1.1 - для HP работает!
    Но вопрос открыт - Где указан OID.

  14. Сергей

    Добрый день, Владимир! Спасибо за статью, очень помогает.
    Только возникают некоторые вопросы:
    1.Где указан OID (в файле snmp.txt после выполнения команды не нашел)
    2.В шаблоне HP указаны параметры:
    -Всего напечатано страниц;
    -Название картриджа;
    -Уровень тонера;
    А откуда берется инфа о напечатано на текущем тонере,объем тонера?

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

      • Кирилл

        Спасибо, отличная статья
        Правда на вопрос "Откуда берется OID из MIB" так никто и не ответил xD
        Судя по комментариям тут таких же бедолаг человек 5 было в комментариях, так никто и не ответил =)

    • Алексей

      кажется это из rfc1739
      Могу ощибаться.

  15. Константин

    При импортировании выдаёт такую ошибку
    Ошибочный тег "/zabbix_export/templates/template(1)/items/item(1)": неожиданный тег "snmp_community".

    • Понимаю смысл ошибки. В более свежих версиях эту настройку из шаблонов перенесли в свойства хоста. Этот тэг теперь из шаблона надо убирать.

      • Константин

        То есть просто исключить из шаблона все затегированные данным выражением фрагменты?

  16. Доброго времени суток, при попытке протестировать формулу элементов данных 100-100*(last("mib-2.43.11.1.1.9.1.1")/last("mib-2.43.11.1.1.8.1.1")) выдает ошибку "Cannot evaluate function "last()": item "Kyocera 2450dn:mib-2.43.11.1.1.9.1.1" does not exist." но в терминале Linux это Mib значение присутствует, будет ли работать шаблон в таком случае? если нет, как можно исправить?

  17. При импорте Printer_HP.xml в Zabbix 5.2 - получаю ошибку (Cannot read XML: (68) StartTag: invalid element name [Line: 205 | Column: 57].)
    {Printer HP:mib-2.43.11.1.1.9.1.1.last(#1)}<10

  18. Алексей

    Приветствую.
    А не планируете дописать статью еще и под Debian? В связи с умиранием CentOS-а...

    • Что именно дописать? Материал статьи не привязан к операционной системе вообще. И Centos не умер. Он изменится в будущем немного, сменит название. Но на актуальность статей это никак не повлияет. Система то останется той же.

      • Алексей

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

        • Debian нормальный вариант. Если бы у него был срок поддержки релиза 10 лет, как у Centos, я бы даже не сомневался. А так буду что-то из клонов RHEL использовать из-за поддержки релиза в 10 лет. Мне 10 лет больше нравится, чем 5. Еще образа Debian нет у некоторых cloud провайдеров. Например, у oracle cloud. Из-за этого иногда неудобства возникают.

  19. Доброго времени суток. Добрался до развертывания мониторинга принтеров, статья отлично помогла.
    Осталось несколько нюансов:
    Для принтеров HPLJ 4015 остаток картриджа считается по отношению оставшихся к печати страниц на текущем картридже и полного ресурса в страницах т.е. за основу взят шаблон Kyocerf и вместо напечатано страниц на текущем картридже в расчет берется остаток страниц к печати, соответственно в формуле процентного остатка не надо от 100 отнимать соотношение, а просто его подставить.
    Дополнительно обнаружил через вебморду принтера, аналогичные параметры не для картриджа, а для ремонтного комплекта (тоже добавил в шаблон)

    Теперь осталась проблема, в названии картриджа не текстовый результат а последовательность HEX значений символов, причем не в юникоде, а в ASCII. Это как-то связано с потенциальной проблемой https://serveradmin.ru/oshibka-v-zabbix-nepodderzhivaemaya-kodovaya-stranicza/ или просто из-за того что исходные шаблоны в статье выгружены с версии 3.4 а у меня zabbix 5.0.5?

    Еще одна проблема есть по МФУ HPLJ M1536 MFP. Там по таймауту, SNMP не успевает отдать данные, даже через snmpwalk сбор идет более минуты, а максимально возможное значение для в конфиге zabbix-server 30 сек. Возможно, проблема в том, что в данном устройстве картридж не оригинал, но тогда не понятно, почему задержки при snmpwalk

  20. Добрый день, можно ли как то отследить включен ли WiFi на принтере?

  21. Меняю в принтере SNMP communuity "public" на другое. Принтер перестает быть виден по сети пользователю, печать невозможна.
    Почему так происходит?

    • Это что-то неведомое. SNMP отдельная служба и с печатью никак не связана. Как и с сетевой доступностью.

    • Максим

      В свойствах принтера необходимо открыть настройки IP-порта и там изменить строку community на новую.

  22. Александр

    Спасибо за статью! Zerox, подскажите, пожалуйста, как настроить мониторинг состояния картриджа отработанного тонера на устройствах фирмы Kyocera? Нигде не могу найти информацию, а у самого не хватает ума это сделать. Заранее спасибо!

    • Я не настраивал сверх того, что описано в статье. По сути, вам просто надо найти OID, который передает информацию о состоянии этого картриджа с тонером и добавить его в мониторинг. Кстати, есть программа printstore. У меня есть обзор на нее на сайте. Эту информацию можно подсмотреть в ней.

      • Александр

        В этом и проблема, что не могу понять как получить значение нужного мне OID. Я нашел OID отвечающий за картридж отработанного тонера, но вот его состояние передается некорректно. Его максимальное значение и израсходованное отдаются отрицательными (-2 и -3). Я попробовал воспользоваться программой printstore, чисто чтобы взять оттуда информацию. Но оказалось что она не решают мою проблему. Там точно так же видно что есть картридж отработанного тонера, но вот ни его емкость, ни сколько там уже тонера, она не отображает.

        • Возможно, принтер просто не отдает эти данные. А -2 и -3 это просто его статус, типа заполнен или нет.

        • Шаблон для Kyocera МФУ, думаю для принтера тоже подойдёт. Выберите себе из него, что Вам требуется.

          https://yadi.sk/d/L8wljNtZHAs01A

        • Александр, если требуется процентное значение, необходимо сделать 2 элемента данных, собрать 2 значения (максимальный уровень тонера 1.3.6.1.2.1.43.11.1.1.8.1.1 и текущий уровень тонера 1.3.6.1.2.1.43.11.1.1.9.1.1), затем сделать 3 элемент данных для вычисления с формулой: 100*last("kyocera.toner.now")/last("kyocera.toner.max")

          • Александр

            Алексей, это OID для для обычного тонера, а мне нужны данные по отработанному тонеру.

        • Максим

          Значение -2 согласно RFC 1759 означают, что емкость расходника неизвестна. Значение -3 означает, что уровень неизвестен, но расходник не пуст (или не заполнен в слцчае расходного тонера)

    • Евгений

      В моём FS-1060DN я делал через костыли. Поставил Kyocera Client Tools подключился через USB-кабель. Настроил на соответствующей вкладке. Выдернул USB-кабель и продолжил работать через сеть.

    • Александр, если требуется процентное значение, необходимо сделать 2 элемента данных, собрать 2 значения (максимальный уровень тонера 1.3.6.1.2.1.43.11.1.1.8.1.1 и текущий уровень тонера 1.3.6.1.2.1.43.11.1.1.9.1.1), затем сделать 3 элемент данных для вычисления с формулой: 100*last("kyocera.toner.now")/last("kyocera.toner.max")

  23. Как получить значение самого первого индекса через snmp?
    Например, есть oid 1.3.6.1.2.1.47.1.1.1.1.13 с кучей индексов, но из этой кучи, мне нужен только самый первый, как его получить?

  24. Аноним

    Для Бразеров (по крайней мере новых, где фотобарабан отдельно от тонера):
    mib-2.43.11.1.1.9.1.2 - будет обозначать "Остаточный ресурс фотобарабана"
    mib-2.43.11.1.1.8.1.2 - "Общий ресурс"
    level-toner - "Остаточный ресурс фотобарабана в %", вычисляемый по формуле "100*(last("mib-2.43.11.1.1.9.1.2")/last("mib-2.43.11.1.1.8.1.2"))"
    ну и триггер стоит переназвать, например, "Фотобарабан заканчивается" при значении < 5

    • Спасибо за полезную информацию.

    • Здравствуйте! Действительно на Brother это "Остаточный ресурс фотобарабана", не могу найти инфу именно для тонера, может кто поделится?)

  25. Алексей

    Добрый день, при импорте шаблона ошибка
    Ошибочный параметр "/source": ошибочная последовательность байт в UTF-8.

    • Александр

      Такая же ошибка при добавлении другого шаблона по мониторингу жеских дисков. zabbix 5.0-1. Другие шаблоны добавляет, с русским языком дружит. Т.к. не сильно сведущ и не столь просвящен в этой теме, хотелось бы узнать, куда копать хотя бы? Как можно исправить или кто виноват?

    • Искандер

      Пересохраните файл в кодировке UTF-8 (а не ANSI)

  26. Владимир, приветствую. Ни как не могу настроить мониторинг коммутаторов D-Link. Есть модель DES-1210-52. Чего-только не настраивал - не получается. Можете оказать помощь в настройке?
    З.Ы.: циски и микротики настроил без проблем.

    • А чем я могу помочь. Весь мониторинг по snmp настраивается одинаково. Сам я эти свитчи не мониторил.

  27. Появилась необходимость мониторинга расходных материалов. Cтолкнулся с одним недостатком, при замене принтера на другой. Zabbix начинает загружать данные с нового принтера, а они не соответствуют данным старого принтера. Заббиксом пользуюсь недавно, поэтому хотел спросить есть ли механизм суммирования данных или Вы можете предложить более лучшее решение?

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

      • Например, стоит принтер 1, у которого распечатано 6000 стр, его поменяли на новый принтер, у него распечатано 0 стр. То есть значения элемента данных "Всего напечатано страниц" изменились. У меня стоит задача контроля использования бумага отделами компании за 3 месяца, для анализа и определения сколько закупать бумаги. А за эти 3 месяца есть вероятность что принтеры будут меняться.

        • Надо тогда запоминать эти 6000 стр. где-то отдельно. Эта задача организационная, в рамках заббикса ее решить так, чтобы было удобно, вряд ли получится. Он все же не для этого предназначен.

          • Создал элемент данных с типом вычислительный. В поле выражение указал формулу: last("sum")+abschange("mib-2.43.10.2.1.4.1.1").Есть минусы: Нет сети Заббикс не сможет его контролировать, при замене принтера к значению будет прибавляется единица, но это не критично. Есть один минус нагрузка на сеть, так как распечатку нужно мониторить каждую секунду. Да и серверу будет тяжело.

    • Если Вы будете собирать с данными по кол-ву печати например серийный номер и модель принтера, то будет понятно в какой момент он поменялся при выгрузке данных.
      У меня стоит похожая задача, собирать и анализировать кол-во печати каждый месяц и считать среднее за любой период 3 месяца или год не важно.
      Я выгружаю себе данные прямо в Excel через SQL запрос, запрос автоматически берет первое значение за месяц и последнее. и выводит разницу. Дальше посчитать среднее за какой-то период не составляет труда. При смене принтера сразу видно либо отрицательные значения в расчетах либо невероятно большие.

      Пример SQL запроса в базу Zabbix'a:
      Начало запроса ->
      SELECT aa.name, aa.start_date, aa.counter, bb.end_date, bb.counter, bb.counter-aa.counter 'difference'
      FROM
      (SELECT 1 "id", DATE(max(FROM_UNIXTIME(clock))) "start_date", max(value) "counter", h.name FROM history_uint ht
      JOIN items i ON ht.itemid=i.itemid JOIN hosts h ON i.hostid = h.hostid
      WHERE i.name='10 Печать - Всего' AND h.host LIKE '%%' AND DATE(FROM_UNIXTIME(clock)) = DATE(20190501)
      GROUP BY id, h.name ORDER BY h.name) aa
      LEFT JOIN
      (SELECT 1 "id", DATE(max(FROM_UNIXTIME(clock))) "end_date", max(value) "counter", h.name FROM history_uint ht
      JOIN items i ON ht.itemid=i.itemid JOIN hosts h ON i.hostid = h.hostid
      WHERE i.name='10 Печать - Всего' AND h.host LIKE '%%' AND DATE(FROM_UNIXTIME(clock)) = DATE(20190531)
      GROUP BY id, h.name ORDER BY h.name) bb
      ON aa.name=bb.name;
      взято название элемента данных, которые собирает кол-во печати.

      В итоге получается таблица

      (имя) (начальная дата) (счетчик) (последняя дата) (счетчик) (разница/кол-во в месяц)
      name start_date counter end_date counter2 difference
      имя_принтера_01 01.05.2019 00:00 37218 31.05.2019 00:00 38413 1195
      имя_принтера_02 01.05.2019 00:00 282381 31.05.2019 00:00 282570 189
      имя_принтера_03 01.05.2019 00:00 639243 31.05.2019 00:00 646244 7001
      имя_принтера_04 01.05.2019 00:00 51101 31.05.2019 00:00 51214 113

      Если есть мысли по улучшению запроса я только за :) Отчеты мне нужны)))

      • Текст с таблицей поплыл после отправки комментария, вот ссылка на скриншот
        https://yadi.sk/i/55UI20IWhQjr_w

        • Что-то пол комментария съело при публикации.
          Комментарий к длинному комменту предыдущему.

          history_uint - таблица с данными (числовая), у Вас может быть history_text или history_str(смотря в чем храните данные)
          DATE(20190501) и DATE(20190531) - начальная и последняя дата.
          WHERE i.name=’10 Печать — Всего’ - взято название элемента данных, которые собирает кол-во печати.

  28. У меня мониторинг принтеров на Zabbix выглядит так https://yadi.sk/i/V1lJCEegPYeiig

    • У меня в названиях картриджей тоже иногда в каком-то коде названия. Не понял, как это победить.

      • Это шестнадцатеричный код, в заббиксе есть функция предобработки значение перед выводом. Там можно выбрать конвертировать из шестнадцатеричной системы в двоичную. Но у меня не отрабатывает, может глюк версии или я что-то не так делаю. Попробуйте у себя.

        • Это я понял, но у меня тоже не получилось ходу, я не стал заморачиваться.

        • Добавляем Предобработку значения tonerbox.device на JavaScript

          заметил, что все параметры Hex-STRING начинаются с D0):

          if (value.substring(0, 2) == "D0" ){ //сверим первые символы строки
          value = value.replace(/ +/g, '').trim();
          return decodeURIComponent('%' + value.match(/.{1,2}/g).join('%'));
          }
          return (value);

    • Андрей

      Используйте данный скрипт в предобработке (javascript zabbix 4.2):
      --
      var out = "";

      for (var i = 0, nums = value.split(" "); i < nums.length; i++) {
      out += String.fromCharCode(parseInt(nums[i], 16));
      }

      return out;
      --
      Та же проблема была.

      • Отлично, спасибо за решение.

      • Спасибо за решение. Попробуем.

      • Виктор

        Скрипт, приведённый выше, не работает с кодировкой UTF-8 для кириллицы. Попробуйте перекодировать: D0 9C D0 BE D0 B4 D1 83 D0 BB D1 8C 20 D1 81 D0 B1 D0 BE D1 80 D0 B0 20 D1 82 D0 BE D0 BD D0 B5 D1 80 D0 B0 20 48 50 20 43 45 32 35 34 41 00 Должно получиться: Модуль сбора тонера HP CE254A. Пример правильного скрипта https://jsfiddle.net/ms4canut/

        • Либо более оптимально (в дальнейшем заметил, что все параметры Hex-STRING начинаются с D0):
          if (value.substring(0, 2) == "D0" ){ //сверим первые символы строки
          value = value.replace(/ +/g, '').trim(); // уберем все пробелы
          return decodeURIComponent('%' + value.match(/../g).join('%')); // декодируем управляющие последовательности символов.
          }
          return (value);

          • Gravier Pratch

            function snmphexdecode(hex) {
            var preStr = '';
            hex.split(" ").forEach(function(charcode, i) {
            preStr += String.fromCharCode(parseInt(charcode, 16));
            });
            var result = "";
            var i = 0;
            var c = c1 = c2 = 0;
            while ( i < preStr.length ) {
            c = preStr.charCodeAt(i);
            if (c 191) && (c < 224)) {
            c2 = preStr.charCodeAt(i+1);
            result += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
            i += 2;
            }
            else {
            c2 = preStr.charCodeAt(i+1);
            c3 = preStr.charCodeAt(i+2);
            result += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
            }
            }
            return result;
            }
            return snmphexdecode(value);

  29. Добрый день, у меня zabbix не принимает формулу для Kyocera, выдает ошибку "Cannot evaluate function "last()": item"

  30. Столкнулся с тем , что у принтеров кеосера разные данные при вычислении уровня тонера.
    http://prntscr.com/nrdo52
    Использовал формулу :
    100*(last(«mib-2.43.11.1.1.9.1.1»)/last(«mib-2.43.11.1.1.8.1.1»))

    Получается в одном случае результат правильно, в другом случае нужно вычитать из 100. Как быть в этом случае?

    • Нет, все ок. что то я намудрил. Удалите пожалуйста последние 4е коммента).
      Задаю вопросы и сам в них разбираюсь...

    • Делать разные шаблоны под разные принтеры.

  31. Аноним

    Принтер Кеосера. SNMP запрос не работает. Что может быть не так?
    http://prntscr.com/nqzim0
    $ snmpwalk -v 2c -c public 10.90.0.50 > ~/snmp.txt
    Timeout: No Response from 10.90.0.50

    • Аноним

      У меня получилось. Нужно было прописать IP треп заббикса.
      На вскидку посчитал уровень тонера. У меня формула получилась такая 100* 9750/15000 . Завтра еще покопаю. Пора домой.

  32. Андрей

    объясните плиз, я выгрузил в файлик данные. они в виде:
    iso.3.6.1.2.1.1.7.0 = INTEGER: 12
    iso.3.6.1.2.1.2.1.0 = INTEGER: 1
    iso.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
    iso.3.6.1.2.1.2.2.1.2.1 = STRING: "eth0"
    и т.д. как их правильно читать? как понять что определенная строка это уровень тонера.

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

  33. Zerox, подскажите, пожалуйста, а как вы сделали такую панель отчета в конце статьи (где вся информация по принтерам собрана)?

  34. Здравствуйте.

    Есть счетчик отпечатанных страниц на принтере.
    Как написать триггер, который бы оповещал при определенном количестве отпечатанных страниц. Допустим 200тыс.стр. - оповещение, 400 тыс.стр. - оповещение, и т.д.
    Нужно для понимания, когда заказывать расходники (ролики и т.д)
    ​​​​​​​Спасибо.

    • .43.11.1.1.9 в Printer-MIB числится как prtMarkerSuppliesLevel и в комментарии к нему написано, что это не количество напечатанных страниц с текущего картриджа, а "The current level if this supply is a container; remaining space if this supply is a receptacle. Т.е., это текущий уровень, что по сути на русском обозначает остаток от максимального числа емкости из .43.11.1.1.8. По черно-белым Brother в .43.11.1.1.9.1.2 значение остатка страниц по ресурсу из .43.11.1.1.6.1.2 для Drum Unit, как и в .43.11.1.1.8.1.2, т.е., это данные не по картриджу, а по блоку фотобарабана в который картридж вставляется. На счет .43.10.2.1.4.1.1 по Brother правильно, это всего напечатано страниц или напечатано/ксерокопировано для МФУ и оно должно совпадать с общим числом страниц из веб-интерфейса. А вот по Kyocera тоже стоило поинтересоваться для сравнения числа из .43.10.2.1.4.1.1 с общим числом из Command Center RX. Число из .43.10.2.1.4.1.1 явно окажется больше. Число же всех страниц из Command Center RX для Kyocera должно совпасть с 1.3.6.1.4.1.1347.43.10.1.1.12.1.1 и еще оно совпадает с суммой значений из 1.3.6.1.4.1.1347.42.2.1.1.1.6.1.х по форматам. По цветным устройствам раздельно общие счетчики черно-белых и цветных оттисков берутся из 1.3.6.1.4.1.1347.42.2.2.1.1.3.1.1 и 1.3.6.1.4.1.1347.42.2.2.1.1.3.1.2 соответственно, а по сумме форматов из 1.3.6.1.4.1.1347.42.2.1.1.1.7.1.х и 1.3.6.1.4.1.1347.42.2.1.1.1.8.1.х. Подозреваю, что по Kyocera в .43.10.2.1.4.1.1 скорее всего счетчик ресурса сервисного комплекта и когда подрастет ближе к 100000 можно будет проверить. По данной теме у вас не все. Если подходить к задаче с головой, то и с -1, -2, -3 с не новыми/перезаправленными без замены чипа картриджами можно пробовать задачу успешно решать при знании модели картриджа и черно-белого принтера/мфу. По цветным картриджам сложнее, там на каждую страницу расход по цветам может быть разный.

  35. Не могу вкурить откуда берётся snmp oid.
    У меня разные принтеры фирмы hp. Настроил. Начал показывать уровень тонера только на MFP M426FDN. Все остальные данные не показывет. то что в темплате указано в поле snmp oid я не могу найти в файле snmp.txt который получается после команды
    snmpwalk -v 2c -c public 192.168.88.20 > ~/snmp.txt
    mib все находятся а вот oid нет. где я туплю?

  36. Аноним

    У вас есть HP с не оригинальным тонером? Смогли через Zabbix мониторить?

  37. А как заставить Zabbix собирать статистику по SNMPм3?
    Использовать макросы
    {$SNMPV3_AUTH}
    {$SNMPV3_NAME}
    {$SNMPV3_PRIV}
    ?
    а как быть с отсальными параметрами?

    • Роман, с SNMPм3 все точно так же, как и с SNMPм1 и 2. Настраиваешь на устройстве параметры SNMPм3 (аутентификацию, шифрование, пароли, контекст, если нужен), заполняешь в Zabbix необходимые поля (я использую макросы) и все. У меня так работают и свитчи, и роутеры, и принтеры.

  38. В шаблоне Kyocera почему то неправильно формируется значение тонера. При только что установленном значении полного картриджа значение тонера равно 1% и соответственно срабатывает тригер на малое количество.

    • Нужно формулу уровня тонера 100-100*(last("mib-2.43.11.1.1.9.1.1")/last("mib-2.43.11.1.1.8.1.1")) привести к виду 100*(last("mib-2.43.11.1.1.9.1.1")/last("mib-2.43.11.1.1.8.1.1")) тогда корректные значения будут.

  39. Александр

    Если не сложно, то какие SNMP OID использовали помимо приведенного в примере?
    Например, у меня HP425MFP на 1.3.6.1.2.1.25.3.2.1.3.1 выводит название принтера. Другие сам пока еще ищу.

    • Использовал только то, что в примере. Я не придумал, какая еще информация может быть полезной.

  40. Валерий

    Спасибо за инфу! а для Canon принтеров есть шаблон?
    имею Zabbix 3.4.14 ? что-то не нашел..:)

    • У меня нету, но возможно подойдет один из тех, что я представил. Сейчас настраиваю мониторинг принтеров Ricoh, подошел шаблон от HP. Там же все одинаковое, максимум надо OID подправить. Их можно все запросить из принтера и по аналогии найти необходимые.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar