This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ru:manual:config:items:loadablemodules [2016/03/10 16:52] Heilig [5.1 Обзор] typo |
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 должен создавать новый ответвленный процесс каждый раз для сбора пользовательских проверок, что не очень хорошо сказывается на производительности. Обычно это не самая большая проблема, но тем не менее это может быть серьезной проблемой для мониторинга встроенных систем, имеющих большое количество наблюдаемых параметров или тяжелых скриптов со сложной логикой или длительным временем запуска. | ||
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 |