Ad Widget

Collapse

Отображение неполучения данных (zb trapper)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    Отображение неполучения данных (zb trapper)

    Пишу скрипт, который на выходе получает множество значений, которые нужно будет отправлять через zabbix_sender в Zabbix. На сервере итемы будут с типом Zabbix trapper.

    Заметил неприятную особенность: обработчик не работал сутки, потом заработал — в графиках я не увидел никаких обрывов.

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

    Вообще, кто как с этим борется?

    #2
    Пока никак. Связано это скорее всего с тем что для данных типа TRAPPER поле interval скрытое, а следовательно в class.cchart.php нельзя рассчитать пропадали данные или нет. Так есть такой код:
    Code:
                                    $diff = abs($data['clock'][$i] - $data['clock'][$j]);
                                    $cell = ($this->to_time - $this->from_time) / $this->sizeX;
                                    $delay = $this->items[$item]['delay'];
    
                                    if ($cell > $delay) {
                                            $draw = (boolean) ($diff < (ZBX_GRAPH_MAX_SKIP_CELL * $cell));
                                    }
                                    else {
                                            $draw = (boolean) ($diff < (ZBX_GRAPH_MAX_SKIP_DELAY * $delay));
                                    }
    
                                    if ($this->items[$item]['type'] == ITEM_TYPE_TRAPPER) {
                                            $draw = true;
                                    }
    Я бы отсюда начал рыть, но для начала подумал бы на тему "раздисейбливания" поля interval для данных типа trapper и попробывал бы убрать условие "== ITEM_TYPE_TRAPPER" из class.cchart.php

    Comment


      #3
      Originally posted by dynax60 View Post
      Вообще, кто как с этим борется?
      передавать timestamp и по нему смотреть diff с предыдущим?

      у себя (мониторинг тупой железки по http) сделал так:
      сервер вызывает внешний скрипт (прописан в темплейте для железок) который возвращает состояние 0/1 (получилось/не получилось) и заливает через zabbix_sender состояние железки. А по нему прикручен триггер - данных нет.

      Comment


        #4
        Originally posted by jimson View Post
        для данных типа trapper поле interval
        просто бесполезное ибо траппер (читай приемник) не в курсе, с какой переодичностью в него будут подавать эти данные.

        Comment


          #5
          Originally posted by lynxchaus View Post
          просто бесполезное ибо траппер (читай приемник) не в курсе, с какой переодичностью в него будут подавать эти данные.
          Речь была не про триггеры, а про графики. Читайте внимательнее.

          Comment


            #6
            Нет никакой разницы - графики, триггеры. Чтоб был разрыв в данных - итем должен быть с заранее известным интервалом. У траппера такого интервала нет. откуда взяться разрывам?

            Comment


              #7
              Originally posted by LynxChaus View Post
              Нет никакой разницы - графики, триггеры. Чтоб был разрыв в данных - итем должен быть с заранее известным интервалом. У траппера такого интервала нет. откуда взяться разрывам?
              Вы ручник забыли снять.

              Объясняю еще раз, на примерах.
              1) у любого item есть интервал, это поле delay в таблице items, но для элементов типа trapper ИНТЕРФЕЙС не позволяет это поле редактировать и всегда пишет в качестве delay нолик:

              Code:
              mysql> select hostid, key_, delay from items where key_ = 'hspVsatInboundEsNo' and hostid = 10413;
              +--------+--------------------+-------+
              | hostid | key_               | delay |
              +--------+--------------------+-------+
              |  10413 | hspVsatInboundEsNo |     0 |
              +--------+--------------------+-------+
              1 row in set (0.00 sec)
              Исправить это можно правкой "вьюшки" интерфейса, кому надо справятся с этой задачей минут за 10 максимум.

              Исправим для теста это поле вручную:
              Code:
              mysql> update items set delay = 60 where key_ = 'hspVsatInboundEsNo' and hostid = 10413;
              Query OK, 1 row affected (0.00 sec)
              Rows matched: 1  Changed: 1  Warnings: 0
              
              mysql> select hostid, key_, delay from items where key_ = 'hspVsatInboundEsNo' and hostid = 10413;
              +--------+--------------------+-------+
              | hostid | key_               | delay |
              +--------+--------------------+-------+
              |  10413 | hspVsatInboundEsNo |    60 |
              +--------+--------------------+-------+
              1 row in set (0.00 sec)
              2) Теперь открываем код в котором рисуются графики - include/classes/class.cchart.php и делаем там поиск по слову "trapper" и, внезапно, там всего одно вхождение. Логику понять не сложно. Мы не станем удалять из кода это условие, а просто добавим в него проверку "$delay == 0":
              Code:
              if ($this->items[$item]['type'] == ITEM_TYPE_TRAPPER && $delay == 0) {
                      $draw = true;
              }
              Собственно графики, что было до правки class.cchart.php и что стало после.
              Attached Files
              Last edited by Jimson; 05-12-2013, 11:38.

              Comment

              Announcement

              Collapse
              No announcement yet.
              Working...
              X