Created
October 27, 2014 07:40
-
-
Save higebu/cde46e293a449b0be677 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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