Ad Widget

Collapse

Мониторинг ресурса картриджа

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Simplyman
    Junior Member
    • Dec 2017
    • 25

    #1

    Мониторинг ресурса картриджа

    Добрый день!
    Подключил мониторинг принтера Xerox 4510N по SNMP и столкнулся с тем, что он не правильно определяет ресурс тонер-картриджа. Установлен оригинальный 113R00712 большой емкости с ресурсом на 19000 листов. Принтер правильно определяет тип картриджа но не правильно определяет его ресурс в сторону значительного занижения - 5755 листов. В итоге получаем то, что принтер начинает ругаться на картридж, израсходовав всего треть его ресурса. Но при этом от принтера мы получаем верную информацию об общем количестве распечатанных листов.
    Идея заключается вот в чем:
    При установке нового картриджа обнуляется счетчик остаточного ресурса. Можно ли сделать такой элемент данных, который отсчитывал бы количество отпечатанных листов, обнуляясь при этом после установки нового картриджа?
    Last edited by Simplyman; 04-10-2019, 09:45.
  • Simplyman
    Junior Member
    • Dec 2017
    • 25

    #2
    Вот здесь нашел следующий совет:
    Можно создать свой элемент данных и при срабатывании триггера вызывать внешний скрипт, который, например, через zabbix_sender полет нужное значение в элемент данных. Можно внешним скриптом напрямую базу дергать с инкрементом значения. В zabbix встроенные счетчики есть только в триггерах (сделаны через count) в элементах данных я таких не припомню.
    Может ли кто подробнее рассказать, как это сделать? С какими параметрами должен быть элемент данных и триггер, и какой скрипт можно использовать для этих целей?

    Comment

    • sadman
      Senior Member
      • Dec 2010
      • 1611

      #3
      Там же ответ - просто считывайте требуемую метрику по SNMP.

      Comment

      • Simplyman
        Junior Member
        • Dec 2017
        • 25

        #4
        Откровенно говоря, не заметил я там такого ответа. Да и ОИДа такого я не обнаружил.

        Comment

        • sadman
          Senior Member
          • Dec 2010
          • 1611

          #5
          А Вы тыкните в свою ссылочку...

          Если нет OID-а, то как Вы планировали из принтера получить кол-во отпечатанных листов?

          Comment

          • Simplyman
            Junior Member
            • Dec 2017
            • 25

            #6
            1. Вы невнимательно читали вопрос. Повторюсь: можно ли сделать элемент данных, который отсчитывает количество отпечатанных листов и обнуляется при замене картриджа.
            2. Вы невнимательно читали тему по ссылке. Там под постом об СНМП есть кнопка "комментарии", при нажатии которой можно понять суть моего второго поста.

            Comment

            • Kos
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • Aug 2015
              • 3406

              #7
              Я не sadman, но, уж извините, выскажу своё мнение: я бы на его месте перестал отвечать дальше после ответа таким тоном.
              Человек пытается Вам помочь, а в ответ получает лишь личный "наезд".

              Если по сути, то Вы так и не ответили на вполне логичный вопрос:
              Если нет OID-а, то как Вы планировали из принтера получить кол-во отпечатанных листов?
              Потому что если такой метрики нет, то дальше обсуждать уже почти нечего.
              Разве что можно предположить, что есть какая-то другая метрика, которая показывает расход картриджа в других единицах (в процентах, например), и тогда можно присобачить пересчёт этих единиц в те, которые Вам нужны - либо сделав вычисляемый айтем, либо зависимый с препроцессингом, либо засунув пересчёт прямо в препроцессинг исходного айтема. Во всех случаях, конечно, нужно чётко представлять себе формулу такого пересчёта.

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

              Comment

              • Simplyman
                Junior Member
                • Dec 2017
                • 25

                #8
                Originally posted by Kos
                Если по сути, то Вы так и не ответили на вполне логичный вопрос:
                Ответ на этот вопрос содержится в первом посте темы.
                Но при этом от принтера мы получаем верную информацию об общем количестве распечатанных листов.
                Если быть более точным, то это OID 1.3.6.1.2.1.43.10.2.1.4.1.1. Далее я привел ссылку, где описано как сделать счетчик картриджей, и даже процитировал инструкцию оттуда. По этому поводу задал еще пару вопросов по неясным для меня моментам. Человек не ответил ни на первый ни на второй вопрос, но тем не менее прошу прощения, если кого обидел. Такой цели я не преследовал.
                Last edited by Simplyman; 27-11-2019, 16:42.

                Comment

                • Kos
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • Aug 2015
                  • 3406

                  #9
                  Ага, спасибо, теперь становится яснее. Иногда, чтобы уяснить, таки надо повторить мысль несколько раз :-)

                  Т.е. получается, что исходные данные такие:
                  • есть доступный по SNMP счётчик общего количества страниц, отпечатанных принтером (видимо, с начала эксплуатации?). Он в принципе не сбрасывается в ноль, а только растёт;
                  • известно, на сколько страниц рассчитан один ёмкий картридж;
                  • хочется получать уведомление, когда количество отпечатанных после смены картриджа страниц приближается к расчётному для одного картриджа;
                  Так?

                  Для меня в этой конструкции остаётся неясным, есть ли возможность как-то отслеживать сам факт установки нового картриджа.
                  Потому как не проблема сделать, например, вычисляемый элемент данных с формулой "общий счётчик - N" и такой же периодичностью как и общий счётчик, при этом в качестве N указать, например, пользовательский макрос, который вручную выставлять в значение общего счётчика при каждой замене картриджа. Работать будет, но не очень удобно (особенно если таких принтеров много), хотелось бы автоматизации процесса сброса счётчика в ноль; но для этого надо понимать, как отлавливать событие "смена картриджа".

                  Например, если принтер ругается после смены картриджа не сразу, а только через какое-то время (упомянутые 5755 листов, хотя хотелось бы 19 тыс.), то логично предположить, что внутри принтера всё же есть какие-то счётчики, которые после замены картриджа меняют своё состояние. И если их также можно опросить по SNMP, то по этому изменению состояния можно отловить и факт замены картриджа. Если моя мысль верна, то можно попытаться развить её подробнее.

                  Comment

                  • sadman
                    Senior Member
                    • Dec 2010
                    • 1611

                    #10
                    Kos, можно попробовать по тонеру (если принтер отдаёт уровень) - картридж пополнили, как только (last - prev) > N . Однако я пока не понимаю, как это привязать к обнулению (кроме как через костыль с external script).

                    Comment

                    • Kos
                      Senior Member
                      Zabbix Certified SpecialistZabbix Certified Professional
                      • Aug 2015
                      • 3406

                      #11
                      Да, без костыля не получится, он потребуется в любом случае.
                      Пока вырисовывается такая схема.
                      • Если предположить, что ёмкость картриджа - константа (или, по крайней мере, меняется редко), то её можно загнать в пользовательский макрос. Тогда для решения задачи нужны три счётчика, назовём их S, N и X.
                      • S - это необнуляемый счётчик общего количества отпечатанных принтером страниц. Как я понимаю, он уже есть, доступен по SNMP.
                      • X - это то, что нужно получить: счётчик количества страниц, отпечатанных после последней смены картриджа. Его можно легко сделать как вычисляемый по формуле X = S - N.
                      • N - это количество страниц, которое было отпечатано принтером на момент последней замены картриджа. Вот с ним придётся немного повозиться. Например, можно сделать его с типом "траппер" и засылать в него значение внешним скриптом (тот самый костыль), который будет вызываться при обнаружении события "смена картриджа". Скрипт должен уметь принимать в качестве параметра то значение, которое нужно будет заслать.
                      • Собственно, при ближайшем рассмотрении оказывается, что этот внешний скрипт - это просто штатная команда zabbix_sender.
                      • Если действительно есть счётчик уровня тонера, пусть даже не очень точно работающий, то на него можно навесить триггер, генерирующий событие "смена картриджа" (как верно замечено, условие триггера - "уровень стал больше предыдущего более чем на некоторое пороговое значение", где "пороговое значение" больше нуля, чтобы не реагировать на случайные колебания вроде "картридж встряхнули").
                      • Кроме того, в условие триггера нужно добавить упоминание счётчика S с условием, которое всегда выполняется (например, "больше нуля"). Таким образом, это условие не будет влиять на поведение триггера, но на значение S можно будет ссылаться в Action-е через макрос {ITEM.VALUE2}.
                      • Остаётся навесить на это дело Action, который при срабатывании вышеупомянутого триггера выполнит команду, например, прямо на Zabbix-сервере, где в качестве внешнего скрипта будет тот самый zabbix_sender для засылки значения {ITEM.VALUE2} в счётчик N хоста {HOST.HOST}. Также нужно будет однократно выдать команду zabbix_sender вручную, чтобы проинициализировать этот счётчик нужным значением изначально.
                      Если таких принтеров много - не страшно, можно эту конструкцию засунуть в шаблон. Сложнее с цветными принтерами, у которых несколько картриджей; тогда нужно дублировать эти счётчики для каждого из картриджей (и, возможно, Action-ы тоже, чтобы засылать значение в счётчик для нужного картриджа).

                      Comment

                      • Simplyman
                        Junior Member
                        • Dec 2017
                        • 25

                        #12
                        Originally posted by Kos
                        Т.е. получается, что исходные данные такие:
                        • есть доступный по SNMP счётчик общего количества страниц, отпечатанных принтером (видимо, с начала эксплуатации?). Он в принципе не сбрасывается в ноль, а только растёт;
                        • известно, на сколько страниц рассчитан один ёмкий картридж;
                        • хочется получать уведомление, когда количество отпечатанных после смены картриджа страниц приближается к расчётному для одного картриджа;
                        Так?
                        Все верно, только хочется получать не уведомление, а реальное число пробега картриджа, т.к. принтер неверно определяет его ресурс
                        Originally posted by Kos
                        Для меня в этой конструкции остаётся неясным, есть ли возможность как-то отслеживать сам факт установки нового картриджа.
                        При установке нового картриджа обнуляется показатель его оставшегося ресурса (сколько он может напечатать листов).
                        Originally posted by Kos
                        хотелось бы автоматизации процесса сброса счётчика в ноль;
                        То-то же)
                        Originally posted by Kos
                        Например, если принтер ругается после смены картриджа не сразу, а только через какое-то время (упомянутые 5755 листов, хотя хотелось бы 19 тыс.), то логично предположить, что внутри принтера всё же есть какие-то счётчики, которые после замены картриджа меняют своё состояние. И если их также можно опросить по SNMP, то по этому изменению состояния можно отловить и факт замены картриджа. Если моя мысль верна, то можно попытаться развить её подробнее.
                        Ваша мысль верна. Этот счетчик - показатель оставшегося ресурса картриджа (OID 1.3.6.1.2.1.43.11.1.1.9.1.1).
                        Last edited by Simplyman; 28-11-2019, 13:42.

                        Comment

                        • Kos
                          Senior Member
                          Zabbix Certified SpecialistZabbix Certified Professional
                          • Aug 2015
                          • 3406

                          #13
                          Originally posted by Simplyman
                          Ваша мысль верна. Этот счетчик - показатель оставшегося ресурса картриджа (OID 1.3.6.1.2.1.43.11.1.1.9.1.1).
                          Забавно: это именно тот OID, на который только что ссылался коллега sadman.
                          Мне, правда, очень любопытно, что же отдаётся по этому OID-у в Вашем случае для полного "большого" картриджа и для пустого, а также для ситуации, когда принтер "начинает ругаться".

                          Ну тогда рассмотрите подробнее алгоритм, изложенный в моём предыдущем сообщении: мне кажется, что, несмотря на громоздкость описания, реализация не так уж сложна. И, вроде, это должно решать вашу задачу (то, что вам нужно, - это счётчик X).
                          Last edited by Kos; 28-11-2019, 16:43.

                          Comment

                          • Simplyman
                            Junior Member
                            • Dec 2017
                            • 25

                            #14
                            Originally posted by Kos
                            Забавно: это именно тот OID, на который только что ссылался коллега sadman.
                            Я это все описал в первом посте, но видимо как-то криво, раз выяснения, чего же я хочу, растянулись так надолго, за что также прошу прощения, и выражаю свою благодарность за Вашу терпеливость.
                            Originally posted by Kos
                            Мне, правда, очень любопытно, что же отдаётся по этому OID-у в Вашем случае для полного "большого" картриджа и для пустого, а также для ситуации, когда принтер "начинает ругаться".
                            Так это показывает Заббикс:

                            Click image for larger version  Name:	Снимок.PNG Views:	0 Size:	70.6 KB ID:	390903

                            Ресурс тонер-картриджа на самом деле 19000 страниц, но принтер определяет этот параметр как 5760. Это число он показывает в своем Веб-интерфейсе, это же число он выдает по СНМП. Остаточный ресурс (т.е. сколько страниц осталось) мы также получаем по СНМП от принтера, но во-первых этот параметр приблизительный, а во-вторых, как в данном примере, он еще и не верный. Но тем не менее начальство хочет знать объективные цифры, а денег на принт-сервер не дает. На скрине показана ситуация "принтер начинает ругаться": после того, как картридж отпечатал 5750 листов, принтер говорит, что сталось 10 страниц, моргает предупредительной лампочкой и просит заменить картридж, но при этом продолжает печатать, а реальный остаточный ресурс картриджа остается загадкой.

                            Originally posted by Kos
                            Ну тогда рассмотрите подробнее алгоритм, изложенный в моём предыдущем сообщении: мне кажется, что, несмотря на громоздкость описания, реализация не так уж сложна. И, вроде, это должно решать вашу задачу (то, что вам нужно, - это счётчик X).
                            Уже рассмотрел, и Ваш алгоритм действительно должен решить мою проблему, только мне не достаточно знаний Заббикса для его реализации. В частности где можно взять этот zabbix_sender.
                            Last edited by Simplyman; 29-11-2019, 11:12.

                            Comment

                            • Kos
                              Senior Member
                              Zabbix Certified SpecialistZabbix Certified Professional
                              • Aug 2015
                              • 3406

                              #15
                              Спасибо за ответ.

                              Т.е. параметр "остаточный ресурс тонер-картриджа" отдаётся "почти" правильно (с поправкой на то, что изначальный ресурс определяется неверно).
                              Интересно было понять, что этот остаточный ресурс выдаст, когда отпечатается ещё сотня-другая страниц: уйдёт в минус? останется на нуле?
                              (замечание в скобках: если реально уйдёт в минус, то в Zabbix-е тип этого параметра должен быть "Numeric (float)", т.к. в случае типа "Numeric (unsigned)" при получении отриуательного значения метрика перейдёт в режим "unsupported". Но в любом случае значение можно посмотреть, например, snmpwalk-ом)

                              В принципе, если этот счётчик просто становится отрицательным (без резких перепадов), то можно вместо всей этой машинерии сделать вычисляемый элемент данных, в котором к значению этого счётчика добавлять нужную поправку (19000 - 5760 = 13240). Но интуиция мне говорит, что после уменьшения до нуля далее, скорее всего, будет возвращаться какое-то неадекватное число (вроде 4294967295, которое дальше будет уменьшаться). Но если происходит именно так, то это тоже легко решается.

                              Утилита zabbix_sender (см. доку) - штатная вещь, используется для отсылки значений в элемент данных с типом "trapper". Обычно ставится вместе с агентом Zabbix; но, в зависимости от дистрибутива, может идти отдельным пакетом.

                              Comment

                              Working...