Ad Widget

Collapse

Добавление макроса в обнаружения в темпл

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ru_admin
    Junior Member
    • Jan 2014
    • 5

    #1

    Добавление макроса в обнаружения в темпл

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

    Отсюда вопрос, не очень понимаю как в low level discovery добавить грубо говоря макрос на "массив данных", который для каждого хоста будет содержить свои буквы дисков, чтобы через скрипт получать процент свободного места на них. И чтоб соотвественно создались элементы данных автоматически для каждого хоста.
  • AllertGen
    Member
    • Dec 2013
    • 30

    #2
    Нужно сделать ещё один скрипт, который будет возвращать массив из существующих дисков в формате JSON. Обратный вывод должен выглядить таким образом:

    Code:
    {
     "data":[
    
     { "{#DISCK}":"Disck1" },
     { "{#DISCK}":"Disck2" },
     ...................
     { "{#DISCK}":"DisckN" }
    
     ]
    }
    Обратите внимание на последнюю строчку. Там нет знака ";" в конце строки. Иначе сервер не захочет принимать эти данные.

    Далее в итемах используйте переменную {#DISCK} как индекс.

    Comment

    • ru_admin
      Junior Member
      • Jan 2014
      • 5

      #3
      AllertGen,

      Большое спасибо за ответ.

      Однако не совсем понятно как будет выглядить ключ элемента данных в таком случае ?

      Например, есть скрипт disk.sh, с параметрами 1 - {HOST.CONN} и 2 - {Disk_letter}, которые ему надо передавать, чтобы получить процент свободного места. И второй скрипт disk_letter.sh, который возвращает указанную ниже таблицу в формате JSON

      В таком случае кей для внешней проверки должен быть: disk.sh [{HOST.CONN}, {#DISCK}] . А как прикрутить второй скрипт disk_letter.sh ?

      Comment

      • AllertGen
        Member
        • Dec 2013
        • 30

        #4
        В настройках агента, создать ключ с[*] в конце. Например (дам ключ скрипту: disk_letters): UserParameter=disk_letters[*],[путь к скрипту, если необходимо - программа и путь к скрипту]
        Вот пример ключа, который я создавал когда-то для себя, что бы получать список файлов по определённой маске:
        UserParameter=filelist[*],powershell D:\GateringFiles.ps1 $1 $2

        А потом, в самом zabbix'е, когда будете создавать lld шаблон, укажите ключём "filelist[]", что для клиента будет означать: запускать указанную Вами строчку без передачи параметров.
        Но честно, т.к. мне никогда не нужно было запускать собственные скрипты без параметров, я не пробовал вариант без фигурных скобок. Возможно, что можно обойтись без них.

        И не забудьте поменять параметр UnsafeUserParameters=1, т.к. без этого скрипт по определению места на диске может не отработать, т.к. без этого параметра блокируются спецсимволы (коими могут оказаться символы :\ в названии диска)

        Comment

        • ru_admin
          Junior Member
          • Jan 2014
          • 5

          #5
          AllertGen,

          Спасибо за еще один развернутый ответ. Но в первом посте я писал, что это agentless проверки, т.е. агент не используется. А данные берутся скриптом с заббикс сервера по WMI с виндовс серверов. Как быть в этом случае ?

          Comment

          • AllertGen
            Member
            • Dec 2013
            • 30

            #6
            agentless проверки тоже разные могут быть. Но принцип обычно тот же: передача параметров через []. Вот только условия внутри этих символов меняется в зависимости от способа вызова локального скрипта..

            Comment

            • ru_admin
              Junior Member
              • Jan 2014
              • 5

              #7
              Originally posted by AllertGen
              agentless проверки тоже разные могут быть. Но принцип обычно тот же: передача параметров через []. Вот только условия внутри этих символов меняется в зависимости от способа вызова локального скрипта..
              В смысле в ключе уже будет скрипт, который считает процент свободного места, в виде disk.sh[{HOST.CONN}, Буква диска] , получается вместо второго параметра можно будет подставить второй скрипт без параметров ? Например, disk.sh [{HOST.CONN}, disk_letter.sh[]] ?

              Comment

              Working...