Skip to content

Instantly share code, notes, and snippets.

@higebu
Created October 27, 2014 07:40
Show Gist options
  • Save higebu/cde46e293a449b0be677 to your computer and use it in GitHub Desktop.
Save higebu/cde46e293a449b0be677 to your computer and use it in GitHub Desktop.
diff -u 2.2/src/zabbix_server/vmware/vmware.c 2.4/src/zabbix_server/vmware/vmware.c
--- 2.2/src/zabbix_server/vmware/vmware.c 2014-10-27 16:35:30.708268540 +0900
+++ 2.4/src/zabbix_server/vmware/vmware.c 2014-10-27 14:48:30.256956558 +0900
@@ -48,13 +48,11 @@
* which is the most time consuming task.
*/
-/* external variables */
-extern unsigned char process_type;
-extern int process_num;
-
extern char *CONFIG_FILE;
extern int CONFIG_VMWARE_FREQUENCY;
extern zbx_uint64_t CONFIG_VMWARE_CACHE_SIZE;
+extern unsigned char process_type, daemon_type;
+extern int server_num, process_num;
#define VMWARE_VECTOR_CREATE(ref, type) zbx_vector_##type##_create_ext(ref, __vm_mem_malloc_func, \
__vm_mem_realloc_func, __vm_mem_free_func)
@@ -668,6 +666,7 @@
ZBX_POST_VSPHERE_FOOTER
const char *__function_name = "vmware_service_authenticate";
+
int err, opt, timeout = 10, ret = FAIL;
char xml[MAX_STRING_LEN], *error_object = NULL;
@@ -708,6 +707,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL == (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
{
/* Successfully authenticated with vcenter service manager. */
@@ -748,6 +749,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -784,7 +787,9 @@
"</ns0:RetrieveServiceContent>" \
ZBX_POST_VSPHERE_FOOTER
- int err, opt, ret = FAIL;
+ const char *__function_name = "vmware_service_get_contents";
+
+ int err, opt, ret = FAIL;
if (CURLE_OK != (err = curl_easy_setopt(easyhandle, opt = CURLOPT_POSTFIELDS, ZBX_POST_VMWARE_CONTENTS)))
{
@@ -800,6 +805,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -889,6 +896,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -1039,6 +1048,7 @@
ZBX_POST_VSPHERE_FOOTER
const char *__function_name = "vmware_service_get_perf_counters";
+
char tmp[MAX_STRING_LEN];
int opts, err, ret = SUCCEED;
@@ -1083,6 +1093,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -1132,14 +1144,14 @@
* FAIL - the operation has failed *
* *
******************************************************************************/
-static int vmware_service_hv_get_stats (const zbx_vmware_service_t *service, CURL *easyhandle,
+static int vmware_service_hv_get_stats(const zbx_vmware_service_t *service, CURL *easyhandle,
zbx_vmware_hv_t *hv, char **error)
{
- const char *__function_name = "vmware_service_hv_get_stats";
+ const char *__function_name = "vmware_service_hv_get_stats";
- int err, opt, ret = FAIL, refresh_rate;
- char *tmp = NULL;
- size_t tmp_alloc = 0, tmp_offset = 0;
+ int err, opt, ret = FAIL, refresh_rate;
+ char *tmp = NULL;
+ size_t tmp_alloc = 0, tmp_offset = 0;
zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __function_name);
@@ -1185,6 +1197,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -1271,6 +1285,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -1285,7 +1301,6 @@
return ret;
}
-
/******************************************************************************
* *
* Function: wmware_vm_get_nic_devices *
@@ -1301,6 +1316,7 @@
static void wmware_vm_get_nic_devices(zbx_vmware_vm_t *vm)
{
const char *__function_name = "wmware_vm_get_nic_devices";
+
xmlDoc *doc;
xmlXPathContext *xpathCtx;
xmlXPathObject *xpathObj;
@@ -1367,6 +1383,7 @@
static void wmware_vm_get_disk_devices(zbx_vmware_vm_t *vm)
{
const char *__function_name = "wmware_vm_get_disk_devices";
+
xmlDoc *doc;
xmlXPathContext *xpathCtx;
xmlXPathObject *xpathObj;
@@ -1539,6 +1556,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -1647,6 +1666,7 @@
ZBX_POST_VSPHERE_FOOTER
const char *__function_name = "vmware_service_create_datastore";
+
char tmp[MAX_STRING_LEN], *uuid = NULL, *name = NULL, *url;
zbx_vmware_datastore_t *datastore = NULL;
@@ -1663,6 +1683,8 @@
if (CURLE_OK != curl_easy_perform(easyhandle))
goto out;
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
name = zbx_xml_read_value(page.data, ZBX_XPATH_LN2("val", "name"));
if (NULL != (url = zbx_xml_read_value(page.data, ZBX_XPATH_LN2("val", "url"))))
@@ -1757,6 +1779,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -1788,6 +1812,7 @@
const char *id, char **error)
{
const char *__function_name = "vmware_service_create_hv";
+
zbx_vmware_hv_t *hv;
int ret = FAIL, i;
char *value;
@@ -2042,7 +2067,7 @@
goto out;
}
- zabbix_log(LOG_LEVEL_DEBUG, "%s() page.data:'%s'", __function_name, page.data);
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -2133,6 +2158,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -2212,6 +2239,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -2384,6 +2413,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -2456,6 +2487,8 @@
goto out;
}
+ zabbix_log(LOG_LEVEL_TRACE, "%s() SOAP response: %s", __function_name, page.data);
+
if (NULL != (*error = zbx_xml_read_value(page.data, ZBX_XPATH_LN1("faultstring"))))
goto out;
@@ -2590,7 +2623,7 @@
******************************************************************************/
static void vmware_service_update(zbx_vmware_service_t *service)
{
- const char *__function_name = "vmware_service_update";
+ const char *__function_name = "vmware_service_update";
CURL *easyhandle = NULL;
struct curl_slist *headers = NULL;
@@ -2706,6 +2739,7 @@
zbx_vmware_service_t *zbx_vmware_get_service(const char* url, const char* username, const char* password)
{
const char *__function_name = "zbx_vmware_get_service";
+
int i, now;
zbx_vmware_service_t *service = NULL;
@@ -2770,6 +2804,7 @@
void zbx_vmware_init(void)
{
const char *__function_name = "zbx_vmware_init";
+
key_t shm_key;
zbx_uint64_t size_reserved;
@@ -2829,7 +2864,7 @@
* Purpose: the vmware collector main loop *
* *
******************************************************************************/
-void main_vmware_loop(void)
+ZBX_THREAD_ENTRY(vmware_thread, args)
{
#if defined(HAVE_LIBXML2) && defined(HAVE_LIBCURL)
int i, now, state, next_update, updated_services = 0, removed_services = 0,
@@ -2838,6 +2873,13 @@
double sec, total_sec = 0.0, old_total_sec = 0.0;
time_t last_stat_time;
+ process_type = ((zbx_thread_args_t *)args)->process_type;
+ server_num = ((zbx_thread_args_t *)args)->server_num;
+ process_num = ((zbx_thread_args_t *)args)->process_num;
+
+ zabbix_log(LOG_LEVEL_INFORMATION, "%s #%d started [%s #%d]", get_daemon_type_string(daemon_type),
+ server_num, get_process_type_string(process_type), process_num);
+
#define STAT_INTERVAL 5 /* if a process is busy and does not sleep then update status not faster than */
/* once in STAT_INTERVAL seconds */
@@ -2895,8 +2937,8 @@
if (ZBX_VMWARE_SERVICE_UPDATE == state)
vmware_service_update(service);
-
- } while (ZBX_VMWARE_SERVICE_IDLE != state);
+ }
+ while (ZBX_VMWARE_SERVICE_IDLE != state);
total_sec += zbx_time() - sec;
now = time(NULL);
@@ -2929,6 +2971,8 @@
zbx_sleep_loop(sleeptime);
}
#undef STAT_INTERVAL
+#else
+ zbx_thread_exit(EXIT_SUCCESS);
#endif
}
diff -u 2.2/src/zabbix_server/vmware/vmware.h 2.4/src/zabbix_server/vmware/vmware.h
--- 2.2/src/zabbix_server/vmware/vmware.h 2014-10-27 16:35:30.708268540 +0900
+++ 2.4/src/zabbix_server/vmware/vmware.h 2014-10-27 14:48:30.256956558 +0900
@@ -20,6 +20,7 @@
#define ZABBIX_VMWARE_H
#include "common.h"
+#include "threads.h"
/* the vmware service state */
#define ZBX_VMWARE_STATE_NEW 0x001
@@ -150,7 +151,7 @@
}
zbx_vmware_stats_t;
-void main_vmware_loop(void);
+ZBX_THREAD_ENTRY(vmware_thread, args);
void zbx_vmware_init(void);
void zbx_vmware_destroy(void);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment