-
Problem report
-
Resolution: Fixed
-
Blocker
-
3.0.23, 4.0.1
-
Sprint 46, Nov 2018
-
0.125
Zabbix server generates an request, having these XML tags:
<ns0:startTime>2018-11-06T08:14:33 AMZ</ns0:startTime>
which causes lots of such errors:
10763:20181106:111434.165 vmware_service_retrieve_perf_counters() SOAP response: <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <soapenv:Fault><faultcode>ServerFaultCode</faultcode><faultstring> Cannot parse "2018-11-06T08:14:33 AMZ" as a DateTime value while parsing serialized value of type vmodl.DateTime at line 1, column 415 while parsing property "startTime" of static type dateTime while parsing serialized DataObject of type vim.PerformanceManager.QuerySpec at line 1, column 345 while parsing call information for method QueryPerf at line 1, column 274 while parsing SOAP body at line 1, column 264 while parsing SOAP envelope at line 1, column 38 while parsing HTTP request for method queryStats on object of type vim.PerformanceManager at line 1, column 0</faultstring><detail><InvalidRequestFault xmlns="urn:vim25" xsi:type="InvalidRequest"></InvalidRequestFault></detail></soapenv:Fault> </soapenv:Body> </soapenv:Envelope> 10763:20181106:111434.166 End of vmware_service_retrieve_perf_counters()
It was a puzzle what the AMZ timezone is. Later we spot that it changed to PMZ and we understood that it's related to en_US locale, where we know about AM/PM.
Yes, our zabbix server is configured to have LC_ALL=en_US.UTF-8 locale
Related code is:
{ time_t st_raw; struct tm st; char st_str[ZBX_XML_DATETIME]; /* add startTime for entity performance counter request for decrease XML data load */ st_raw = zbx_time() - SEC_PER_HOUR; st = *gmtime(&st_raw); strftime(st_str, sizeof(st_str), "%Y-%m-%dT%XZ", &st); zbx_snprintf_alloc(&tmp, &tmp_alloc, &tmp_offset, "<ns0:startTime>%s</ns0:startTime>", st_str); }
where %X is probably a mistake, better option would be %T to have timestamp in ISO 8601
http://man7.org/linux/man-pages/man3/strftime.3.html
mentioned code was implemented in --ZBX-12990
We changed in is sources (changing %X to %T), recompiled and it resolved our issue.
The fix tested on VMware 6.0 and 6.7
- caused by
-
ZBX-12990 VMware Datastore usage mismatch
- Closed