Как узнать itemid zabbix
Перейти к содержимому

Как узнать itemid zabbix

  • автор:

item.get

Этот метод позволяет получать элементы данных в соответствии с заданными параметрами.

Этот метод доступен пользователям любого типа. Разрешения на вызов метода могут быть отозваны в настройках роли пользователя. Смотрите Роли пользователя для получения дополнительной информации.

Параметры

(объект) Параметры задают желаемый вывод.

Этот метод поддерживает следующие параметры.

Параметр Тип Описание
itemids строка/массив Возврат элементов данных только с заданными ID.
groupids строка/массив Возврат только тех элементов данных, которые принадлежат узлам сети с заданных групп узлов сети.
templateids строка/массив Возврат только тех элементов данных, которые принадлежат заданным шаблонам.
hostids строка/массив Возврат только тех элементов данных, которые принадлежат заданным узлам сети.
proxyids строка/массив Возврат только тех элементов данных, которые наблюдаются заданными прокси.
interfaceids строка/массив Возврат только тех элементов данных, которые используют заданные интерфейсы узлов сети.
graphids строка/массив Возврат только тех элементов данных, которые используются в заданных графиках.
triggerids строка/массив Возврат только тех элементов данных, которые используются в заданных триггерах.
applicationids строка/массив Возврат только тех элементов данных, которые входят в заданные группы элементов данных.
webitems флаг Включение в результат веб элементов данных.
inherited логический Если задано значение true , возвращать только те элементы данных, которые унаследованы из шаблона.
templated логический Если задано значение true , возвращать только те элементы данных, которые принадлежат шаблонам.
monitored логический Если задано значение true , возвращать только активированные элементы данных, которые принадлежат узлам сети под наблюдением.
group строка Возврат только тех элементов данных, которые принадлежат группе с заданным именем.
host строка Возврат только тех элементов данных, которые принадлежат узлу сети с заданным именем.
application строка Возврат только тех элементов данных, которые входят в группу элементов данных с заданным именем.
with_triggers логический Если задано значение true , возвращать только те элементы данных, которые используются в триггерах.
selectHosts запрос Возврат узла сети, которому принадлежит элемент данных, в виде массива в свойстве hosts .
selectInterfaces запрос Возврат интерфейса узла сети, который используется элементом данных, в виде массива в свойстве interfaces .
selectTriggers запрос Возврат триггеров, которые используют элемент данных, в свойстве triggers .

Этот параметр имеет следующие свойства:
type — (строка) Типы опций предобработки:
1 — Пользовательский множитель;
2 — Обрезка справа;
3 — Обрезка слева;
4 — Обрезка;
5 — Соответствие регулярному выражению;
6 — Двоичное в десятичное;
7 — Восьмеричное в десятичное;
8 — Шестнадцатеричное в десятичное;
9 — Простое изменение;
10 — Изменение в секунду.

Принимает массив, где ключи являются именами свойств и значения, которые являются либо одним значением, либо массивом сопоставляемых значений.

Возвращаемые значения

(целое число/массив) Возвращает либо:

  • · массив объектов;
  • · количество извлеченных объектов, если использовался параметр countOutput .

Примеры

Поиск элементов данных по ключу

Получить все элементы, используемые в узле сети с определенным ID, которые содержат слово «system.cpu» в ключе элемента данных, и отсортировать результаты по имени.

  "jsonrpc": "2.0", "method": "item.get", "params":  "output": "extend", "hostids": "10084", "with_triggers": true, "search":  "key_": "system.cpu" >, "sortfield": "name" >, "auth": "038e1d7b1735c6a5436ee9eae095879e", "id": 1 >
  "jsonrpc": "2.0", "result": [  "itemid": "42269", "type": "18", "snmp_oid": "", "hostid": "10084", "name": "CPU utilization", "key_": "system.cpu.util", "delay": "0", "history": "7d", "trends": "365d", "status": "0", "value_type": "0", "trapper_hosts": "", "units": "%", "logtimefmt": "", "templateid": "42267", "valuemapid": "0", "params": "", "ipmi_sensor": "", "authtype": "0", "username": "", "password": "", "publickey": "", "privatekey": "", "flags": "0", "interfaceid": "0", "description": "CPU utilization in %.", "inventory_link": "0", "evaltype": "0", "jmx_endpoint": "", "master_itemid": "42264", "timeout": "3s", "url": "", "query_fields": [], "posts": "", "status_codes": "200", "follow_redirects": "1", "post_type": "0", "http_proxy": "", "headers": [], "retrieve_mode": "0", "request_method": "0", "output_format": "0", "ssl_cert_file": "", "ssl_key_file": "", "ssl_key_password": "", "verify_peer": "0", "verify_host": "0", "allow_traps": "0", "uuid": "", "state": "0", "error": "", "parameters": [], "lastclock": "0", "lastns": "0", "lastvalue": "0", "prevvalue": "0" >,  "itemid": "42259", "type": "0", "snmp_oid": "", "hostid": "10084", "name": "Load average (15m avg)", "key_": "system.cpu.load[all,avg15]", "delay": "1m", "history": "7d", "trends": "365d", "status": "0", "value_type": "0", "trapper_hosts": "", "units": "", "logtimefmt": "", "templateid": "42219", "valuemapid": "0", "params": "", "ipmi_sensor": "", "authtype": "0", "username": "", "password": "", "publickey": "", "privatekey": "", "flags": "0", "interfaceid": "1", "description": "", "inventory_link": "0", "evaltype": "0", "jmx_endpoint": "", "master_itemid": "0", "timeout": "3s", "url": "", "query_fields": [], "posts": "", "status_codes": "200", "follow_redirects": "1", "post_type": "0", "http_proxy": "", "headers": [], "retrieve_mode": "0", "request_method": "0", "output_format": "0", "ssl_cert_file": "", "ssl_key_file": "", "ssl_key_password": "", "verify_peer": "0", "verify_host": "0", "allow_traps": "0", "uuid": "", "state": "0", "error": "", "parameters": [], "lastclock": "0", "lastns": "0", "lastvalue": "0", "prevvalue": "0" >,  "itemid": "42249", "type": "0", "snmp_oid": "", "hostid": "10084", "name": "Load average (1m avg)", "key_": "system.cpu.load[all,avg1]", "delay": "1m", "history": "7d", "trends": "365d", "status": "0", "value_type": "0", "trapper_hosts": "", "units": "", "logtimefmt": "", "templateid": "42209", "valuemapid": "0", "params": "", "ipmi_sensor": "", "authtype": "0", "username": "", "password": "", "publickey": "", "privatekey": "", "flags": "0", "interfaceid": "1", "description": "", "inventory_link": "0", "evaltype": "0", "jmx_endpoint": "", "master_itemid": "0", "timeout": "3s", "url": "", "query_fields": [], "posts": "", "status_codes": "200", "follow_redirects": "1", "post_type": "0", "http_proxy": "", "headers": [], "retrieve_mode": "0", "request_method": "0", "output_format": "0", "ssl_cert_file": "", "ssl_key_file": "", "ssl_key_password": "", "verify_peer": "0", "verify_host": "0", "allow_traps": "0", "uuid": "", "state": "0", "error": "", "parameters": [], "lastclock": "0", "lastns": "0", "lastvalue": "0", "prevvalue": "0" >,  "itemid": "42257", "type": "0", "snmp_oid": "", "hostid": "10084", "name": "Load average (5m avg)", "key_": "system.cpu.load[all,avg5]", "delay": "1m", "history": "7d", "trends": "365d", "status": "0", "value_type": "0", "trapper_hosts": "", "units": "", "logtimefmt": "", "templateid": "42217", "valuemapid": "0", "params": "", "ipmi_sensor": "", "authtype": "0", "username": "", "password": "", "publickey": "", "privatekey": "", "flags": "0", "interfaceid": "1", "description": "", "inventory_link": "0", "evaltype": "0", "jmx_endpoint": "", "master_itemid": "0", "timeout": "3s", "url": "", "query_fields": [], "posts": "", "status_codes": "200", "follow_redirects": "1", "post_type": "0", "http_proxy": "", "headers": [], "retrieve_mode": "0", "request_method": "0", "output_format": "0", "ssl_cert_file": "", "ssl_key_file": "", "ssl_key_password": "", "verify_peer": "0", "verify_host": "0", "allow_traps": "0", "uuid": "", "state": "0", "error": "", "parameters": [], "lastclock": "0", "lastns": "0", "lastvalue": "0", "prevvalue": "0" >,  "itemid": "42260", "type": "0", "snmp_oid": "", "hostid": "10084", "name": "Number of CPUs", "key_": "system.cpu.num", "delay": "1m", "history": "7d", "trends": "365d", "status": "0", "value_type": "3", "trapper_hosts": "", "units": "", "logtimefmt": "", "templateid": "42220", "valuemapid": "0", "params": "", "ipmi_sensor": "", "authtype": "0", "username": "", "password": "", "publickey": "", "privatekey": "", "flags": "0", "interfaceid": "1", "description": "", "inventory_link": "0", "evaltype": "0", "jmx_endpoint": "", "master_itemid": "0", "timeout": "3s", "url": "", "query_fields": [], "posts": "", "status_codes": "200", "follow_redirects": "1", "post_type": "0", "http_proxy": "", "headers": [], "retrieve_mode": "0", "request_method": "0", "output_format": "0", "ssl_cert_file": "", "ssl_key_file": "", "ssl_key_password": "", "verify_peer": "0", "verify_host": "0", "allow_traps": "0", "uuid": "", "state": "0", "error": "", "parameters": [], "lastclock": "0", "lastns": "0", "lastvalue": "0", "prevvalue": "0" > ], "id": 1 >
Поиск зависимых элементов данных по ключу

Получить все зависимые элементы данных для узла сети с идентификатором «10116», в ключе которых есть слово «apache».

  "jsonrpc": "2.0", "method": "item.get", "params":  "output": "extend", "hostids": "10116", "search":  "key_": "apache" >, "filter":  "type": 18 > >, "auth": "038e1d7b1735c6a5436ee9eae095879e", "id": 1 >
  "jsonrpc": "2.0", "result": [  "itemid": "25550", "type": "18", "snmp_oid": "", "hostid": "10116", "name": "Days", "key_": "apache.status.uptime.days", "delay": "0", "history": "90d", "trends": "365d", "status": "0", "value_type": "3", "trapper_hosts": "", "units": "", "logtimefmt": "", "templateid": "0", "valuemapid": "0", "params": "", "ipmi_sensor": "", "authtype": "0", "username": "", "password": "", "publickey": "", "privatekey": "", "flags": "0", "interfaceid": "0", "description": "", "inventory_link": "0", "evaltype": "0", "jmx_endpoint": "", "master_itemid": "25545", "timeout": "3s", "url": "", "query_fields": [], "posts": "", "status_codes": "200", "follow_redirects": "1", "post_type": "0", "http_proxy": "", "headers": [], "retrieve_mode": "0", "request_method": "0", "output_format": "0", "ssl_cert_file": "", "ssl_key_file": "", "ssl_key_password": "", "verify_peer": "0", "verify_host": "0", "allow_traps": "0", "uuid": "", "state": "0", "error": "", "parameters": [], "lastclock": "0", "lastns": "0", "lastvalue": "0", "prevvalue": "0" >,  "itemid": "25555", "type": "18", "snmp_oid": "", "hostid": "10116", "name": "Hours", "key_": "apache.status.uptime.hours", "delay": "0", "history": "90d", "trends": "365d", "status": "0", "value_type": "3", "trapper_hosts": "", "units": "", "logtimefmt": "", "templateid": "0", "valuemapid": "0", "params": "", "ipmi_sensor": "", "authtype": "0", "username": "", "password": "", "publickey": "", "privatekey": "", "flags": "0", "interfaceid": "0", "description": "", "inventory_link": "0", "evaltype": "0", "jmx_endpoint": "", "master_itemid": "25545", "timeout": "3s", "url": "", "query_fields": [], "posts": "", "status_codes": "200", "follow_redirects": "1", "post_type": "0", "http_proxy": "", "headers": [], "retrieve_mode": "0", "request_method": "0", "output_format": "0", "ssl_cert_file": "", "ssl_key_file": "", "ssl_key_password": "", "verify_peer": "0", "verify_host": "0", "allow_traps": "0", "uuid": "", "state": "0", "error": "", "parameters": [], "lastclock": "0", "lastns": "0", "lastvalue": "0", "prevvalue": "0" > ], "id": 1 >
Поиск элемента данных HTTP-агента

Найти элемент данных HTTP-агента с типом XML тела POST запроса для определенного идентификатора узла сети.

  "jsonrpc": "2.0", "method": "item.get", "params":  "hostids": "10255", "filter":  "type": 19, "post_type": 3 > >, "id": 3, "auth": "d678e0b85688ce578ff061bd29a20d3b" >
  "jsonrpc": "2.0", "result": [  "itemid": "28252", "type": "19", "snmp_oid": "", "hostid": "10255", "name": "template item", "key_": "ti", "delay": "30s", "history": "90d", "trends": "365d", "status": "0", "value_type": "3", "trapper_hosts": "", "units": "", "logtimefmt": "", "templateid": "0", "valuemapid": "0", "params": "", "ipmi_sensor": "", "authtype": "0", "username": "", "password": "", "publickey": "", "privatekey": "", "flags": "0", "interfaceid": "0", "description": "", "inventory_link": "0", "evaltype": "0", "jmx_endpoint": "", "master_itemid": "0", "timeout": "3s", "url": "localhost", "query_fields": [  "mode": "xml" > ], "posts": " \r\n ]]>\r\n ", "status_codes": "200", "follow_redirects": "0", "post_type": "3", "http_proxy": "", "headers": [], "retrieve_mode": "1", "request_method": "3", "output_format": "0", "ssl_cert_file": "", "ssl_key_file": "", "ssl_key_password": "", "verify_peer": "0", "verify_host": "0", "allow_traps": "0", "uuid": "", "state": "0", "error": "", "parameters": [], "lastclock": "0", "lastns": "0", "lastvalue": "", "prevvalue": "" > ], "id": 3 >
Получение элементов данных с правилами предварительной обработки

Получить все элементы данных и правила их предварительной обработки для определенного идентификатора узла сети.

  "jsonrpc": "2.0", "method": "item.get", "params":  "output": ["itemid", "name", "key_"], "selectPreprocessing": "extend", "hostids": "10254" >, "auth": "038e1d7b1735c6a5436ee9eae095879e", "id": 1 >
  "jsonrpc": "2.0", "result":  "itemid": "23865", "name": "HTTP agent example JSON", "key_": "json", "preprocessing": [  "type": "12", "params": "$.random", "error_handler": "1", "error_handler_params": "" > ] >, "id": 1 >

Смотрите также

Исходный код

CItem::get() в ui/include/classes/api/services/CItem.php.

19. API

Zabbix API позволяет программно извлекать и изменять конфигурацию Zabbix, также обеспечивает доступ к данным истории. API широко используется для:

  • Создания новых приложений для работы с Zabbix;
  • Интеграции Zabbix со сторонним программным обеспечением;
  • Автоматизации рутинных задач.

Zabbix API является API на основе веб и поставляется как часть веб-интерфейса. Он использует протокол JSON-RPC 2.0, что имеет два значения:

  • API состоит из набора отдельных методов;
  • Запросы и ответы между клиентами и API закодированы с использованием формата JSON.

Более подробную информацию о протоколе и JSON можно найти на странице спецификации JSON-RPC 2.0 и домашней страницы JSON.

Структура

API состоит из ряда методов, которые условно сгруппированы в отдельные API. Каждый метод выполняет одну отдельную задачу. Например, метод host.create относится к API узла сети и используется для создания новых узлов сети. Исторически сложилось так, что API иногда назывался как «классы».

Большинство API содержит по крайней мере четыре метода: get , create , update и delete для получения, создания, обновления и удаления данных соответственно, однако, некоторые API могут предоставлять совершенно другой набор методов.

Выполнение запросов

Как только вы установите веб-интерфейс, вы можете использовать удаленные HTTP запросы для вызова API. Чтобы это сделать, вам необходимо отправлять HTTP POST запросы к файлу api_jsonrpc.php , который расположен в папке с веб-интерфейсом. Например, если ваш Zabbix веб-интерфейс установлен в http://company.com/zabbix, HTTP запрос для вызова метода apiinfo.version может выглядеть примерно так:

POST http://company.com/zabbix/api_jsonrpc.php HTTP/1.1 Content-Type: application/json-rpc >

Запрос должен иметь заголовок Content-Type , который задан одним из следующих значений: application/json-rpc , application/json или application/jsonrequest .

Вы можете использовать любой клиент HTTP или утилиту тестирования JSON-RPC для выполнения API запросов вручную, но для разработки приложений мы предлагаем вам воспользоваться одной из библиотек, которые поддерживает сообщество.

Пример рабочего процесса

В следующем разделе вы ознакомитесь по некоторыми примерами использования более детально.

Аутентификация

Прежде чем вы сможете запросить любые данные с Zabbix вам необходимо выполнить вход и получить ключ аутентификации. Это можно сделать, используя метод user.login. Давайте предположим, что вы хотите выполнить вход с использованием стандартного пользователя Zabbix Администратора. Тогда ваш JSON запрос может выглядеть следующим образом:

   "jsonrpc": "2.0", "method": "user.login", "params":  "user": "Admin", "password": "zabbix" >, "id": 1, "auth": null >

Давайте познакомимся ближе с запросом объекта. Он имеет следующие свойства:

  • jsonrpc — версия протокола JSON-RPC, которая используется API; Zabbix API реализует JSON-RPC версии 2.0;
  • method — метод API, который вызывается;
  • params — параметры, которые передаются API методом;
  • id — произвольный идентификатор запроса;
  • auth — ключ аутентификации пользователя; та как у нас его еще не имеется, укажем его равным null .

Если вы указали учетные данные правильно, полученный от API ответ будет содержать ключ аутентификации пользователя:

   "jsonrpc": "2.0", "result": "0424bd59b807674191e7d77572075f33", "id": 1 >

В свою очередь, объект ответа содержит следующие свойства:

  • jsonrpc — снова, версия протокола JSON-RPC;
  • result — данные полученные от метода;
  • id — идентификатор соответствующего запроса.
Authorization methods
By «Authorization» header

All API requests require an authentication or an API token. You can provide the credentials by using the «Authorization» request header:

 curl --request POST \ --url 'https://company.com/zabbix/ui/api_jsonrpc.php' \ --header 'Authorization: Bearer 0424bd59b807674191e7d77572075f33'
By «auth» property

An API request can be authorized by the «auth» property.

Note that the «auth» property is deprecated. It will be removed in the future releases.

 curl --request POST \ --url 'https://company.com/zabbix/ui/api_jsonrpc.php' \ --header 'Content-Type: application/json-rpc' \ --data ',"auth":"0424bd59b807674191e7d77572075f33","id":1>'
By Zabbix cookie

A «zbx_session» cookie is used to authorize an API request from Zabbix UI performed using JavaScript (from a module or a custom widget).

Получение узлов сети

Теперь у нас есть валидный ключ аутентификации пользователя, которой можно использовать для доступа к данным в Zabbix. Например, давайте воспользуемся методом host.get, чтобы получить ID, имена узлов сети и интерфейсы всех настроенных узлов сети:

   "jsonrpc": "2.0", "method": "host.get", "params":  "output": [ "hostid", "host" ], "selectInterfaces": [ "interfaceid", "ip" ] >, "id": 2, "auth": "0424bd59b807674191e7d77572075f33" >

Обратите внимание, что свойство auth теперь задано равным ключу аутентификации, который мы получили вызвав user.login .

Объект ответа будет содержать затребованные данные о этих узлах сети:

   "jsonrpc": "2.0", "result": [   "hostid": "10084", "host": "Zabbix server", "interfaces": [   "interfaceid": "1", "ip": "127.0.0.1" > ] > ], "id": 2 >

В целях повышения производительности мы рекомендуем всегда перечислять свойства объектов, которые вы хотите получить и избегать получения всего что есть.

Создание нового элемента данных

Давайте создадим новый элемент данных у «Zabbix server», используя данные, которые мы получили из предыдущего запроса host.get . Это можно сделать воспользовавшись методом item.create:

   "jsonrpc": "2.0", "method": "item.create", "params":  "name": "Free disk space on $1", "key_": "vfs.fs.size[/home/joe/,free]", "hostid": "10084", "type": 0, "value_type": 3, "interfaceid": "1", "delay": 30 >, "auth": "0424bd59b807674191e7d77572075f33", "id": 3 >

Успешный ответ будет содержать ID только что созданного элемента данных, который может быть ссылкой на этот элемент данных при следующих запросах:

   "jsonrpc": "2.0", "result":  "itemids": [ "24759" ] >, "id": 3 >

Метод item.create , также как и другие методы создания, может также принимать массивы объектов и создавать несколько элементов данных за один запрос API.

Создание нескольких триггеров

Таким образом если методы создания принимают массивы, мы может добавить несколько триггеров вот так:

   "jsonrpc": "2.0", "method": "trigger.create", "params": [   "description": "Processor load is too high on ", "expression": ">5", >,   "description": "Too many processes on ", "expression": ">300", > ], "auth": "0424bd59b807674191e7d77572075f33", "id": 4 >

Успешный ответ будет содержать ID только что созданных триггеров:

   "jsonrpc": "2.0", "result":  "triggerids": [ "17369", "17370" ] >, "id": 4 >
Обновление элемента данных

Активируем элемент данных, то есть, укажем ему состояние «0»:

   "jsonrpc": "2.0", "method": "item.update", "params":  "itemid": "10092", "status": 0 >, "auth": "0424bd59b807674191e7d77572075f33", "id": 5 >

Успешный ответ будет содержать ID обновленного элемента данных:

   "jsonrpc": "2.0", "result":  "itemids": [ "10092" ] >, "id": 5 >

Метод item.update , а так же и другие методы обновления могут также принимать массивы объектов и обновлять несколько элементов данных за один API запрос.

Обновление нескольких триггеров

Активируем несколько триггеров, то есть, укажем им состояние 0:

   "jsonrpc": "2.0", "method": "trigger.update", "params": [   "triggerid": "13938", "status": 0 >,   "triggerid": "13939", "status": 0 > ], "auth": "0424bd59b807674191e7d77572075f33", "id": 6 >

Успешный ответ будет содержать ID обновленных триггеров:

   "jsonrpc": "2.0", "result":  "triggerids": [ "13938", "13939" ] >, "id": 6 >

Это предпочтительный метод обновления. Некоторые API методы, такие как host.massupdate , позволяют писать более простой код, однако не рекомендуется использовать эти методы, так как они будут удалены из будущих выпусков.

Обработка ошибок

До этого момента всё что мы пробовали работало прекрасно. Но что случится, если мы попробуем выполнить некорректный запрос к API? Давайте попробуем создать еще один узел сети при помощи вызова host.create, но не станем указывать обязательный параметр groups .

   "jsonrpc": "2.0", "method": "host.create", "params":  "host": "Linux server", "interfaces": [   "type": 1, "main": 1, "useip": 1, "ip": "192.168.3.1", "dns": "", "port": "10050" > ] >, "id": 7, "auth": "0424bd59b807674191e7d77572075f33" >

Тогда ответ будет содержать сообщение об ошибке:

   "jsonrpc": "2.0", "error":  "code": -32602, "message": "Invalid params.", "data": "No groups for host \"Linux server\"." >, "id": 7 >

Если произошла ошибка, то вместо свойства result , объект ответа будет содержать свойство error со следующими данными:

  • code — код ошибки;
  • message — короткое описание ошибки;
  • data — более детально сообщение об ошибке.

Ошибки могут возникать в разных ситуациях, таких как, некорректные вводные значения, превышение времени ожидания сессии или попытка доступа к несуществующим объектам. Ваше приложение должно иметь возможность корректно обработать такие виды ошибок.

Версии API

Чтобы упростить версионность API, начиная с Zabbix 2.0.4, версия API совпадает с версией самим Zabbix. Вы можете использовать метод apiinfo.version, чтобы узнать версию API, с которой вы работаете. Знание версии может пригодиться для корректировки вашего приложения, чтобы использовать возможности конкретной версии API.

Мы гарантируем обратную совместимость в пределах одной мажорной версии. При выполнении несовместимых изменений между мажорными выпусками, мы обычно оставляем старые функции, как устаревшие в следующим выпуске, и удаляем их только в выпуске, следующим за этим. Иногда мы можем удалить функции между мажорными выпусками без предоставления какой-либо обратной совместимости. Очень важно, никогда не полагаться на какие-либо устаревшие функции и мигрировать на новые альтернативы как только будет возможно.

Вы можете следить за всеми изменениями, внесенными в API на странице журнала изменений API.

Дополнительная литература

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

Zabbix. SQL или API запрос : Вывести все хосты с определенным значением ITEM (Zabbix 2.4)

Подскажите как вывести все хосты у которых значение определенного ITEM больше 50. Ситуация ситуация такая , есть некоторый template, который привязан к 1000 хостов. В этом темплейте есть item. Мне необходимо получить список хостов у которых последнее значение этого item больше 50. Попробовал сделать через API, как посоветовали на форуме Zabbix . Через API получил template ID, и item ID. А вот что делать дальше с этим не понятно. Вот то что у меня получилось:

#DES 3200 CPU get script echo "D-Link DES 3200 CPU util Get Script" zbxUser='' zbxPass='' zbxAPI='http://localhost/zabbix/api_jsonrpc.php' DATA=`date +%y%m%d%H%M%S` # Get auth token from zabbix curlOutput=`curl -sS -i -X POST -H 'Content-Type: application/json-rpc' -d ", \"jsonrpc\":\"2.0\", \"method\": \"user.login\", \"id\": 0>" $zbxAPI` authToken=`echo $curlOutput | sed -n 's/.*result":"\(.*\)",.*/\1/p'` # Get all monitored and problem state triggers curlData=">,\"output\":[\"template.id\"], \"auth\":\"$authToken\", \"id\": 1>" curlOutput=`curl -sS -i -X POST -H 'Content-Type: application/json-rpc' -d "$curlData" $zbxAPI` echo "$curlOutput" > $DATA.log TEMPLATE=`cat $DATA.log| sed "s/,/,\n/g;s/>/\n/g" | grep "templateid" | sed s/[^0-9]//g` echo "Template ID : $TEMPLATE" rm $DATA.log #Get Item ID curlData2=",\"searchWildcardsEnabled\":1,\"selectHosts\":[\"host\"]>,\"output\":[\"lastvalue\"], \"auth\":\"$authToken\", \"id\": 2>" curlOutput2=`curl -sS -i -X POST -H 'Content-Type: application/json-rpc' -d "$curlData2" $zbxAPI` echo "$curlOutput2" > $DATA_2.log #echo $curlOutput2 ITEMID=`cat $DATA_2.log| sed "s/,/,\n/g;s/>/\n/g" | grep itemid | sed s/[^0-9]//g` echo "Item ID : $ITEMID" rm $DATA_2.log #Get host id curlData3=", \"output\":[\"hostid\"],\"filter\":, \"auth\":\"$authToken\", \"id\": 3>" curlOutput3=`curl -sS -i -X POST -H 'Content-Type: application/json-rpc' -d "$curlData3" $zbxAPI` echo "$curlOutput3" > $DATA_3.log echo $curlOutput3 | sed "s/,/,\n/g;s/>/\n/g" | grep hostid | grep -v "proxy_hostid" 

Поулчить максимальное значение Item в Zabbix

Добрый день Скажите, пожалуйста, гуру Zabbix. Как можно получить максимальное значение item’а за сутки? Это надо для того что бы взять это значение и записать в БД и будет отдельная аналитика по максимальным значениям в разрезе годов.

P.S. Думаю что можно использовать API Zabbix, авторизоваться получилось, а вытянуть максимальное значение конкретного итема не знаю как 🙁

darksmoke
27.06.19 13:55:48 MSK

Лучше всего через тренды (максимум/минимум/avg сохраняется раз в час):

Если вдруг тренды по каким-то причинам неприменимы:

2. Прямой запрос в базу к таблице history — наверное, выйдет оптимальнее

3. Делаете calculated item с flexible interval, который раз в сутки считает значение за прошлые сутки, и сохраняет в history, далее см. пункт 1 или 2 — вытаскиваете нужное вам значение за нужные сутки

AlexAT ★
( 02.07.19 11:47:58 MSK )
Последнее исправление: AlexAT 02.07.19 11:48:12 MSK (всего исправлений: 1)

4 августа 2019 г.
Ответ на: комментарий от AlexAT 02.07.19 11:47:58 MSK

Подскажите, где косячу. Возвращает пустоту 🙁 Смотрю в забиксе через веб морду, данные есть.

< "jsonrpc": "2.0", "method": "trend.get", "params": < "output": [ "itemid", "clock", "num", "value_min", "value_avg", "value_max" ], "itemids": ["728673"], "limit": "1", "time_from": ["1564790401"], "time_till": ["1564876799"] >, "id": 1, "auth": "48faa7e4d1abd72cdeeb2e17eb1dd072" > 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *