Áú»¢¶Ä²©

This is a translation of the original English documentation page. Help us make it better.

6 ??????? ??????

1 ????? ?????

??????? ?????? ?????? ?????? ????? ??????? ?????? Áú»¢¶Ä²© ????????????.

?? ??? ????? ?????? ?? ????????????? ?? Áú»¢¶Ä²© ???????:

?? ?????? ??? ????, ??? ?? ??? ?????? ???? ???, ????? fork(). ?????? ???? ???? ????? ??? ??? ??? ???? ???? ???? ?????, ????? ?? ??? ????????. ?? ?? ????? ???? ???? ???, ??? ?? ????? ????? ???? ?????? ??? ????? ?????? ???????, ???? ? ???? ?? ?? ??????? ??????? ?? ???????? ????? ?? ?????? ????? ?? ??? ????? ????.

????? ???????? ??????? ?????? ????? ????? ?????? ???? Áú»¢¶Ä²©, ??? ?-proxy ???? ?????? ?? ????????.

????? ???? ?????? ??? ???? ?????? ?????? ?????? ?? Áú»¢¶Ä²© daemon ????? ??????. ??????? ????? ????? ???????? ???????, ?? ?????? Áú»¢¶Ä²© ???? ????? ?????? ??? ??? ????? ???? ???? ?????? ?????? ??.

???????? ??????? ?????? ?? ???? ???????. ??????? ?????? ? ?????? ????? ?? ?????? ?????? ????, ??? ???? ??? ????? ???? ??? ?????? ????, ?????? ????? ?? Áú»¢¶Ä²© ???????. ?? ???? ??????? ??? ????? ????? ???? ???????????? ???? ??? ???? ???? ???? ????? ????? ?? Áú»¢¶Ä²©.

????? ????? ?? ??????? ????? ??????? ?????? ?-GPL ?????? (??????? ?????? ?? Áú»¢¶Ä²© ???? ???? ???????? ?- Áú»¢¶Ä²© ??????; ???? ?? ??? Áú»¢¶Ä²© ????? ??? ?????? GPL). ?????? ??????? ???? ?????? ?? ??? Áú»¢¶Ä²©.

?????? API ?? ????? ?????? ????? Áú»¢¶Ä²© LTS ??? (????? ???? ?????) ?????. ??????? ?? Áú»¢¶Ä²© API ???? ?????? (????? ?? ???? ????? ????????? ??????? ?? Áú»¢¶Ä²© ??????, ??? ?? ??? ????? ???????? ???? ?????).

2 API ?? ?????

?? ??? ??????? ?????? ????? ?????? Áú»¢¶Ä²©, ?? ???? ????? ?????? ???? ????????. ???? ?? ???? ???????? ?-API ?? ????? Áú»¢¶Ä²©, ??? ??? ??? ??? ???? ? ???? ?????? ?? ???????????.

2.1 ???? ????

???????? ????? ?????? ??? zbx_module_api_version():

int zbx_module_api_version(void);

??????? ?? ????? ?????? ?? ???? ?-API ??????? ?? ??? ????? ?? ???? ??????? ????? ???? ?? ????? ?????? ?????? ???? API ????? ?? ??? Áú»¢¶Ä²©. ???? ?? ????? API ????? ?? ??? Áú»¢¶Ä²© ??? ZBX_MODULE_API_VERSION. ?? ???????? ??? ????? ?????? ?? ?? ???????. ???? ??? ZBX_MODULE_API_VERSION_ONE ????? ??? ????? ?????? ??? ???? ?-ZBX_MODULE_API_VERSION ?????? ?????? ????, ?? ?????? ?? ???? ?????.

2.2 ???? ?????????

????????? ???????????? ?? zbx_module_init(), zbx_module_item_list(), zbx_module_item_timeout(), zbx_module_history_write_cbs() ?-zbx_module_uninit():

int zbx_module_init(void);

??????? ?? ????? ???? ?? ?????? ????? ???? ?????? (?? ????). ?? ?? ?????, ?? ???? ?????? ?? ZBX_MODULE_OK. ???? ?? ???? ?????? ?? ZBX_MODULE_FAIL. ????? ?????? Áú»¢¶Ä²© ?? ????????.

ZBX_METRIC *zbx_module_item_list(void);

??????? ?? ????? ?????? ????? ?? ?????? ??????? ?? ??? ??????. ?? ???? ????? ????? ZBX_METRIC, ???? ????? ???? ??????. ?????? ??????? ?? ??? ???? ZBX_METRIC ?? ??? "????" ?? NULL.

void zbx_module_item_timeout(int timeout);

?? ?????? ????? ?? zbx_module_item_list() ?? ???????? ??? ??? ?????? ?? ??? Áú»¢¶Ä²© ??? ????? ?? ?????? ???? ????? ?????? Áú»¢¶Ä²© ???? ??????? ??????? ???????? ?? ??? ?????? ?????? ????? ??. ???, ?????? "??? ???" ??? ??????.

ZBX_HISTORY_WRITE_CBS zbx_module_history_write_cbs(void);

??????? ?? ????? ?????? ???????? ??????? ????? ????? ????? ??? Áú»¢¶Ä²© ????????? ????? ?? ???? ?????? ?????. ???????? ??????? ?????? ??????? ????? ????? ZBX_HISTORY_WRITE_CBS, ????? ?????? ????? NULL ?? ?????? ???? ??????? ????????? ?? ??? ?????.

int zbx_module_uninit(void);

??????? ?? ????? ???? ?? ????? ?????? ????? (?? ????) ??? ????? ?????? ??????, ????? ????? ????? ???'.

?? ????????? ?????? ??? ??? ?????? ?? Áú»¢¶Ä²© ???? ?????? ????, ???? zbx_module_uninit(), ????? ??? ??? ?????? ?? Áú»¢¶Ä²© ???? ?????? ????.

2.3 ????? ??????

?? ???? ????? ????? ZBX_METRIC:

???? typedef
       {
            char *????;
            ????? ?? ??????;
            int (*???????)();
            char *test_param;
       }
       ZBX_METRIC;

???, ???? ??? ???? ????? (????, "dummy.random"), ????? ??? ?? CF_HAVEPARAMS ?? 0 (???? ?? ????? ???? ??????? ?? ??), ??????? ??? ???????? C ??????? ?? ???? (??????, "zbx_module_dummy_random"), ?-test_param ??? ????? ??????? ?????? ???? ???? Áú»¢¶Ä²© ????? ?? ?-"-p" ??? (??????, "1,1000", ???? ????? NULL). ????? ?????? ????? ??????? ?? ???:

?????? ZBX_METRIC ??????[] =
       {
            { "dummy.random", CF_HAVEPARAMS, zbx_module_dummy_random, "1,1000" },
            { ??? }
       }

?? ??????? ??????? ???? ????? ???? ??? ??????? ???????, ?????? ???? AGENT_REQUEST ????? ?? ???? AGENT_RESULT:

int zbx_module_dummy_random(AGENT_REQUEST *request, AGENT_RESULT *result)
       {
            ...
       
            SET_UI64_RESULT(result, from + rand() % (to - from + 1));
       
            ???? SYSINFO_RET_OK;
       }

???????? ??? ?????? ?????? ?? SYSINFO_RET_OK, ?? ??? ????? ??? ???? ??????. ????, ?? ?????? ?????? ?? SYSINFO_RET_FAIL. ??? ????? "???" ?????? ???? ?????? ???? ????? ???? ?-AGENT_REQUEST ????? ?????? ???? ????_RESULT.

2.4 ????? ????????? ????? ?????????

::: ???? ?? ???? ????? ???????? ??????? ????? ???? ???? ??? ?? ??? ?????? Áú»¢¶Ä²© ??? Áú»¢¶Ä²© 4.0.0. :::

????? ???? ????? ???????? ?????? ????? ???????? ??? ???: ????? (??), ????? (?? ????), ??, ???? ?????:

???? typedef
       {
            void (*history_float_cb)(const ZBX_HISTORY_FLOAT *history, int history_num);
            void (*history_integer_cb)(const ZBX_HISTORY_INTEGER *history, int history_num);
            void (*history_string_cb)(const ZBX_HISTORY_STRING *history, int history_num);
            void (*history_text_cb)(const ZBX_HISTORY_TEXT *history, int history_num);
            void (*history_log_cb)(const ZBX_HISTORY_LOG *history, int history_num);
       }
       ZBX_HISTORY_WRITE_CBS;

?? ??? ??? ???? ???? ???? "????????" ?? ????? "????????_num" ? ???????. ????? ???? ????? ????????? ??? ?????, "????????" ??? ???? ?? ?????? ?????, ??????:

???? typedef
       {
            zbx_uint64_t itemid;
            ???? int;
            int ns;
            ??? ????;
       }
       ZBX_HISTORY_FLOAT;
       
       ???? typedef
       {
            zbx_uint64_t itemid;
            ???? int;
            int ns;
            ??? zbx_uint64_t;
       }
       ZBX_HISTORY_INTEGER;
       
       ???? typedef
       {
            zbx_uint64_t itemid;
            ???? int;
            int ns;
            const char *???;
       }
       ZBX_HISTORY_STRING;
       
       ???? typedef
       {
            zbx_uint64_t itemid;
            ???? int;
            int ns;
            const char *???;
       }
       ZBX_HISTORY_TEXT;
       
       ???? typedef
       {
            zbx_uint64_t itemid;
            ???? int;
            int ns;
            const char *???;
            const char *????;
            ????? ??? int;
            int logeventid;
            ????? ????;
       }
       ZBX_HISTORY_LOG;

????????? ?????? ????? ?? ?????? ??????? ????????? ?? ??? Áú»¢¶Ä²© ?- ??? ???? ?????? ????????? ???? ????? ??????? ???? ??????? ?? Áú»¢¶Ä²© ????? ?-value cache.

:::???? ???? ????? ?? ????? ?????? ?????? ????? ?????????, ????? ??????? ????? ????? ??? ???? ?? ????? ?? ?????? ???? ?? ???? ??????, ??? ????? ?????? ????? ??? ?????? ???? Áú»¢¶Ä²© ?????? ?????. :::

2.5 ????? ???????

??????? ?????? ??? ??????? ???? ?? ????? ?? Áú»¢¶Ä²©, ?????? ??-API ?? ?????? ???? ????? ?????? ??????? ???????? ??????? Áú»¢¶Ä²©.

?????? ?????? ????? ???? ??????? ??????? ?????? ??? include/module.h, ??? ????? ?? ???? ??????? ????. ?????? ????? ?????? ????? ?? ???? include/module.h ??? ????? ????? ?? stdlib.h ? stdint.h.

?? ???? ?? ??????, ??? ???? ???? ?????? ????. ?????? ???? ????? stdlib.h, stdint.h ? module.h, ??????? ?-build ?????? ????? ??????? ???? ????? ?????. ??? ????? "???" ?????? ???? ??????.

????? ??????? ????? ??? include/log.h, ??????? ???????? zabbix_log(), ????? ?????? ?? ?????? ?????? ????? ?????.

3 ?????? ?????

???? Áú»¢¶Ä²©, ??? ??????? ?????? ?????? ??????? ??????? ???? ???????:

  • LoadModulePath - ???? ??? ?????? ???????? ??????? ??????
  • LoadModule - ??????? ?????? ??? ??????. ???????? ?????? ????? ????? ?????? ?????? ?? ??? LoadModulePath ?? ?????? ???? ???? ?? ??????. ?? ????? ????? ??? ????? (????? ?? '/') ?? ??????? ?-LoadModulePath. ???? ????? ???? ??????? ?? LoadModule.

??????, ??? ?????? ?? ???? Áú»¢¶Ä²© ???? ?????? ?? ?????? ????? ???????:

 LoadModulePath=/usr/local/lib/zabbix/agent/
        LoadModule=mariadb.so
        LoadModule=apache.so
        LoadModule=kernel.so
        LoadModule=/usr/local/lib/zabbix/dummy.so

?? ????? ????? ??? ???? ?? ?-mariadb.so, apache.so ?-kernel.so ??????? ???????? /usr/local/lib/zabbix/agent ???? dummy.so ????? ?-/usr/local/lib/zabbix. ?? ????? ?? ????? ??? ???, ????? ?? ?????? ?????? ?? ?? ?????? ?????? ???? ? ????? Áú»¢¶Ä²©.

4 ????? Frontend

??????? ??????? ?????? ?????? ?? ??? ???? Áú»¢¶Ä²©, ??? ???????. ???, ??? ????? ????? ???? ?? Áú»¢¶Ä²© ???? ???? ?????? ???? ????. ?? ?????? ???? ?????, ?? ??? ????? ???? ????? "???? Áú»¢¶Ä²©" ?? "???? Áú»¢¶Ä²© (????)". ?? ?????? ??? ???? ???? ?? ?-proxy, ?? ??? ????? ???? ????? "???? ?????".

????? ???????? ??? ?????? Áú»¢¶Ä²© ???? ???? ??? ???? ????????. ?? ?????? ???? ?????? ?? ??? ??? ? ???? ??????? zbx_module_history_write_cbs() ??????? ????? ???????? ??????? ????? ??? ????? NULL ??? ????? ????????? ???? ????? ????????.

5 ????? Frontend

??????? ??????? ?????? ?????? ?? ??? ???? Áú»¢¶Ä²©, ??? ???????. ???, ??? ????? ????? ???? ?? Áú»¢¶Ä²© ???? ???? ?????? ???? ????. ?? ?????? ???? ?????, ?? ??? ????? ???? ????? "???? Áú»¢¶Ä²©" ?? "???? Áú»¢¶Ä²© (????)". ?? ?????? ??? ???? ???? ?? ?-proxy, ?? ??? ????? ???? ????? "???? ?????".

????? ???????? ??? ?????? Áú»¢¶Ä²© ???? ???? ??? ???? ????????. ?? ?????? ???? ?????? ?? ??? ??? ? ???? ??????? zbx_module_history_write_cbs() ??????? ????? ???????? ??????? ????? ??? ????? NULL ??? ????? ????????? ???? ????? ????????.

6 ??????

????? ???????? ??????? ?????? ?????? ???? ???????? Unix ????. ?? ???? ??? ?? ???? ???? ????? Windows.

?????? ??????? ????? ?????? ????? ????? ????? ?????? ?????? ??????? ?-zabbix_agentd.conf. ?? ?? ???? ????. ?? ??? ???? ?? ?????? ??? ??? ?????? ???? ??????? ?? ????? ???? ???? ????? ????? ????? ?? ???? ????? ?????? ??????.