15 Zabbix sender dynamic link library for Windows

In a Windows environment applications can send data to Zabbix server/proxy directly by using the Zabbix sender dynamic link library (zabbix_sender.dll) instead of having to launch an external process (zabbix_sender.exe).

The dynamic link library with the development files is located in bin\winXX\dev folders. To use it, include the zabbix_sender.h header file and link with the zabbix_sender.lib library. An example file with Zabbix sender API usage can be found in build\win32\examples\zabbix_sender folder.

The following functionality is provided by the Zabbix sender dynamic link library:

  1. int zabbix_sender_send_values(const char address, unsigned short port,
  2. const char source, const zabbix_sender_value_t values, int count,
  3. char **result);
Description
Sends an array of value structures to the proxy/server. A value structure contains host name, item key and item value.
Note: Windows sockets must be initialized with WSAStartup call before using the zabbix_sender_send_values function.
Parameters
address - [in] the server/proxy address
port - [in] the trapper port on the server/proxy
source - [in] the source IP (optional)
values - [in] an array of values to send
count - [in] the number of items in values array
result - [out] the server response or an error message (optional)
Return value
0 - operation completed successfully
-1 - operation failed
Comments
If the result variable is specified this function allocates the necessary memory to store server response/error message. It must be always freed afterwards with zabbix_sender_free_result() function.
If operation was successful the result contains server response which can be parsed with zabbix_sender_parse_result() function. In the case of error the error message will be stored into result instead.
  1. int zabbix_sender_parse_result(const char result, int response,
  2. zabbix_sender_info_t info);
Description
Parses the result returned from zabbix_sender_send_values() function.
Parameters
result - [in] the result returned by zabbix_sender_send_values() function.
response - [out] the operation response: 0 - success, -1 failed.
info - [out] the detailed information about operation, optional.
Return value
0 - operation completed successfully
-1 - operation failed
Comments
If info parameter was specified, but the function failed to parse the result info field, then the info structure field total is set to -1.
  1. void zabbix_sender_free_result(void *result);
Description
Frees data allocated by zabbix_sender_send_values() function.
Parameters
result - the result returned by zabbix_sender_send_values() function.

The following data structures are used by the Zabbix sender dynamic link library:

  1. typedef struct
  2. {
  3. /* host name, must match the name of target host in Zabbix */
  4. char *host;
  5. /* the item key */
  6. char *key;
  7. /* the item value */
  8. char *value;
  9. }
  10. zabbix_sender_value_t;
  11. typedef struct
  12. {
  13. /* number of total values processed */
  14. int total;
  15. /* number of failed values */
  16. int failed;
  17. /* time in seconds the server spent processing the sent values */
  18. double time_spent;
  19. }
  20. zabbix_sender_info_t;