Ad Widget

Collapse

Api помогите сформировать запрос.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Connected
    Member
    • Mar 2015
    • 39

    #1

    Api помогите сформировать запрос.

    Добрый день,
    Помогите построить запрос к API Zabbix .
    Цель вывести все устройства привязанные к определенному шаблону , у которых определенный item больше 50.

    Суть , есть шаблон для коммутатора, в нем есть item отвечающий за нагрузку на CPU. К этому шаблону подключены N устройств.
    Необходимо вывести устройства у которых загрузка CPU выше 50.

    необходимо сделать именно через API, а не через триггер. Так как авария на этих устройствах не нужна.

    Спасибо.

    PS: API работает , простые запросы обрабатывает , например вывести хосты в группе и т.п.
    Last edited by Connected; 20-06-2016, 15:38.
  • DRVTiny
    Senior Member
    • Sep 2011
    • 162

    #2
    Сначала определите templateid шаблона:
    template.get, {
    "search"=>{"name"=>"Имя шаблона"},
    "output"=>["templateid"]
    }
    (На выходе получите массив из одного элемента, нужно в этом элементе взять templateid и поместить в $TEMPLATE_ID)

    Затем все итемы с соотв. именами, принадлежащие данному шаблону:
    item.get, {
    "templateids"=>$TEMPLATE_ID,
    "monitored"=>1,
    "search"=>{"name"=>"*Имя метрики*"},
    "searchWildcardsEnabled"=>1,
    "selectHosts"=>["host"],
    "output"=>["lastvalue"]
    }
    Получите массив объектов, у которых в свойстве hosts - массив хостов (всегда из одного элемента), а lastvalue - последнее значение метрики.

    Фильтруйте массив по lastvalue, выводите значение свойства host того самого единственного элемента из массива в свойстве hosts.

    Comment

    • Connected
      Member
      • Mar 2015
      • 39

      #3
      Originally posted by DRVTiny
      Сначала определите templateid шаблона:
      template.get, {
      "search"=>{"name"=>"Имя шаблона"},
      "output"=>["templateid"]
      }
      (На выходе получите массив из одного элемента, нужно в этом элементе взять templateid и поместить в $TEMPLATE_ID)

      Затем все итемы с соотв. именами, принадлежащие данному шаблону:
      item.get, {
      "templateids"=>$TEMPLATE_ID,
      "monitored"=>1,
      "search"=>{"name"=>"*Имя метрики*"},
      "searchWildcardsEnabled"=>1,
      "selectHosts"=>["host"],
      "output"=>["lastvalue"]
      }
      Получите массив объектов, у которых в свойстве hosts - массив хостов (всегда из одного элемента), а lastvalue - последнее значение метрики.

      Фильтруйте массив по lastvalue, выводите значение свойства host того самого единственного элемента из массива в свойстве hosts.
      Спасибо за отклик.
      Получилось вывести template id , item id.
      Так же вывел host id у которых присутствует item id.
      Вывод host id произвожу таким образом :
      Code:
      curlDataITEMID1="{\"jsonrpc\": \"2.0\", \"method\": \"host.get\",\"params\": {\"monitored_hosts\":1}, \"output\":[\"hostid\"],\"filter\":{\"itemids\":\"$ITEMID1\"}, \"auth\":\"$authToken\", \"id\": 1}"
      curlOutputITEMID1=`curl -sS -i -X POST -H 'Content-Type: application/json-rpc' -d "$curlDataITEMID1" $zbxAPI`
      echo "$curlOutputITEMID1" > curlOutputITEMID1.log
      Можно ли применить фильтр к этому запросу таким образом чтобы вывести host id в которых последнее значение item больше 50?

      Comment

      Working...