Перейти к содержимому

Как узнать itemid zabbix

  • автор:

Использование Zabbix API. Когда не хватает стандартной статистики

Возникла задача получить некоторую статистику из Zabbix, делюсь опытом получения данных из базы Zabbix через API средствами Python.

Куски кода будут для Python 2.7

Для работы с zabbix-api есть готовая библиотека py-zabbix, документация по ней доступна тут, но примеров там не много. Официальное руководство по Zabbix API.

Итак, после стандартной установки:

Пробуем подключиться к серверу Zabbix:

Формат ответа от сервера — JSON:

Скрипт печатает содержимое поля result:

Теперь можно приниматься за решение интересующей задачи. Задача — получить среднее значение Disk Idle Time со всех виртуальных машин за неделю (Пн-Пт) в рабочее время (с 10:00 до 19:00) за определенную неделю. Я не хочу заострять внимание на актуальности этих параметров, а просто поделиться опытом работы с Zabbix API на примере этой конкретной задачи.

Итак, виртуальные машины в Zabbix лежат в отдельной группе, для начала получим список доступных групп с помощью метода hostgroup.get:

Параметром output можно определить, какие поля вернет API:

Затем можно получить список хостов в конкретной группе с помощью метода host.get:

Параметр groupids определяет идентификатор группы:

Для получения списка items по определенному хосту используется метод item.get:

Как видно из ответа, выбранный хост имеет 2 диска, нужно вывести минимальное значение из нескольких. Для доступа к данным по items используется метод history.get. Следующий код не претендует на оптимальность, я только начал осваивать Python, но в целом с поставленной задачей скрипт справился.

Для метода history.get нужно определить следующие параметры:

  • history — тип возвращаемого значения
  • itemids — id интересующего item
  • time_from — начало временного интервала
  • time_till — конец временного интервала

В результате получаем разделенные запятой имя хоста, кол-во винтов и min idle time:

Zabbix API Introduction and Examples

This lesson was from a previous version of my course, which I’ve now made this video available to view for free.

The Zabbix Server also has an application programming interface (API). This allows you to programmatically configure and retrieve data from the Zabbix Server.

The reason for using the API is that you either want to create your own custom interface for your Zabbix Server, e.g., a new web interface, IOS or Android app, or integrate into another monitoring system. The Grafana tutorials from earlier are an example of using the Zabbix API to read the data and create custom dashboards.

In this lesson, we will connect to our API first using the Linux cURL commands, the simple API testing tool, and then we try and example using Python.

From the examples, you will have enough background information to know how to retrieve, add, delete and modify data in the Zabbix server.

When making calls to the API you need to supply a user authentication token. The first step is to get one.

Get Authentication Token

method : user.login

The authentication token is in the result value above, and you will need it for all other calls to the API.

With the token, we can now make another call to retrieve a list of all the hosts and see some info about them.

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 «10084», которые имеют в ключе слово «system» и сортировка результата по имени.

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

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

Поиск элемента данных HTTP агента

Поиск элемента данных HTTP агента с типом post тела XML у конкретного id узла сети.

item.get

The method allows to retrieve items according to the given parameters.

This method is available to users of any type. Permissions to call the method can be revoked in user role settings. See User roles for more information.

Parameters

(object) Parameters defining the desired output.

The method supports the following parameters.

Parameter Type Description
itemids string/array Return only items with the given IDs.
groupids string/array Return only items that belong to the hosts from the given groups.
templateids string/array Return only items that belong to the given templates.
hostids string/array Return only items that belong to the given hosts.
proxyids string/array Return only items that are monitored by the given proxies.
interfaceids string/array Return only items that use the given host interfaces.
graphids string/array Return only items that are used in the given graphs.
triggerids string/array Return only items that are used in the given triggers.
webitems flag Include web items in the result.
inherited boolean If set to true return only items inherited from a template.
templated boolean If set to true return only items that belong to templates.
monitored boolean If set to true return only enabled items that belong to monitored hosts.
group string Return only items that belong to a group with the given name.
host string Return only items that belong to a host with the given name.
evaltype integer Rules for tag searching.

It has the following properties:
type — (string) The preprocessing option type:
1 — Custom multiplier;
2 — Right trim;
3 — Left trim;
4 — Trim;
5 — Regular expression matching;
6 — Boolean to decimal;
7 — Octal to decimal;
8 — Hexadecimal to decimal;
9 — Simple change;
10 — Change per second;
11 — XML XPath;
12 — JSONPath;
13 — In range;
14 — Matches regular expression;
15 — Does not match regular expression;
16 — Check for error in JSON;
17 — Check for error in XML;
18 — Check for error using regular expression;
19 — Discard unchanged;
20 — Discard unchanged with heartbeat;
21 — JavaScript;
22 — Prometheus pattern;
23 — Prometheus to JSON;
24 — CSV to JSON;
25 — Replace;
26 — Check for not supported value;
27 — XML to JSON.

params — (string) Additional parameters used by preprocessing option. Multiple parameters are separated by LF (\n)character.
error_handler — (string) Action type used in case of preprocessing step failure:
0 — Error message is set by Zabbix server;
1 — Discard value;
2 — Set custom value;
3 — Set custom error message.

Accepts an array, where the keys are property names, and the values are either a single value or an array of values to match against.

Return values

(integer/array) Returns either:

  • an array of objects;
  • the count of retrieved objects, if the countOutput parameter has been used.

Examples

Finding items by key

Retrieve all items used in triggers for specific host ID that have word «system.cpu» in the item key and sort results by name.

Finding dependent items by key

Retrieve all dependent items from host with ID «10116» that have the word «apache» in the key.

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

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