-
New Feature Request
-
Resolution: Fixed
-
Trivial
-
None
-
None
-
Prev.Sprint, S24-W16/17, S24-W18/19
-
2
Automatic (delayed start) is available on Windows Vista / 2008 or later.
Most of the troubles of Zabbix agent when the OS is restarted on Windows, the service startup is "Automatic". In that case, "Automatic (delayed start)" will solve the problem.
I think it's better to set fDelayedAutostart of SERVICE_CONFIG_DELAYED_AUTO_START_INFO to TRUE with ChangeServiceConfig2 function below.
int ZabbixCreateService(const char *path, int multiple_agents)
{
SC_HANDLE mgr, service;
SERVICE_DESCRIPTION sd;
// Add Start
const OSVERSIONINFOEX *vi;
SERVICE_DELAYED_AUTO_START_INFO scdasi;
// Add End
wchar_t cmdLine[MAX_PATH];
wchar_t *wservice_name;
DWORD code;
int ret = FAIL;
if (FAIL == svc_OpenSCManager(&mgr))
return ret;
svc_get_command_line(path, multiple_agents, cmdLine, MAX_PATH);
wservice_name = zbx_utf8_to_unicode(ZABBIX_SERVICE_NAME);
if (NULL == (service = CreateService(mgr, wservice_name, wservice_name, GENERIC_READ, SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, cmdLine, NULL, NULL, NULL, NULL, NULL)))
{
if (ERROR_SERVICE_EXISTS == (code = GetLastError()))
zbx_error("ERROR: service [%s] already exists", ZABBIX_SERVICE_NAME);
else
zbx_error("ERROR: cannot create service [%s]: %s", ZABBIX_SERVICE_NAME, strerror_from_system(code));
}
else
{
zbx_error("service [%s] installed successfully", ZABBIX_SERVICE_NAME);
CloseServiceHandle(service);
ret = SUCCEED;
/* update the service description */
if (SUCCEED == svc_OpenService(mgr, &service, SERVICE_CHANGE_CONFIG))
{
sd.lpDescription = TEXT("Provides system monitoring");
if (0 == ChangeServiceConfig2(service, SERVICE_CONFIG_DESCRIPTION, &sd))
zbx_error("service description update failed: %s", strerror_from_system(GetLastError()));
// Add Start
if (NULL != (vi = zbx_win_getversion()) && 6 <= vi->dwMajorVersion)
{
scdasi.fDelayedAutostart = TRUE;
if (0 == ChangeServiceConfig2(service, SERVICE_CONFIG_DELAYED_AUTO_START_INFO, &scdasi))
zbx_error("service start update failed: %s", strerror_from_system(GetLastError()));
}
// Add End
CloseServiceHandle(service);
}
}
zbx_free(wservice_name);
CloseServiceHandle(mgr);
if (SUCCEED == ret)
ret = svc_install_event_source(path);
return ret;
}
I changed and confirmed the source of Zabbix 3.0.30.
I was able to "Automatic (delayed start)" on Windows 10.
- is duplicated by
-
ZBX-10580 Acquisition of Windows performance counter sometimes fail at the OS startup timing.
-
- Closed
-