Ad Widget

Collapse

Нехватка фичи в lld

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • v.goncharov
    Member
    • Mar 2013
    • 58

    #1

    Нехватка фичи в lld

    На заббиксе накрутил множество скриптов, генерирующих json-данные для lld. Так вот, проблема возникла. Мониторю определенные соединения, соединений около 1000, определяются они нормально, но!

    И вот тут появляется главная, на данный момент, проблема (не считая отсутствия комплексных экранов для LLD):

    Примерно ТОП-50 соединений мониторить для меня ОЧЕНЬ важно, а остальные - просто необходимо. Некоторые служебные параметры вообще мониторить не нужно. А вот важность триггеров для всех едина

    Не хватает каких-либо расширенных фильтров в элементах данных LLD. Одного поля для regexp маловато.

    Хотелось бы делить на группы. Допустим, по дефолту - все добавляются в одну группу, остальные - я мог бы фильтрами по параметрам разделить на группы. Например, перечислить {#ID} обнаруживаемых данных для первой группы, для второй и так далее, и далее пользоваться ими как {#GROUP1},{#GROUP2} и т.д.

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

    Это может быть полезно при мониторинге крупных роутеров, при автообнаружении интерфейсов - 5-6 жизненно-важных, 10-15 довольно важных и остальные. В данном случае я хотел бы видеть такой функионал:
    {#GROUP1}: (тут идет перечисление интерфейсов первой группы)
    {#GROUP2}: ...

    Group_default: сюда сваливается все остальное, что не попало под шаблоны.

    В таком случае и генерировать комплексные экраны для отдельных групп.
  • Jimson
    Senior Member
    • Jan 2008
    • 1327

    #2
    С тригерами можно выкрутится по тому же принципу что я сделал по Counter32/64. Фактически у тебя будет шаблон с несколькими одинаковыми LLD, но в правилах будет взаимоисключающий фильтр и набор тригеров разный. Фильтровать, например, по признаку в дескрипшене, а макрос для фильтрации сделать отдельный в скрипте.

    Собственно можно и набор данных сделать отличающимся для групп, например, в моем примере LLD по интерфейсам правила три, два LLD идентичные, но одно собирает данные из ifTable, а второе из ifXTable, а третье правило фильтрует по признаку "физического" интерфейса и определяет данные и графики для всяких там Discard/Errors.

    Если же обсуждать именно "идею" доработки, то на мой взгляд предлагаемое решение слишком не очевидное. Такой функционал правильнее было бы реализовать через последовательное расширение шаблона с LLD + возможноть включить в один шаблон несколько копий другого шаблона. Вышло бы что то такое

    Base_LLD <-- VIP_LLD+VIP_Screens <------- Router_Template
    ^--------Misc_LLD+Misc_Screens <--------|

    Возможно и щас можно сделать такое "наследование" если поотключать в коде проверки на уникальность "Application group".

    Comment

    • v.goncharov
      Member
      • Mar 2013
      • 58

      #3
      Подниму свой же пост, вдруг кому пригодится.

      Сделал все очень простым способом через внешнюю проверку.

      Допустим, JSON наш выглядит так:
      {"data":[
      {"{#ITEM}":"somevalue", {#ITEMNAME}":"somename" },
      {"{#ITEM}":"somevalue", {#ITEMNAME}":"somename" },
      {"{#ITEM}":"somevalue", {#ITEMNAME}":"somename" },
      {"{#ITEM}":"somevalue", {#ITEMNAME}":"somename" },
      {"{#ITEM}":"somevalue", {#ITEMNAME}":"somename" },
      ]
      }
      etc..
      Допустим, из определившихся элементов последние два для нас менее важные. Тогда:

      Мы можем сделать прямо в одном JSON-массиве обнаружения:
      {"data":[
      { "{#ITEMGROUP1}":"somevalue",{#NAMEGROUP1}":"somena me" },
      { "{#ITEMGROUP1}":"somevalue",{#NAMEGROUP1}":"somena me" },
      { "{#ITEMGROUP1}":"somevalue",{#NAMEGROUP1}":"somena me" },
      { "{#ITEMGROUP2}":"somevalue",{#NAMEGROUP2}":"somena me" },
      { "{#ITEMGROUP2}":"somevalue",{#NAMEGROUP2}":"somena me" },
      ]
      }
      etc...

      и создать прототипы итемов для group1 и group2 прямо в одном обнаружении:
      checkitem[{#ITEMGROUP1}] -> для него "красный" триггер
      checkitem[{#ITEMGROUP2}] -> для него "желтый" триггер

      И, что удивительно, это работает. Правда, не знаю, это баг или фича. Если фича - то она нигде не документирована.

      Comment

      Working...