Ad Widget

Collapse

Использование полей inventory

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • 5kr1p7
    Junior Member
    • Apr 2013
    • 13

    #1

    Использование полей inventory

    У хостов автоматически заполняются поля Inventory. В INVENTORY.OOB.IP подставляется внешний адрес устройства. Как я могу использовать значение этого параметра для проверки доступности узла (по адресу из этого поля)?

    Пробовал создавать item: icmpping["{INVENTORY.OOB.IP}"] (не отрабатывает) и использовать значение для передачи во внешнюю проверку pingext.sh["{INVENTORY.OOB.IP}"] (не подставляется значение; так и передает pingext.sh {INVENTORY.OOB.IP}).
  • gescheit
    Senior Member
    • Jul 2007
    • 156

    #2
    pingext.sh[{INVENTORY.OOB.IP1}]

    Comment

    • 5kr1p7
      Junior Member
      • Apr 2013
      • 13

      #3
      Originally posted by gescheit
      pingext.sh[{inventory.oob.ip1}]
      Не помогло. Передается просто текстом {inventory.oob.ip1} и проверка не проходит.

      Comment

      • gescheit
        Senior Member
        • Jul 2007
        • 156

        #4
        https://www.zabbix.com/documentation...ed_by_location. К сожелению, макрос {INVENTORY.OOB.IP} можно использовать только в нотификации.
        Как вариант, можно по API дергать этот макрос из самой проверки.

        Comment

        • 5kr1p7
          Junior Member
          • Apr 2013
          • 13

          #5
          Originally posted by gescheit
          Как вариант, можно по API дергать этот макрос из самой проверки.
          Спасибо за подсказку. Сделал через api на php. Выложу, вдруг кому пригодится:

          getextip.php:

          PHP Code:
          <?php
          require 'ZabbixApiAbstract.class.php';
          require 
          'ZabbixApi.class.php';

          $host_get $_SERVER['argv'][1];

          try {
              
          $api = new ZabbixApi('http://x.x.x.x/zabbix/api_jsonrpc.php''user''pass');

              
          $host $api->hostGet(array('output' => 'extend''filter' => array('host' => $host_get), 'selectInventory' => true'limit' => 1));

              echo 
          $host[0]->inventory->oob_ip;

          } catch(
          Exception $e) {
              echo 
          $e->getMessage();
          }
          ?>
          checkhost.sh:
          Code:
          #!/bin/sh
          
          IP=`/usr/bin/php /usr/local/share/zabbix/externalscripts/apiget.php $1`
          
          if [ $IP ]
              then
                  ping -c3 -W2 -q ${IP} 2>&1 > /dev/null
          
                  RET=$?
                  if [ ${RET} -eq 0 ]
                      then
                          echo "TRUE"
                          exit 0
                  fi
          fi
              echo "FALSE"
          fi
          ну и вызов внешней проверки из заббикса:
          checkhost.sh["{HOST.HOST}"]
          Numeric (unsigned), Boolean
          Last edited by 5kr1p7; 09-01-2014, 09:14. Reason: search -> filter & shell script check

          Comment

          • gescheit
            Senior Member
            • Jul 2007
            • 156

            #6
            Лучше использовать filter вместо search и указать limit 1.
            Last edited by gescheit; 10-04-2013, 00:06.

            Comment

            • 5kr1p7
              Junior Member
              • Apr 2013
              • 13

              #7
              Originally posted by gescheit
              Лучше использовать filter вместо search и указать limit 1.
              спасибо. поправил + немного изменил шелл-скрипт (в некоторых случаях нет значения в oob_ip).

              Comment

              Working...