Changes between Version 12 and Version 13 of ZabbixAgent


Ignore:
Timestamp:
Apr 17, 2026, 5:13:30 PM (3 hours ago)
Author:
alx
Comment:

Добавлено описание нового формата ключей элементов данных.

Legend:

Unmodified
Added
Removed
Modified
  • ZabbixAgent

    v12 v13  
    11== Введение ==
    22
    3 [http://www.zabbix.com/ Zabbix] - популярная система мониторинга параметров объектов сети. Эта статья содержит информацию об использовании агента Zabbix, встроенного в плату SW-01, для мониторинга аппаратуры.
     3[http://www.zabbix.com/ Zabbix] - популярная система мониторинга параметров сетевого оборудования. Эта статья содержит информацию об использовании агента Zabbix, встроенного в плату SW-01, для мониторинга аппаратуры.
    44
    55'''Агент Zabbix''' - это программа, выполняющаяся на наблюдаемом объекте и выполняющая непосредственно сбор и передачу на сервер наблюдаемых параметров. Zabbix поддерживает два типа агента - пассивный агент и активный агент.
     
    77'''Пассивный агент''' не отправляет данные по собственной инициативе, вместо этого он ожидает запросов от сервера. Когда Zabbix серверу требуется получить данные с объекта (произвести опрос), на котором работает пассивный агент, сервер устанавливает соединение с агентом и запрашивает у него нужный ему параметр, передавая ключ параметра. Агент выполняет чтение запрошенного параметра из аппаратуры и возвращает серверу прочитанную величину. Опрос данных сервером производится с заданной периодичностью.
    88
    9 '''Активный агент''', в отличие от пассивного, не принимает входящих соединений от сервера, вместо этого он сам по своей инициативе соединяется с сервером. Преимуществом такого подхода является то, что активный агент может инициативно передать серверу новое значение наблюдаемого параметра сразу после изменения его значения (например при появлении или пропадании аварийного состояния), не дожидаясь наступления запланированного времени очередного опроса. Это позволяет серверу не пропускать возникающие в наблюдаемом оборудовании события и быстрее на них реагировать.
     9'''Активный агент''', в отличие от пассивного, не принимает входящих соединений от сервера, вместо этого он сам по своей инициативе соединяется с сервером. Преимуществом такого подхода является то, что активный агент может инициативно передать серверу новое значение наблюдаемого параметра сразу после изменения его значения (например при появлении или пропадании аварийного состояния), не дожидаясь наступления запланированного времени очередного опроса. Это позволяет серверу не пропускать возникающие в наблюдаемом оборудовании события и быстрее на них реагировать. Также активный агент позволяет автоматически регистрировать новые устройства на сервере и начинать их мониторинг без каких-либо действий с сервером.
    1010
    1111== Принцип работы Zabbix агента ==
     
    1919== Конфигурация сервера ==
    2020
    21 Добавьте сетевой узел в сервер Zabbix в соответствии с руководством Zabbix. Запомните установленное Вами имя узла сети - оно понадобится для конфигурации агента. Добавьте узлу сети необходимые элементы данных с типом "Zabbix агент (активный)" в соответствии с руководством Zabbix. Ключ элемента данных установить в соответствии с описанием ниже.
    22 
    23 Также можно воспользоваться готовыми [[attachment:zbx_template_mc04-dsl-3u-agent.zip|шаблонами]]. Перед импортом шаблонов на сервере необходимо добавить преобразование значений "MC04 board status" как показано на иллюстрации:
    24 
    25 [[Image(wiki:ZabbixAgent:mapping-1.jpg)]]
     21Добавьте сетевой узел в сервер Zabbix в соответствии с руководством Zabbix. Добавьте узлу сети необходимые элементы данных с типом "Zabbix агент (активный)" в соответствии с руководством Zabbix. Ключ элемента данных установить в соответствии с описанием ниже. Также можно воспользоваться готовым [[attachment:zbx_template_mc04-dsl-3u-agent.zip|шаблоном]].
    2622
    2723=== Ключи элементов данных ===
    2824
    29 Каждый элемент данных (наблюдаемый сервером параметр) идентифицируется ключом. Агент платы SW-01 требует, чтобы запрашиваемые ключи соответствовали конкретному формату. Ключ должен начинаться со строки "MC04.". Далее следует элемент, определяющий тип опрашиваемого объекта: для элементов данных, относящихся к конкретному типу платы, вторым элементом ключа должно быть название платы, для элементов данных, относящихся к любой плате блока, вторым элементом ключа должно быть слово '''board''', для элементов данных, относящихся к системе в целом, используется слово '''sys''' ''(ранее, до ревизии sw-r1423, второй элемент ключей игнорировался агентом)''. После второго элемента ключа должна быть точка.
     25Каждый элемент данных (наблюдаемый сервером параметр, матрика) идентифицируется ключом. Агент платы SW-01 требует, чтобы запрашиваемые ключи соответствовали конкретному формату. Агент Zabbix поддерживает два формата ключей:
    3026
    31 Третьим элементом ключа является ключевое слово, определяющее функцию ключа. Поддерживаемые агентом функции ключей и их описание приводятся в таблице ниже. Формат оставшейся части ключа определяется его функцией.
     27 `MCv2.<функция>[<параметры>]`
     28
     29 `MC04.<тип объекта>.<функция>.<дополнительные элементы>[<параметры>]`
     30
     31В настоящее время рекомендуется использовать формат, начинающийся с `MCv2`. Формат, начинающийся с `MC04`, использовался в более ранних версиях агента (и с ранними версиями Zabbix, в которых отсутствовала развитая пред-обработка значений и вложенное низкоуровневое обнаружение) и продолжает поддерживаться для совместимости с уже эксплуатируемыми системами мониторинга. Далее следует описание ключей формата `MCv2`, ключи формата `MC04` описаны в конце раздела.
     32
     33Ключи формата `MCv2` после префикса `MCv2.`, служащего для идентификации формата ключа, содержат ключевое слово, обозначающее выполняемую функцию, за которым следуют заключенные в квадратные скобки параметры. Параметры разделяются запятыми и могут быть позиционными или именными. Именной параметр отличается от позиционного тем, что имеет формат `<имя параметра>=<значение>` и опознается агентом по наличию символа `=`. Позиционный параметр не содержит символа `=`, а его семантика определяется позицией параметра в списке. Обратите внимание, что именные параметры не учитываются при анализе позиционных параметров и могут находиться в любом месте. Например следующие ключи эквивалентны:
     34
     35- `MCv2.function[первый, второй, третий, foo=bar, moo=var]`;
     36- `MCv2.function[foo=bar, moo=var, первый, второй, третий]`;
     37- `MCv2.function[первый, foo=bar, второй, moo=var, третий]`.
     38
     39Также обратите внимание, что параметры между собой могут разделяться любым количеством пробелов, однако в именных параметрах пробелы перед и после символа `=` недопустимы.
     40
     41Кличи формата `MCv2` могут иметь следующие функции:
     42
     43- getvar;
     44- substr;
     45- boardlist.
     46
     47==== Функция `getvar` ====
     48
     49Функция `getvar` возвращает переменную платы блока MC04-DSL-3U.
     50
     51//__Позиционные параметры__://
     52
     53Функция требует наличия в ключе следующих позиционных параметров: `[<slot>, <oid>]`, где `<slot>` - номер слота блока, в котором установлена плата, `<oid>` - OID переменной платы. Например ключ `MCv2.getvar[3, .2.0]` вернет значение переменной `.2.0` платы в слоте 3 (текстовое наименование платы).
     54
     55//__Именные параметры__//
     56
     57 `name=<наименование платы>`:: Значение переменной возвращается только при условии совпадения имени платы с указанным значением параметра. В процессе эксплуатации аппаратуры состав и расположение установленных в блоке плат может меняться. Возможна ситуация, когда в слот, где ранее была установлена и мониторилась плата одного типа, будет установлена плата другого типа, при этом новая плата может иметь переменную с тем же OID, что и ранее установленная, но значение этой переменной может иметь совершенно иную семантику. Такая ситуация приведет к тому, что система мониторинга будет получать и неверно интерпретировать значение переменных новой платы. Параметр `name` решает эту проблему: в случае, если наименование платы не совпадает с указанным в параметре `name` ключа, агент Zabbix вернет ошибку "not found".
     58
     59 `format=<string|hex|array>`:: Параметр позволяет устранить неоднозначность формата возвращаемого значения. Так как у плат блока MC04-DSL-3U отсутствует специальный тип для двоичных данных, для этих целей используется тип "строка". Как результат, при получении значения типа строка возникает неоднозначность - интерпретировать ли значение как текстовую строку или как двоичные данные (массив байт). По умолчанию (без указания параметра `format`) агент Zabbix принимает решение, анализируя полученное значение (подобно тому как это происходит в распространенных агентах SNMP): если в полученном значении присутствуют "непечатные" символы (байты с кодами меньше 32), то значение передается серверу Zabbix в формате HEX: как последовательность пар шестнадцатеричных цифр разделенных пробелами (например `23 fc 2b 02 00 e3 56`). В противном случае (если "непечатные" символы не обнаружены) значение передается серверу как текстовая строка (string). Указание параметра `format` позволяет однозначно задать формат, в котором агент будет передавать серверу значение переменной. Дополнительно у описанным выше форматам можно указать формат `array` - в этом случае значение переменной будет передано как JSON массив десятичных значений байтов (например `[35, 215, 41, 2, 0, 198, 4]`). Формат "array" удобен для пред-обработки значения сервером Zabbix с помощью JSONPath или !JavaScript. Обратите внимание, что при использовании параметра `format=string` текстовая строка может оказаться невалидной (например если в значении содержатся нулевые байты), в результате чего невалидным может оказаться JSON объект, передаваемый агентом серверу, что приведет к потере значения не только данного элемента, но и других, передаваемых агентом в том же сообщении.
     60
     61==== Функция `substr` ====
     62
     63//__Позиционные параметры__://
     64
     65Функция требует наличия в ключе следующих позиционных параметров: `[<slot>, <oid>, <start>, <count>]`. Функция `substr` полностью аналогична функции `getvar`, только в случае если запрошенная переменная имеет тип "строка", агент возвращает подстроку, начинающуюся с позиции `<start>` и содержащую `<count>` байт. Например ключ `MCv2.substr[3, .7.6.5.0, 9, 5, format=array]` вернет значения 5 байт начиная с позиции 9 значения переменной .7.6.5.0 платы в слоте 3 в формате JSON массива (предполагается что переменная имеет тип "строка"). Эта функция полезна в случаях, когда состояние множества элементов платы (например портов или каналов) содержится в одной переменной, возвращающей один большой массив байт.
     66
     67//__Именные параметры__//
     68
     69Все именные параметры аналогичны функции `getvar`.
     70
     71==== Функция `boardlist` ====
     72
     73Функция служит для низкоуровневого обнаружения (LLD) плат в блоке и возвращает список плат блока в формате JSON объекта. Функция не имеет параметров.
     74
     75
     76==== Описание ключей формата `MC04`====
    3277
    3378||='''Формат'''=||='''Пример'''=||='''Поддерживается начиная с ревизии'''=||='''Описание'''=||
     
    88133[[Image(wiki:ZabbixAgent:agent-1.jpg)]]
    89134
    90 В появившемся диалоге конфигурации Zabbix-сервера необходимо ввести имя создаваемой записи (произвольная строка, которая не должна совпадать с уже имеющимися в таблице систем мониторинга), адрес сервера (имя хоста или IP адрес, на котором работает сервер Zabbix), имя блока (имя узла сети, присвоенное данному блоку на сервере Zabbix). После ввода перечисленных параметров нажмите "OK", сервер будет добавлен в таблицу систем мониторинга (в неактивном состоянии).
     135В появившемся диалоге конфигурации Zabbix-сервера необходимо ввести имя создаваемой записи (произвольная строка, которая не должна совпадать с уже имеющимися в таблице систем мониторинга), адрес сервера (имя хоста или IP адрес, на котором работает сервер Zabbix), имя блока (имя узла сети, присвоенное данному блоку на сервере Zabbix). Затем в строке "Подключение" выбрать желаемый вариант шифрования и (при необходимости) ввести нужный ключ. После ввода перечисленных параметров нажмите "OK", сервер будет добавлен в таблицу систем мониторинга (в неактивном состоянии).
    91136
    92137[[Image(wiki:ZabbixAgent:agent-2.jpg)]]