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 [2018/07/08 04:48] dotneft |
ru:manual:config:items:loadablemodules [2019/11/27 04:00] (current) dotneft |
||
---|---|---|---|
Line 31: | Line 31: | ||
Единственная обязательная функции - **zbx_module_api_version()**: | Единственная обязательная функции - **zbx_module_api_version()**: | ||
- | <file c> | + | <code c> |
int zbx_module_api_version(void); | int zbx_module_api_version(void); | ||
- | </file> | + | </code> |
Эта функция должна возвращать API версию реализованную в модуле и, чтобы модуль загрузился, версия должна совпадать с версией API модулей поддерживаемой Zabbix. Версией API модулей поддерживаемой Zabbix является ZBX_MODULE_API_VERSION. Таким образом эта функция должна возвращать эту константу. Старая константа ZBX_MODULE_API_VERSION_ONE, которая ранее использовалась для этих целей, теперь определена равной ZBX_MODULE_API_VERSION для сохранения совместимости исходного кода, но её использование не рекомендуется. | Эта функция должна возвращать API версию реализованную в модуле и, чтобы модуль загрузился, версия должна совпадать с версией API модулей поддерживаемой Zabbix. Версией API модулей поддерживаемой Zabbix является ZBX_MODULE_API_VERSION. Таким образом эта функция должна возвращать эту константу. Старая константа ZBX_MODULE_API_VERSION_ONE, которая ранее использовалась для этих целей, теперь определена равной ZBX_MODULE_API_VERSION для сохранения совместимости исходного кода, но её использование не рекомендуется. | ||
Line 41: | Line 41: | ||
Опциональными функциями являются следующие функции - **zbx_module_init()**, **zbx_module_item_list()**, **zbx_module_item_timeout()**, **zbx_module_history_write_cbs()** и **zbx_module_uninit()**: | Опциональными функциями являются следующие функции - **zbx_module_init()**, **zbx_module_item_list()**, **zbx_module_item_timeout()**, **zbx_module_history_write_cbs()** и **zbx_module_uninit()**: | ||
- | <file c> | + | <code c> |
int zbx_module_init(void); | int zbx_module_init(void); | ||
- | </file> | + | </code> |
Эта функция должна выполнять необходимую инициализацию для модуля (если таковые имеются). В случае успеха, функция должна вернуть ZBX_MODULE_OK. В противном случае, она должна вернуть ZBX_MODULE_FAIL. В последнем случае Zabbix не запустится. | Эта функция должна выполнять необходимую инициализацию для модуля (если таковые имеются). В случае успеха, функция должна вернуть ZBX_MODULE_OK. В противном случае, она должна вернуть ZBX_MODULE_FAIL. В последнем случае Zabbix не запустится. | ||
- | <file c> | + | <code c> |
ZBX_METRIC *zbx_module_item_list(void); | ZBX_METRIC *zbx_module_item_list(void); | ||
- | </file> | + | </code> |
Эта функция должна возвращать список элементов данных, поддерживаемых модулем. Каждый элемент данных указывается в структуре ZBX_METRIC, смотрите раздел ниже для подробностей. Список завершается при помощи структуры ZBX_METRIC с полем "key" равным NULL. | Эта функция должна возвращать список элементов данных, поддерживаемых модулем. Каждый элемент данных указывается в структуре ZBX_METRIC, смотрите раздел ниже для подробностей. Список завершается при помощи структуры ZBX_METRIC с полем "key" равным NULL. | ||
- | <file c> | + | <code c> |
void zbx_module_item_timeout(int timeout); | void zbx_module_item_timeout(int timeout); | ||
- | </file> | + | </code> |
Если модуль экспортирует **zbx_module_item_list()**, тогда эта функция используется Zabbix, чтобы задать опцию времени ожидания в файле конфигурации Zabbix, которой проверки элементов данных реализованных в модуле должны подчиняться. Здесь, параметр "время ожидания" задается в секундах. | Если модуль экспортирует **zbx_module_item_list()**, тогда эта функция используется Zabbix, чтобы задать опцию времени ожидания в файле конфигурации Zabbix, которой проверки элементов данных реализованных в модуле должны подчиняться. Здесь, параметр "время ожидания" задается в секундах. | ||
- | <file c> | + | <code c> |
ZBX_HISTORY_WRITE_CBS zbx_module_history_write_cbs(void); | ZBX_HISTORY_WRITE_CBS zbx_module_history_write_cbs(void); | ||
- | </file> | + | </code> |
Эта функция должна возвращать функции обратного вызова (callback), которые будут использоваться Zabbix сервером или прокси для экспорта истории различных типов данных. Функции обратного вызова представляют собой поля ZBX_HISTORY_WRITE_CBS структуры, поля могут быть NULL, если модуль не заинтересован в истории некоторого типа. | Эта функция должна возвращать функции обратного вызова (callback), которые будут использоваться Zabbix сервером или прокси для экспорта истории различных типов данных. Функции обратного вызова представляют собой поля ZBX_HISTORY_WRITE_CBS структуры, поля могут быть NULL, если модуль не заинтересован в истории некоторого типа. | ||
- | <file c> | + | <code c> |
int zbx_module_uninit(void); | int zbx_module_uninit(void); | ||
- | </file> | + | </code> |
Эта функция должна выполнять необходимые деинициализации (если таковые имеются), такие как освобождение выделенных ресурсов, закрытие файловых дескрипторов и так далее. | Эта функция должна выполнять необходимые деинициализации (если таковые имеются), такие как освобождение выделенных ресурсов, закрытие файловых дескрипторов и так далее. | ||
Line 77: | Line 77: | ||
Каждый элемент данных определяется в структуре ZBX_METRIC: | Каждый элемент данных определяется в структуре ZBX_METRIC: | ||
- | <file c> | + | <code c> |
typedef struct | typedef struct | ||
{ | { | ||
Line 86: | Line 86: | ||
} | } | ||
ZBX_METRIC; | ZBX_METRIC; | ||
- | </file> | + | </code> |
Здесь, **key** - ключ элемента данных (например, "dummy.random"), **flags** - либо CF_HAVEPARAMS, либо 0 (в зависимости от того, принимает ли элемент данных параметры или нет), **function** - C функция, которая обрабатывает элемент данных (например, "zbx_module_dummy_random"), и **test_param** - список параметров, которые используется когда Zabbix агент запускается с флагом "-p" (например, "1,1000", может быть NULL). Пример определения может выглядеть наподобие этого: | Здесь, **key** - ключ элемента данных (например, "dummy.random"), **flags** - либо CF_HAVEPARAMS, либо 0 (в зависимости от того, принимает ли элемент данных параметры или нет), **function** - C функция, которая обрабатывает элемент данных (например, "zbx_module_dummy_random"), и **test_param** - список параметров, которые используется когда Zabbix агент запускается с флагом "-p" (например, "1,1000", может быть NULL). Пример определения может выглядеть наподобие этого: | ||
- | <file c> | + | <code c> |
static ZBX_METRIC keys[] = | static ZBX_METRIC keys[] = | ||
{ | { | ||
Line 96: | Line 96: | ||
{ NULL } | { NULL } | ||
} | } | ||
- | </file> | + | </code> |
Каждая функция, которая обрабатывает элемент данных должна принимать два указателя параметра, первый с типом AGENT_REQUEST и второй с типом AGENT_RESULT: | Каждая функция, которая обрабатывает элемент данных должна принимать два указателя параметра, первый с типом AGENT_REQUEST и второй с типом AGENT_RESULT: | ||
- | <file c> | + | <code c> |
int zbx_module_dummy_random(AGENT_REQUEST *request, AGENT_RESULT *result) | int zbx_module_dummy_random(AGENT_REQUEST *request, AGENT_RESULT *result) | ||
{ | { | ||
Line 109: | Line 109: | ||
return SYSINFO_RET_OK; | return SYSINFO_RET_OK; | ||
} | } | ||
- | </file> | + | </code> |
Эти функции должны возвращать SYSINFO_RET_OK, если значение элемента данных получено успешно. В противном случае, функции должны возвращать SYSINFO_RET_FAIL. Смотрите пример "dummy" модуля ниже для получения деталей как получать информацию от AGENT_REQUEST и как указывать информацию в AGENT_RESULT. | Эти функции должны возвращать SYSINFO_RET_OK, если значение элемента данных получено успешно. В противном случае, функции должны возвращать SYSINFO_RET_FAIL. Смотрите пример "dummy" модуля ниже для получения деталей как получать информацию от AGENT_REQUEST и как указывать информацию в AGENT_RESULT. | ||
Line 117: | Line 117: | ||
Модуль может задавать функции для экспорта данных истории по типам: Числовой (с плавающей точкой), Числовой (целое положительное), Символ, Текст и Журнал (лог): | Модуль может задавать функции для экспорта данных истории по типам: Числовой (с плавающей точкой), Числовой (целое положительное), Символ, Текст и Журнал (лог): | ||
- | <file c> | + | <code c> |
typedef struct | typedef struct | ||
{ | { | ||
Line 127: | Line 127: | ||
} | } | ||
ZBX_HISTORY_WRITE_CBS; | ZBX_HISTORY_WRITE_CBS; | ||
- | </file> | + | </code> |
Каждый из них должен принимать массив "history" из элементов "history_num" в виде аргументов. В зависимости от экспортируемого типа данных истории, "history" является массивом из следующих структур, соответственно: | Каждый из них должен принимать массив "history" из элементов "history_num" в виде аргументов. В зависимости от экспортируемого типа данных истории, "history" является массивом из следующих структур, соответственно: | ||
- | <file c> | + | <code c> |
typedef struct | typedef struct | ||
{ | { | ||
Line 180: | Line 180: | ||
} | } | ||
ZBX_HISTORY_LOG; | ZBX_HISTORY_LOG; | ||
- | </file> | + | </code> |
Обратные вызовы будут использоваться Zabbix сервером или прокси процессами синхронизации истории в конце процедуры синхронизации истории после того, как данные записаны в базу данных Zabbix и сохранены в кэш значений. | Обратные вызовы будут использоваться Zabbix сервером или прокси процессами синхронизации истории в конце процедуры синхронизации истории после того, как данные записаны в базу данных Zabbix и сохранены в кэш значений. | ||
Line 236: | Line 236: | ||
После выполнения ./configure в корне дерева исходных кодов Zabbix, как описано ранее, просто выполните **make** для сборки **dummy.so**. | После выполнения ./configure в корне дерева исходных кодов Zabbix, как описано ранее, просто выполните **make** для сборки **dummy.so**. | ||
- | <file c> | + | <code c> |
/* | /* | ||
** Zabbix | ** Zabbix | ||
Line 526: | Line 526: | ||
return dummy_callbacks; | return dummy_callbacks; | ||
} | } | ||
- | </file> | + | </code> |
Модуль экпортирует 3 новых элемента данных: | Модуль экпортирует 3 новых элемента данных: |