Ad Widget

Collapse

Ошибки при LLD

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Victor Sklyarov
    Senior Member
    • Apr 2016
    • 184

    #1

    Ошибки при LLD

    Скриптом обнаруживаю диски по неким критериям. Получаю [{"{#SYSTEM_DISK}":"C:","{#BACKUP_DISK}":"D:"}] Максимум что может прийти - массив из четырёх словарей, плюс к тем что отображены ещё {#BACKUP_REZ_DISK} и {#DB_DISK}, конечно только с разными буквами дисков.
    Создаваемые метрики
    vfs.dir.size[{#BACKUP_DISK}\Backup,.\DBF$]
    ​vfs.fs.size[{#BACKUP_DISK},free]
    vfs.fs.size[{#DB_DISK},free]
    vfs.fs.size[{#SYSTEM_DISK},free]
    При первом обнаружении метрики почему-то не создаются. При при следующем обнаружении создаются метрики 1,2,4, но возникает ошибка
    Cannot create item: item with the same key "vfs.fs.size[{#DB_DISK},free]" already exists. Но макрос {#DB_DISK} не был получен в обнаружении и метрики, где бы он применялся, не создано.
    Не могу понять почему возникает ошибка и почему при первом обнаружении метрики не создаются.​
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Originally posted by Victor Sklyarov
    При первом обнаружении метрики почему-то не создаются. При при следующем обнаружении создаются метрики 1,2,4, но возникает ошибка
    Cannot create item: item with the same key "vfs.fs.size[{#DB_DISK},free]" already exists. Но макрос {#DB_DISK} не был получен в обнаружении и метрики, где бы он применялся, не создано.
    Не могу понять почему возникает ошибка и почему при первом обнаружении метрики не создаются.​
    Про первое обнаружение не скажу - возможно, что вы просто слишком рано смотрите на результат. Сам процесс обнаружения занимает время, и с момента отработки правила до того момента, когда реально можно засылать данные в сгенерированные элементы данных обычно проходит полминуты - минута.

    Про второе обнаружение - похоже, что в отсутствие нужного макроса в исходных для LLD данных этот макрос в прототипе просто остаётся нераскрытым. В итоге сначала создаётся элемент данных с ключом "vfs.fs.size[{#DB_DISK},free]", а в последующие разы генерируется ругань, что такой элемент данных уже есть. Но это, как раз, можно обойти довольно просто: добавляем в правило LLD дополнительный override, у которого условие: "если нужный макрос НЕ существует", а действие - "соответствующий элемент данный не дискаверить".
    Last edited by Kos; 05-04-2023, 09:26. Reason: поправлена опечатка

    Comment

    • Victor Sklyarov
      Senior Member
      • Apr 2016
      • 184

      #3
      Создал замещение {#DB_DISK} НЕСуществует - Остановка обработки
      Ничего не изменилось.

      Comment

      • Victor Sklyarov
        Senior Member
        • Apr 2016
        • 184

        #4
        Не понятно, где элемент создаётся, если его нет в созданных элементах данных.

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #5
          Странное LLD rule. Не проще было как-то так: [{"{#DISK}":"C:","{#TYPE}":"SYSTEM"},{"{#DISK}":"D: ","{#TYPE}":"BACKUP"}]
          и оверрайды по типу диска при необходимости

          Comment


          • Victor Sklyarov
            Victor Sklyarov commented
            Editing a comment
            Что меняет по существу ваше предложение? Вместо одного макроса - два на каждый диск. Как я создам разные прототипы в зависимости от макроса TYPE? У меня ещё и триггеры разные. Если диск BACKUP, то кроме метрики размера свободного пространства диска создаётся ещё метрика размер BACKUP и анализируется наличие дискового пространства на 20% больше текущего размера BACKUP. А на диске DB просто пороговое значение. Но метрика размер свободного пространства диска DB создаётся только когда BACKUP не на диске DB.

          • Semiadmin
            Semiadmin commented
            Editing a comment
            Меняет саму работу LLD rule. В каждом случае получается полный набор LLD макросов со значениями, и не бывает ситуации, когда у макроса нет значения. А с прототипами триггеров просто - создается прототип для каждого типа диска со снятой галкой Discover, и через оверрайд эта галка ставится для требуемого типа диска.

          • Victor Sklyarov
            Victor Sklyarov commented
            Editing a comment
            В том то и беда, что я каждый раз получаю выборку из набора макросов от 2 до 4. Что значит у макроса нет значения? "{#DB_DISK}":"" Вот так? Или как в вашей нотации { "{#DISK}":"","{#TYPE}":"BACKUP"}
        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #6
          Originally posted by Victor Sklyarov
          Создал замещение {#DB_DISK} НЕСуществует - Остановка обработки
          Ничего не изменилось.
          А действие-то какое?
          "если нужный макрос НЕ существует", а действие - "соответствующий элемент данный не дискаверить".
          Это есть?

          Comment


          • Victor Sklyarov
            Victor Sklyarov commented
            Editing a comment
            Фильтр Макрос {#DB_DISK} - Не существует
            Операция Прототип эл данных РАВНО vfs.fs.size[{#DB_DISK},free] -Обнаружение=НЕТ
            Не работает. Возможно что-то не понимаю.
        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #7
          Операция Прототип эл данных РАВНО vfs.fs.size[{#DB_DISK},free] - Обнаружение=НЕТ
          Не работает. Возможно что-то не понимаю.​
          Здесь ошибка. К сожалению, в документации на этом не акцентировано внимание, но при проверке прототипов элементов данных (как и триггеров) сравниваются не их ключи или формулы, а имена. Т.е. в операции сравнения прототипа элемента данных надо указывать не его ключ, а имя.

          Comment


          • Victor Sklyarov
            Victor Sklyarov commented
            Editing a comment
            Спасибо. Проблема решена.
        Working...