Enable services status (windows.plugin) (#20720)
thiagoftsm committed
Jul 23, 2025 at 13:49 UTC
c0519e124b6bbbb3a1fdc250303e78b561864eaf
4 files changed
+14
-12
CMakeLists.txt
+1
-1
@@ -1945,6 +1945,7 @@ set(WINDOWS_PLUGIN_FILES
1945
src/collectors/windows.plugin/GetSystemRAM.c
1946
src/collectors/windows.plugin/GetSystemCPU.c
1947
src/collectors/windows.plugin/GetPowerSupply.c
1948
+ src/collectors/windows.plugin/GetServicesStatus.c
1949
src/collectors/windows.plugin/perflib-adcs.c
1950
src/collectors/windows.plugin/perflib-adfs.c
1951
src/collectors/windows.plugin/perflib-rrd.c
@@ -1961,7 +1962,6 @@ set(WINDOWS_PLUGIN_FILES
1962
src/collectors/windows.plugin/perflib-memory.c
1963
src/collectors/windows.plugin/perflib-processes.c
1964
src/collectors/windows.plugin/perflib-web-service.c
1964
- src/collectors/windows.plugin/perflib-services.c
1965
src/collectors/windows.plugin/perflib-hyperv.c
1966
src/collectors/windows.plugin/perflib-exchange.c
1967
src/collectors/windows.plugin/perflib-numa.c
src/collectors/windows.plugin/GetServicesStatus.c
renamed
+3
-1
@@ -6,6 +6,7 @@
6
// Service data
7
struct win_service {
8
char *service_name;
9
+ DWORD pid;
10
11
RRDSET *st_service_state;
12
RRDDIM *rd_service_state_running;
@@ -105,6 +106,7 @@ static BOOL fill_dictionary_with_content()
106
continue;
107
108
p->ServiceState.current.Data = service->ServiceStatusProcess.dwCurrentState;
109
+ p->pid = service->ServiceStatusProcess.dwProcessId;
110
}
111
112
ret = TRUE;
@@ -204,7 +206,7 @@ dict_win_services_charts_cb(const DICTIONARY_ITEM *item __maybe_unused, void *va
206
return 1;
207
}
208
207
-int do_PerflibServices(int update_every, usec_t dt __maybe_unused)
209
+int do_GetServicesStatus(int update_every, usec_t dt __maybe_unused)
210
{
211
#define NETDATA_SERVICE_MAX_TRY (5)
212
static int limit = 0;
src/collectors/windows.plugin/windows_plugin.c
+9
-9
@@ -30,6 +30,11 @@ static struct proc_module {
30
.enabled = CONFIG_BOOLEAN_YES,
31
.update_every = UPDATE_EVERY_MIN,
32
.func = do_GetPowerSupply},
33
+ {.name = "PerflibServices",
34
+ .dim = "PerflibServices",
35
+ .enabled = CONFIG_BOOLEAN_YES,
36
+ .update_every = 30 * UPDATE_EVERY_MIN,
37
+ .func = do_GetServicesStatus},
38
39
// the same is provided by PerflibProcessor, with more detailed analysis
40
//{.name = "GetSystemCPU", .dim = "GetSystemCPU", .enabled = CONFIG_BOOLEAN_YES,
@@ -74,7 +79,7 @@ static struct proc_module {
79
{.name = "PerflibThermalZone",
80
.dim = "PerflibThermalZone",
81
.enabled = CONFIG_BOOLEAN_NO,
77
- .update_every = 5*UPDATE_EVERY_MIN,
82
+ .update_every = 5 * UPDATE_EVERY_MIN,
83
.func = do_PerflibThermalZone},
84
85
{.name = "PerflibWebService",
@@ -111,12 +116,6 @@ static struct proc_module {
116
.update_every = 10 * UPDATE_EVERY_MIN,
117
.func = do_PerflibADFS},
118
114
- {.name = "PerflibServices",
115
- .dim = "PerflibServices",
116
- .enabled = CONFIG_BOOLEAN_NO,
117
- .update_every = 30 * UPDATE_EVERY_MIN,
118
- .func = do_PerflibServices},
119
-
119
{.name = "PerflibExchange",
120
.dim = "PerflibExchange",
121
.enabled = CONFIG_BOOLEAN_YES,
@@ -136,7 +135,7 @@ static struct proc_module {
135
.update_every = UPDATE_EVERY_MIN,
136
.func = do_PerflibASP},
137
139
- // the terminator of this array
138
+ // the terminator of this array
139
{.name = NULL, .dim = NULL, .func = NULL}};
140
141
#if WORKER_UTILIZATION_MAX_JOB_TYPES < 36
@@ -214,7 +213,8 @@ void *win_plugin_main(void *ptr)
213
pm->enabled = inicfg_get_boolean(&netdata_config, "plugin:windows", pm->name, pm->enabled);
214
pm->rd = NULL;
215
217
- pm->update_every = (int)inicfg_get_duration_seconds(&netdata_config, buf, "update every", (update_every != pm->update_every)? pm->update_every: update_every);
216
+ pm->update_every = (int)inicfg_get_duration_seconds(
217
+ &netdata_config, buf, "update every", (update_every != pm->update_every) ? pm->update_every : update_every);
218
219
if (pm->enabled && unlikely(update_every != pm->update_every)) {
220
char tag_name[ND_THREAD_TAG_MAX];
src/collectors/windows.plugin/windows_plugin.h
+1
-1
@@ -24,6 +24,7 @@ int do_GetSystemUptime(int update_every, usec_t dt);
24
int do_GetSystemRAM(int update_every, usec_t dt);
25
int do_GetSystemCPU(int update_every, usec_t dt);
26
int do_GetPowerSupply(int update_every, usec_t dt);
27
+int do_GetServicesStatus(int update_every, usec_t dt);
28
29
// Perflib
30
int do_PerflibStorage(int update_every, usec_t dt);
@@ -40,7 +41,6 @@ int do_PerflibAD(int update_every, usec_t dt);
41
int do_PerflibADCS(int update_every, usec_t dt);
42
int do_PerflibADFS(int update_every, usec_t dt);
43
int do_PerflibHyperV(int update_every, usec_t dt);
43
-int do_PerflibServices(int update_every, usec_t dt);
44
int do_PerflibExchange(int update_every, usec_t dt __maybe_unused);
45
int do_PerflibNUMA(int update_every, usec_t dt __maybe_unused);
46
int do_PerflibASP(int update_every, usec_t dt __maybe_unused);