ru:manual:config:items:loadablemodules

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ru:manual:config:items:loadablemodules [2015/12/22 20:51]
dotneft created
ru:manual:config:items:loadablemodules [2018/07/08 04:48] (current)
dotneft
Line 5: Line 5:
 Подгружаемые модули предлагают производительную опцию для расширения функциональности Zabbix. Подгружаемые модули предлагают производительную опцию для расширения функциональности Zabbix.
  
-Уже есть возможности для раширения функциональности Zabbix ​с помощью:+Уже ​имеются возможности для расширения функциональности Zabbix ​при ​помощи:
   * [[userparameters|пользовательских параметров]] (метрики агента)   * [[userparameters|пользовательских параметров]] (метрики агента)
   * [[ru:​manual:​config:​items:​itemtypes:​external|внешние проверки]] (мониторинг без агента)   * [[ru:​manual:​config:​items:​itemtypes:​external|внешние проверки]] (мониторинг без агента)
-  * ''​system.run[]'' ​Zabbix ​[[ru:​manual:​config:​items:​itemtypes:​zabbix_agent|элемент данных агента]].+  * ''​system.run[]''​ [[ru:​manual:​config:​items:​itemtypes:​zabbix_agent|элемент данных ​Zabbix ​агента]].
  
 Они работают очень хорошо,​ но имеют главный недостаток,​ называемый форком (fork()). Zabbix должен создавать новый ответвленный процесс каждый раз для сбора пользовательских проверок,​ что не очень хорошо сказывается на производительности. Обычно это не самая большая проблема,​ но тем не менее это может быть серьезной проблемой для мониторинга встроенных систем,​ имеющих большое количество наблюдаемых параметров или тяжелых скриптов со сложной логикой или длительным временем запуска. Они работают очень хорошо,​ но имеют главный недостаток,​ называемый форком (fork()). Zabbix должен создавать новый ответвленный процесс каждый раз для сбора пользовательских проверок,​ что не очень хорошо сказывается на производительности. Обычно это не самая большая проблема,​ но тем не менее это может быть серьезной проблемой для мониторинга встроенных систем,​ имеющих большое количество наблюдаемых параметров или тяжелых скриптов со сложной логикой или длительным временем запуска.
  
-Zabbix 2.2 привносит поддержку подгружаемых модулей для расширения Zabbix агента,​ сервера и прокси без ущерба производительности.+Поддержка подгружаемых модулей ​предлагает пути ​расширения Zabbix агента,​ сервера и прокси без ущерба производительности.
  
 Подгружаемый модуль - в своей основе разделяемая библиотека используемая Zabbix демоном и загружаемая при старте демона. Библиотека должна содержать определенные функции такие, чтобы Zabbix процесс мог определить ​ что файл на самом деле модуль и он может загрузить его и работать с ним. ​   Подгружаемый модуль - в своей основе разделяемая библиотека используемая Zabbix демоном и загружаемая при старте демона. Библиотека должна содержать определенные функции такие, чтобы Zabbix процесс мог определить ​ что файл на самом деле модуль и он может загрузить его и работать с ним. ​  
Line 18: Line 18:
 Подгружаемые модули имеют много преимуществ. Отличная производительность и возможность внедрения в любую логику что очень важно, но возможно наиболее важное преимущество - возможность развития,​ использования и распространения Zabbix модулей. Это поспособствует безпроблемному обслуживанию и поможет вносить новую функциональность легче и независимо от кода ядра Zabbix. Подгружаемые модули имеют много преимуществ. Отличная производительность и возможность внедрения в любую логику что очень важно, но возможно наиболее важное преимущество - возможность развития,​ использования и распространения Zabbix модулей. Это поспособствует безпроблемному обслуживанию и поможет вносить новую функциональность легче и независимо от кода ядра Zabbix.
  
-=== - API модуль ===+Лицензирование и распространение модулей в бинарной форме регламентируется GPL лицензией (модули линкуются с Zabbix во время выполнения и используют заголовки Zabbix; в настоящее время весь код Zabbix лицензируется под GPL лицензией). Бинарная совместимость не гарантируется Zabbix'​ом.  
 + 
 +Постоянство API модулей гарантируется в пределах одного цикла Zabbix LTS (Долгосрочная поддержка) [[http://​www.zabbix.com/​life_cycle_and_release_policy|выпуска]]. Постоянство Zabbix API не гаратируется (технически имеется возможность вызова внутренних функций Zabbix из модуля,​ но гарантии,​ что такие модули будут работать нет). 
 + 
 +=== - API модулей ===
  
 Для того чтобы разделяемая библиотека обрабатывалась как Zabbix модуль,​ она должна реализовывать и экспортировать несколько функций. На данный момент имеется пять функций в API модулей Zabbix, две из которых обязательны,​ а остальные три - опциональны. Для того чтобы разделяемая библиотека обрабатывалась как Zabbix модуль,​ она должна реализовывать и экспортировать несколько функций. На данный момент имеется пять функций в API модулей Zabbix, две из которых обязательны,​ а остальные три - опциональны.
Line 38: Line 42:
  
 Эта функция должна выполнять необходимую инициализацию для модуля (если таковые имеются). В случае успеха,​ функция должна вернуть ZBX_MODULE_OK. В противном случае,​ она должна вернуть ZBX_MODULE_FAIL. Эта функция должна выполнять необходимую инициализацию для модуля (если таковые имеются). В случае успеха,​ функция должна вернуть ZBX_MODULE_OK. В противном случае,​ она должна вернуть ZBX_MODULE_FAIL.
 +
 +Эти две функции являются обязательными в том смысле,​ что если одна из этих функций отсутствует в API модуле или любая из них возвращает неприемлемый результат при вызове из любого модуля в списке загружаемых модулей,​ тогда Zabbix не запустится.
  
 == - Опциональный интерфейс == == - Опциональный интерфейс ==
Line 47: Line 53:
 </​code>​ </​code>​
  
-Эта функция должна возвращать список элементов данных,​ поддерживаемых модулем. Каждый элемент данных,​ указанный в структуре ZBX_METRIC, смотрите раздел ниже для подробностей. Список завершается с помощью структуры ZBX_METRIC с полем "​key"​ равным NULL.+Эта функция должна возвращать список элементов данных,​ поддерживаемых модулем. Zabbix читает список поддерживаемых элементов данных только один раз при запуске. Каждый элемент данных,​ указанный в структуре ZBX_METRIC, смотрите раздел ниже для подробностей. Список завершается с помощью структуры ZBX_METRIC с полем "​key"​ равным NULL. Если эта функция отсутствует в API модуля,​ Zabbix выгрузит модуль и продолжит загрузку других модулей.
  
 <code c> <code c>
Line 138: Line 144:
 === - Пустой модуль === === - Пустой модуль ===
  
-Zabbix ​2.4 включает простой модуль,​ написанный на языке С. Модуль находиться в src/​modules/​dummy:​+Zabbix включает простой модуль,​ написанный на языке С. Модуль находиться в src/​modules/​dummy:​
  
   [email protected]:​~trunk/​src/​modules/​dummy$ ls -l   [email protected]:​~trunk/​src/​modules/​dummy$ ls -l