Reorganize code (IIS) (#20182)
thiagoftsm committed
Apr 28, 2025 at 15:06 UTC
71c39b0f67990796eb0451356a9da6e61d1f5ed0
1 file changed
+520
-433
src/collectors/windows.plugin/perflib-web-service.c
+520
-433
@@ -226,512 +226,599 @@ static void initialize(void)
226
dictionary_register_insert_callback(app_pools, dict_app_pool_insert_cb, NULL);
227
}
228
229
-static bool do_web_services(PERF_DATA_BLOCK *pDataBlock, int update_every)
229
+static inline void netdata_webservice_traffic(
230
+ PERF_DATA_BLOCK *pDataBlock,
231
+ PERF_OBJECT_TYPE *pObjectType,
232
+ PERF_INSTANCE_DEFINITION *pi,
233
+ struct web_service *p,
234
+ int update_every)
235
{
231
- char id[RRD_ID_LENGTH_MAX + 1];
232
- PERF_OBJECT_TYPE *pObjectType = perflibFindObjectTypeByName(pDataBlock, "Web Service");
233
- if (!pObjectType)
234
- return false;
235
-
236
- PERF_INSTANCE_DEFINITION *pi = NULL;
237
- for (LONG i = 0; i < pObjectType->NumInstances; i++) {
238
- pi = perflibForEachInstance(pDataBlock, pObjectType, pi);
239
- if (!pi)
240
- break;
241
-
242
- if (!getInstanceName(pDataBlock, pObjectType, pi, windows_shared_buffer, sizeof(windows_shared_buffer)))
243
- strncpyz(windows_shared_buffer, "[unknown]", sizeof(windows_shared_buffer) - 1);
236
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISReceivedBytesTotal) &&
237
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISSentBytesTotal)) {
238
+ if (!p->st_traffic) {
239
+ char id[RRD_ID_LENGTH_MAX + 1];
240
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_traffic", windows_shared_buffer);
241
+ netdata_fix_chart_name(id);
242
+ p->st_traffic = rrdset_create_localhost(
243
+ "iis",
244
+ id,
245
+ NULL,
246
+ "traffic",
247
+ "iis.website_traffic",
248
+ "Website traffic",
249
+ "bytes/s",
250
+ PLUGIN_WINDOWS_NAME,
251
+ "PerflibWebService",
252
+ PRIO_WEBSITE_IIS_TRAFFIC,
253
+ update_every,
254
+ RRDSET_TYPE_AREA);
255
245
- // We are not ploting _Total here, because cloud will group the sites
246
- if (strcasecmp(windows_shared_buffer, "_Total") == 0) {
247
- continue;
256
+ p->rd_traffic_received = rrddim_add(p->st_traffic, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
257
+ p->rd_traffic_sent = rrddim_add(p->st_traffic, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
258
+ rrdlabels_add(p->st_traffic->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
259
}
260
250
- struct web_service *p = dictionary_set(web_services, windows_shared_buffer, NULL, sizeof(*p));
251
-
252
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISReceivedBytesTotal) &&
253
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISSentBytesTotal)) {
254
- if (!p->st_traffic) {
255
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_traffic", windows_shared_buffer);
256
- netdata_fix_chart_name(id);
257
- p->st_traffic = rrdset_create_localhost(
258
- "iis",
259
- id,
260
- NULL,
261
- "traffic",
262
- "iis.website_traffic",
263
- "Website traffic",
264
- "bytes/s",
265
- PLUGIN_WINDOWS_NAME,
266
- "PerflibWebService",
267
- PRIO_WEBSITE_IIS_TRAFFIC,
268
- update_every,
269
- RRDSET_TYPE_AREA);
261
+ rrddim_set_by_pointer(
262
+ p->st_traffic, p->rd_traffic_received, (collected_number)p->IISReceivedBytesTotal.current.Data);
263
+ rrddim_set_by_pointer(p->st_traffic, p->rd_traffic_sent, (collected_number)p->IISSentBytesTotal.current.Data);
264
271
- p->rd_traffic_received = rrddim_add(p->st_traffic, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
272
- p->rd_traffic_sent = rrddim_add(p->st_traffic, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
273
- rrdlabels_add(p->st_traffic->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
274
- }
265
+ rrdset_done(p->st_traffic);
266
+ }
267
+}
268
276
- rrddim_set_by_pointer(
277
- p->st_traffic, p->rd_traffic_received, (collected_number)p->IISReceivedBytesTotal.current.Data);
278
- rrddim_set_by_pointer(
279
- p->st_traffic, p->rd_traffic_sent, (collected_number)p->IISSentBytesTotal.current.Data);
269
+static inline void netdata_webservice_file_transfer_rate(
270
+ PERF_DATA_BLOCK *pDataBlock,
271
+ PERF_OBJECT_TYPE *pObjectType,
272
+ PERF_INSTANCE_DEFINITION *pi,
273
+ struct web_service *p,
274
+ int update_every)
275
+{
276
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISFilesReceivedTotal) &&
277
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISFilesSentTotal)) {
278
+ if (!p->st_file_transfer) {
279
+ char id[RRD_ID_LENGTH_MAX + 1];
280
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_ftp_file_transfer_rate", windows_shared_buffer);
281
+ netdata_fix_chart_name(id);
282
+ p->st_file_transfer = rrdset_create_localhost(
283
+ "iis",
284
+ id,
285
+ NULL,
286
+ "traffic",
287
+ "iis.website_ftp_file_transfer_rate",
288
+ "Website FTP file transfer rate",
289
+ "files/s",
290
+ PLUGIN_WINDOWS_NAME,
291
+ "PerflibWebService",
292
+ PRIO_WEBSITE_IIS_FTP_FILE_TRANSFER_RATE,
293
+ update_every,
294
+ RRDSET_TYPE_LINE);
295
281
- rrdset_done(p->st_traffic);
296
+ p->rd_files_received = rrddim_add(p->st_file_transfer, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
297
+ p->rd_files_sent = rrddim_add(p->st_file_transfer, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
298
+ rrdlabels_add(p->st_file_transfer->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
299
}
300
284
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISFilesReceivedTotal) &&
285
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISFilesSentTotal)) {
286
- if (!p->st_file_transfer) {
287
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_ftp_file_transfer_rate", windows_shared_buffer);
288
- netdata_fix_chart_name(id);
289
- p->st_file_transfer = rrdset_create_localhost(
290
- "iis",
291
- id,
292
- NULL,
293
- "traffic",
294
- "iis.website_ftp_file_transfer_rate",
295
- "Website FTP file transfer rate",
296
- "files/s",
297
- PLUGIN_WINDOWS_NAME,
298
- "PerflibWebService",
299
- PRIO_WEBSITE_IIS_FTP_FILE_TRANSFER_RATE,
300
- update_every,
301
- RRDSET_TYPE_LINE);
301
+ rrddim_set_by_pointer(
302
+ p->st_file_transfer, p->rd_files_received, (collected_number)p->IISFilesReceivedTotal.current.Data);
303
+ rrddim_set_by_pointer(
304
+ p->st_file_transfer, p->rd_files_sent, (collected_number)p->IISFilesSentTotal.current.Data);
305
303
- p->rd_files_received =
304
- rrddim_add(p->st_file_transfer, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
305
- p->rd_files_sent = rrddim_add(p->st_file_transfer, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
306
- rrdlabels_add(p->st_file_transfer->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
307
- }
306
+ rrdset_done(p->st_file_transfer);
307
+ }
308
+}
309
309
- rrddim_set_by_pointer(
310
- p->st_file_transfer, p->rd_files_received, (collected_number)p->IISFilesReceivedTotal.current.Data);
311
- rrddim_set_by_pointer(
312
- p->st_file_transfer, p->rd_files_sent, (collected_number)p->IISFilesSentTotal.current.Data);
310
+static inline void netdata_webservice_active_connection(
311
+ PERF_DATA_BLOCK *pDataBlock,
312
+ PERF_OBJECT_TYPE *pObjectType,
313
+ PERF_INSTANCE_DEFINITION *pi,
314
+ struct web_service *p,
315
+ int update_every)
316
+{
317
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISCurrentConnections)) {
318
+ if (!p->st_curr_connections) {
319
+ char id[RRD_ID_LENGTH_MAX + 1];
320
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_active_connections_count", windows_shared_buffer);
321
+ netdata_fix_chart_name(id);
322
+ p->st_curr_connections = rrdset_create_localhost(
323
+ "iis",
324
+ id,
325
+ NULL,
326
+ "connections",
327
+ "iis.website_active_connections_count",
328
+ "Website active connections",
329
+ "connections",
330
+ PLUGIN_WINDOWS_NAME,
331
+ "PerflibWebService1",
332
+ PRIO_WEBSITE_IIS_ACTIVE_CONNECTIONS_COUNT,
333
+ update_every,
334
+ RRDSET_TYPE_LINE);
335
314
- rrdset_done(p->st_file_transfer);
336
+ p->rd_curr_connections = rrddim_add(p->st_curr_connections, "active", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
337
+ rrdlabels_add(p->st_curr_connections->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
338
}
339
317
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISCurrentConnections)) {
318
- if (!p->st_curr_connections) {
319
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_active_connections_count", windows_shared_buffer);
320
- netdata_fix_chart_name(id);
321
- p->st_curr_connections = rrdset_create_localhost(
322
- "iis",
323
- id,
324
- NULL,
325
- "connections",
326
- "iis.website_active_connections_count",
327
- "Website active connections",
328
- "connections",
329
- PLUGIN_WINDOWS_NAME,
330
- "PerflibWebService1",
331
- PRIO_WEBSITE_IIS_ACTIVE_CONNECTIONS_COUNT,
332
- update_every,
333
- RRDSET_TYPE_LINE);
340
+ rrddim_set_by_pointer(
341
+ p->st_curr_connections, p->rd_curr_connections, (collected_number)p->IISCurrentConnections.current.Data);
342
335
- p->rd_curr_connections =
336
- rrddim_add(p->st_curr_connections, "active", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
337
- rrdlabels_add(p->st_curr_connections->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
338
- }
343
+ rrdset_done(p->st_curr_connections);
344
+ }
345
+}
346
340
- rrddim_set_by_pointer(
341
- p->st_curr_connections,
342
- p->rd_curr_connections,
343
- (collected_number)p->IISCurrentConnections.current.Data);
347
+static inline void netdata_webservice_connection_attemp_rate(
348
+ PERF_DATA_BLOCK *pDataBlock,
349
+ PERF_OBJECT_TYPE *pObjectType,
350
+ PERF_INSTANCE_DEFINITION *pi,
351
+ struct web_service *p,
352
+ int update_every)
353
+{
354
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISConnAttemptsAllInstancesTotal)) {
355
+ if (!p->st_connections_attemps) {
356
+ char id[RRD_ID_LENGTH_MAX + 1];
357
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_connection_attempts_rate", windows_shared_buffer);
358
+ netdata_fix_chart_name(id);
359
+ p->st_connections_attemps = rrdset_create_localhost(
360
+ "iis",
361
+ id,
362
+ NULL,
363
+ "connections",
364
+ "iis.website_connection_attempts_rate",
365
+ "Website connections attempts",
366
+ "attempts/s",
367
+ PLUGIN_WINDOWS_NAME,
368
+ "PerflibWebService",
369
+ PRIO_WEBSITE_IIS_CONNECTIONS_ATTEMP,
370
+ update_every,
371
+ RRDSET_TYPE_LINE);
372
345
- rrdset_done(p->st_curr_connections);
373
+ p->rd_connections_attemps =
374
+ rrddim_add(p->st_connections_attemps, "connection", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
375
+
376
+ rrdlabels_add(p->st_connections_attemps->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
377
}
378
348
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISConnAttemptsAllInstancesTotal)) {
349
- if (!p->st_connections_attemps) {
350
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_connection_attempts_rate", windows_shared_buffer);
351
- netdata_fix_chart_name(id);
352
- p->st_connections_attemps = rrdset_create_localhost(
353
- "iis",
354
- id,
355
- NULL,
356
- "connections",
357
- "iis.website_connection_attempts_rate",
358
- "Website connections attempts",
359
- "attempts/s",
360
- PLUGIN_WINDOWS_NAME,
361
- "PerflibWebService",
362
- PRIO_WEBSITE_IIS_CONNECTIONS_ATTEMP,
363
- update_every,
364
- RRDSET_TYPE_LINE);
379
+ rrddim_set_by_pointer(
380
+ p->st_connections_attemps,
381
+ p->rd_connections_attemps,
382
+ (collected_number)p->IISCurrentConnections.current.Data);
383
366
- p->rd_connections_attemps =
367
- rrddim_add(p->st_connections_attemps, "connection", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
384
+ rrdset_done(p->st_connections_attemps);
385
+ }
386
+}
387
369
- rrdlabels_add(
370
- p->st_connections_attemps->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
371
- }
388
+static inline void netdata_webservice_user_count(
389
+ PERF_DATA_BLOCK *pDataBlock,
390
+ PERF_OBJECT_TYPE *pObjectType,
391
+ PERF_INSTANCE_DEFINITION *pi,
392
+ struct web_service *p,
393
+ int update_every)
394
+{
395
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISCurrentAnonymousUser) &&
396
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISCurrentNonAnonymousUsers)) {
397
+ if (!p->st_user_count) {
398
+ char id[RRD_ID_LENGTH_MAX + 1];
399
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_users_count", windows_shared_buffer);
400
+ netdata_fix_chart_name(id);
401
+ p->st_user_count = rrdset_create_localhost(
402
+ "iis",
403
+ id,
404
+ NULL,
405
+ "requests",
406
+ "iis.website_users_count",
407
+ "Website users with pending requests",
408
+ "users",
409
+ PLUGIN_WINDOWS_NAME,
410
+ "PerflibWebService",
411
+ PRIO_WEBSITE_IIS_USERS,
412
+ update_every,
413
+ RRDSET_TYPE_STACKED);
414
373
- rrddim_set_by_pointer(
374
- p->st_connections_attemps,
375
- p->rd_connections_attemps,
376
- (collected_number)p->IISCurrentConnections.current.Data);
415
+ p->rd_user_anonymous = rrddim_add(p->st_user_count, "anonymous", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
416
+ p->rd_user_nonanonymous = rrddim_add(p->st_user_count, "non_anonymous", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
417
378
- rrdset_done(p->st_connections_attemps);
418
+ rrdlabels_add(p->st_user_count->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
419
}
420
381
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISCurrentAnonymousUser) &&
382
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISCurrentNonAnonymousUsers)) {
383
- if (!p->st_user_count) {
384
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_users_count", windows_shared_buffer);
385
- netdata_fix_chart_name(id);
386
- p->st_user_count = rrdset_create_localhost(
387
- "iis",
388
- id,
389
- NULL,
390
- "requests",
391
- "iis.website_users_count",
392
- "Website users with pending requests",
393
- "users",
394
- PLUGIN_WINDOWS_NAME,
395
- "PerflibWebService",
396
- PRIO_WEBSITE_IIS_USERS,
397
- update_every,
398
- RRDSET_TYPE_STACKED);
421
+ rrddim_set_by_pointer(
422
+ p->st_user_count, p->rd_user_anonymous, (collected_number)p->IISCurrentAnonymousUser.current.Data);
423
400
- p->rd_user_anonymous = rrddim_add(p->st_user_count, "anonymous", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
401
- p->rd_user_nonanonymous =
402
- rrddim_add(p->st_user_count, "non_anonymous", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
424
+ rrddim_set_by_pointer(
425
+ p->st_user_count, p->rd_user_nonanonymous, (collected_number)p->IISCurrentNonAnonymousUsers.current.Data);
426
404
- rrdlabels_add(p->st_user_count->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
405
- }
427
+ rrdset_done(p->st_user_count);
428
+ }
429
+}
430
407
- rrddim_set_by_pointer(
408
- p->st_user_count, p->rd_user_anonymous, (collected_number)p->IISCurrentAnonymousUser.current.Data);
431
+static inline void netdata_webservice_isapi_extension_request_count(
432
+ PERF_DATA_BLOCK *pDataBlock,
433
+ PERF_OBJECT_TYPE *pObjectType,
434
+ PERF_INSTANCE_DEFINITION *pi,
435
+ struct web_service *p,
436
+ int update_every)
437
+{
438
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISCurrentISAPIExtRequests)) {
439
+ if (!p->st_isapi_extension_request_count) {
440
+ char id[RRD_ID_LENGTH_MAX + 1];
441
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_isapi_extension_requests_count", windows_shared_buffer);
442
+ netdata_fix_chart_name(id);
443
+ p->st_isapi_extension_request_count = rrdset_create_localhost(
444
+ "iis",
445
+ id,
446
+ NULL,
447
+ "requests",
448
+ "iis.website_isapi_extension_requests_count",
449
+ "ISAPI extension requests",
450
+ "requests",
451
+ PLUGIN_WINDOWS_NAME,
452
+ "PerflibWebService",
453
+ PRIO_WEBSITE_IIS_ISAPI_EXT_REQUEST_COUNT,
454
+ update_every,
455
+ RRDSET_TYPE_LINE);
456
410
- rrddim_set_by_pointer(
411
- p->st_user_count,
412
- p->rd_user_nonanonymous,
413
- (collected_number)p->IISCurrentNonAnonymousUsers.current.Data);
457
+ p->rd_isapi_extension_request_count =
458
+ rrddim_add(p->st_isapi_extension_request_count, "isapi", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
459
415
- rrdset_done(p->st_user_count);
460
+ rrdlabels_add(
461
+ p->st_isapi_extension_request_count->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
462
}
463
418
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISCurrentISAPIExtRequests)) {
419
- if (!p->st_isapi_extension_request_count) {
420
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_isapi_extension_requests_count", windows_shared_buffer);
421
- netdata_fix_chart_name(id);
422
- p->st_isapi_extension_request_count = rrdset_create_localhost(
423
- "iis",
424
- id,
425
- NULL,
426
- "requests",
427
- "iis.website_isapi_extension_requests_count",
428
- "ISAPI extension requests",
429
- "requests",
430
- PLUGIN_WINDOWS_NAME,
431
- "PerflibWebService",
432
- PRIO_WEBSITE_IIS_ISAPI_EXT_REQUEST_COUNT,
433
- update_every,
434
- RRDSET_TYPE_LINE);
464
+ rrddim_set_by_pointer(
465
+ p->st_isapi_extension_request_count,
466
+ p->rd_isapi_extension_request_count,
467
+ (collected_number)p->IISCurrentISAPIExtRequests.current.Data);
468
436
- p->rd_isapi_extension_request_count =
437
- rrddim_add(p->st_isapi_extension_request_count, "isapi", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
469
+ rrdset_done(p->st_isapi_extension_request_count);
470
+ }
471
+}
472
439
- rrdlabels_add(
440
- p->st_isapi_extension_request_count->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
441
- }
473
+static inline void netdata_webservice_isapi_extension_request_rate(
474
+ PERF_DATA_BLOCK *pDataBlock,
475
+ PERF_OBJECT_TYPE *pObjectType,
476
+ PERF_INSTANCE_DEFINITION *pi,
477
+ struct web_service *p,
478
+ int update_every)
479
+{
480
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISIPAPIExtRequestsTotal)) {
481
+ if (!p->st_isapi_extension_request_rate) {
482
+ char id[RRD_ID_LENGTH_MAX + 1];
483
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_isapi_extension_requests_rate", windows_shared_buffer);
484
+ netdata_fix_chart_name(id);
485
+ p->st_isapi_extension_request_rate = rrdset_create_localhost(
486
+ "iis",
487
+ id,
488
+ NULL,
489
+ "requests",
490
+ "iis.website_isapi_extension_requests_rate",
491
+ "Website extensions request",
492
+ "requests/s",
493
+ PLUGIN_WINDOWS_NAME,
494
+ "PerflibWebService",
495
+ PRIO_WEBSITE_IIS_ISAPI_EXT_REQUEST_RATE,
496
+ update_every,
497
+ RRDSET_TYPE_LINE);
498
443
- rrddim_set_by_pointer(
444
- p->st_isapi_extension_request_count,
445
- p->rd_isapi_extension_request_count,
446
- (collected_number)p->IISCurrentISAPIExtRequests.current.Data);
499
+ p->rd_isapi_extension_request_rate =
500
+ rrddim_add(p->st_isapi_extension_request_rate, "isapi", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
501
448
- rrdset_done(p->st_isapi_extension_request_count);
502
+ rrdlabels_add(
503
+ p->st_isapi_extension_request_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
504
}
505
451
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISIPAPIExtRequestsTotal)) {
452
- if (!p->st_isapi_extension_request_rate) {
453
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_isapi_extension_requests_rate", windows_shared_buffer);
454
- netdata_fix_chart_name(id);
455
- p->st_isapi_extension_request_rate = rrdset_create_localhost(
456
- "iis",
457
- id,
458
- NULL,
459
- "requests",
460
- "iis.website_isapi_extension_requests_rate",
461
- "Website extensions request",
462
- "requests/s",
463
- PLUGIN_WINDOWS_NAME,
464
- "PerflibWebService",
465
- PRIO_WEBSITE_IIS_ISAPI_EXT_REQUEST_RATE,
466
- update_every,
467
- RRDSET_TYPE_LINE);
506
+ rrddim_set_by_pointer(
507
+ p->st_isapi_extension_request_rate,
508
+ p->rd_isapi_extension_request_rate,
509
+ (collected_number)p->IISIPAPIExtRequestsTotal.current.Data);
510
469
- p->rd_isapi_extension_request_rate =
470
- rrddim_add(p->st_isapi_extension_request_rate, "isapi", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
511
+ rrdset_done(p->st_isapi_extension_request_rate);
512
+ }
513
+}
514
472
- rrdlabels_add(
473
- p->st_isapi_extension_request_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
474
- }
515
+static inline void netdata_webservice_errors_rate(
516
+ PERF_DATA_BLOCK *pDataBlock,
517
+ PERF_OBJECT_TYPE *pObjectType,
518
+ PERF_INSTANCE_DEFINITION *pi,
519
+ struct web_service *p,
520
+ int update_every)
521
+{
522
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISLockedErrorsTotal) &&
523
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISNotFoundErrorsTotal)) {
524
+ if (!p->st_error_rate) {
525
+ char id[RRD_ID_LENGTH_MAX + 1];
526
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_errors_rate", windows_shared_buffer);
527
+ netdata_fix_chart_name(id);
528
+ p->st_error_rate = rrdset_create_localhost(
529
+ "iis",
530
+ id,
531
+ NULL,
532
+ "requests",
533
+ "iis.website_errors_rate",
534
+ "Website errors",
535
+ "errors/s",
536
+ PLUGIN_WINDOWS_NAME,
537
+ "PerflibWebService",
538
+ PRIO_WEBSITE_IIS_USERS,
539
+ update_every,
540
+ RRDSET_TYPE_STACKED);
541
476
- rrddim_set_by_pointer(
477
- p->st_isapi_extension_request_rate,
478
- p->rd_isapi_extension_request_rate,
479
- (collected_number)p->IISIPAPIExtRequestsTotal.current.Data);
542
+ p->rd_error_rate_locked =
543
+ rrddim_add(p->st_error_rate, "document_locked", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
544
+ p->rd_error_rate_not_found =
545
+ rrddim_add(p->st_error_rate, "document_not_found", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
546
481
- rrdset_done(p->st_isapi_extension_request_rate);
547
+ rrdlabels_add(p->st_error_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
548
}
549
484
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISLockedErrorsTotal) &&
485
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISNotFoundErrorsTotal)) {
486
- if (!p->st_error_rate) {
487
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_errors_rate", windows_shared_buffer);
488
- netdata_fix_chart_name(id);
489
- p->st_error_rate = rrdset_create_localhost(
490
- "iis",
491
- id,
492
- NULL,
493
- "requests",
494
- "iis.website_errors_rate",
495
- "Website errors",
496
- "errors/s",
497
- PLUGIN_WINDOWS_NAME,
498
- "PerflibWebService",
499
- PRIO_WEBSITE_IIS_USERS,
500
- update_every,
501
- RRDSET_TYPE_STACKED);
550
+ rrddim_set_by_pointer(
551
+ p->st_error_rate, p->rd_error_rate_locked, (collected_number)p->IISLockedErrorsTotal.current.Data);
552
503
- p->rd_error_rate_locked =
504
- rrddim_add(p->st_error_rate, "document_locked", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
505
- p->rd_error_rate_not_found =
506
- rrddim_add(p->st_error_rate, "document_not_found", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
553
+ rrddim_set_by_pointer(
554
+ p->st_error_rate, p->rd_error_rate_not_found, (collected_number)p->IISNotFoundErrorsTotal.current.Data);
555
508
- rrdlabels_add(p->st_error_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
509
- }
556
+ rrdset_done(p->st_error_rate);
557
+ }
558
+}
559
511
- rrddim_set_by_pointer(
512
- p->st_error_rate, p->rd_error_rate_locked, (collected_number)p->IISLockedErrorsTotal.current.Data);
560
+static inline void netdata_webservice_logon_attemp_rate(
561
+ PERF_DATA_BLOCK *pDataBlock,
562
+ PERF_OBJECT_TYPE *pObjectType,
563
+ PERF_INSTANCE_DEFINITION *pi,
564
+ struct web_service *p,
565
+ int update_every)
566
+{
567
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISLogonAttemptsTotal)) {
568
+ if (!p->st_logon_attemps) {
569
+ char id[RRD_ID_LENGTH_MAX + 1];
570
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_logon_attempts_rate", windows_shared_buffer);
571
+ netdata_fix_chart_name(id);
572
+ p->st_logon_attemps = rrdset_create_localhost(
573
+ "iis",
574
+ id,
575
+ NULL,
576
+ "logon",
577
+ "iis.website_logon_attempts_rate",
578
+ "Website logon attempts",
579
+ "attempts/s",
580
+ PLUGIN_WINDOWS_NAME,
581
+ "PerflibWebService",
582
+ PRIO_WEBSITE_IIS_LOGON_ATTEMPTS,
583
+ update_every,
584
+ RRDSET_TYPE_LINE);
585
514
- rrddim_set_by_pointer(
515
- p->st_error_rate, p->rd_error_rate_not_found, (collected_number)p->IISNotFoundErrorsTotal.current.Data);
586
+ p->rd_logon_attemps = rrddim_add(p->st_logon_attemps, "logon", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
587
517
- rrdset_done(p->st_error_rate);
588
+ rrdlabels_add(p->st_logon_attemps->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
589
}
590
520
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISLogonAttemptsTotal)) {
521
- if (!p->st_logon_attemps) {
522
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_logon_attempts_rate", windows_shared_buffer);
523
- netdata_fix_chart_name(id);
524
- p->st_logon_attemps = rrdset_create_localhost(
525
- "iis",
526
- id,
527
- NULL,
528
- "logon",
529
- "iis.website_logon_attempts_rate",
530
- "Website logon attempts",
531
- "attempts/s",
532
- PLUGIN_WINDOWS_NAME,
533
- "PerflibWebService",
534
- PRIO_WEBSITE_IIS_LOGON_ATTEMPTS,
535
- update_every,
536
- RRDSET_TYPE_LINE);
591
+ rrddim_set_by_pointer(
592
+ p->st_logon_attemps, p->rd_logon_attemps, (collected_number)p->IISLogonAttemptsTotal.current.Data);
593
538
- p->rd_logon_attemps = rrddim_add(p->st_logon_attemps, "logon", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
594
+ rrdset_done(p->st_logon_attemps);
595
+ }
596
+}
597
540
- rrdlabels_add(p->st_logon_attemps->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
541
- }
598
+static inline void netdata_webservice_uptime(
599
+ PERF_DATA_BLOCK *pDataBlock,
600
+ PERF_OBJECT_TYPE *pObjectType,
601
+ PERF_INSTANCE_DEFINITION *pi,
602
+ struct web_service *p,
603
+ int update_every)
604
+{
605
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISUptime)) {
606
+ if (!p->st_service_uptime) {
607
+ char id[RRD_ID_LENGTH_MAX + 1];
608
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_uptime", windows_shared_buffer);
609
+ netdata_fix_chart_name(id);
610
+ p->st_service_uptime = rrdset_create_localhost(
611
+ "iis",
612
+ id,
613
+ NULL,
614
+ "uptime",
615
+ "iis.website_uptime",
616
+ "Website uptime",
617
+ "seconds",
618
+ PLUGIN_WINDOWS_NAME,
619
+ "PerflibWebService",
620
+ PRIO_WEBSITE_IIS_UPTIME,
621
+ update_every,
622
+ RRDSET_TYPE_LINE);
623
543
- rrddim_set_by_pointer(
544
- p->st_logon_attemps, p->rd_logon_attemps, (collected_number)p->IISLogonAttemptsTotal.current.Data);
624
+ p->rd_service_uptime = rrddim_add(p->st_service_uptime, "uptime", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
625
546
- rrdset_done(p->st_logon_attemps);
626
+ rrdlabels_add(p->st_service_uptime->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
627
}
628
549
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISUptime)) {
550
- if (!p->st_service_uptime) {
551
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_uptime", windows_shared_buffer);
552
- netdata_fix_chart_name(id);
553
- p->st_service_uptime = rrdset_create_localhost(
554
- "iis",
555
- id,
556
- NULL,
557
- "uptime",
558
- "iis.website_uptime",
559
- "Website uptime",
560
- "seconds",
561
- PLUGIN_WINDOWS_NAME,
562
- "PerflibWebService",
563
- PRIO_WEBSITE_IIS_UPTIME,
564
- update_every,
565
- RRDSET_TYPE_LINE);
629
+ rrddim_set_by_pointer(p->st_service_uptime, p->rd_service_uptime, (collected_number)p->IISUptime.current.Data);
630
567
- p->rd_service_uptime = rrddim_add(p->st_service_uptime, "uptime", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
631
+ rrdset_done(p->st_service_uptime);
632
+ }
633
+}
634
569
- rrdlabels_add(p->st_service_uptime->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
570
- }
635
+static inline void netdata_webservice_requests(
636
+ PERF_DATA_BLOCK *pDataBlock,
637
+ PERF_OBJECT_TYPE *pObjectType,
638
+ PERF_INSTANCE_DEFINITION *pi,
639
+ struct web_service *p,
640
+ int update_every)
641
+{
642
+ if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsOptions) &&
643
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsGet) &&
644
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsPost) &&
645
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsHead) &&
646
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsPut) &&
647
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsDelete) &&
648
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsTrace) &&
649
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsMove) &&
650
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsCopy) &&
651
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsMkcol) &&
652
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsPropfind) &&
653
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsProppatch) &&
654
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsSearch) &&
655
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsLock) &&
656
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsUnlock) &&
657
+ perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsOther)) {
658
+ char id[RRD_ID_LENGTH_MAX + 1];
659
+ if (!p->st_request_rate) {
660
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_requests_rate", windows_shared_buffer);
661
+ netdata_fix_chart_name(id);
662
+ p->st_request_rate = rrdset_create_localhost(
663
+ "iis",
664
+ id,
665
+ NULL,
666
+ "requests",
667
+ "iis.website_requests_rate",
668
+ "Website requests rate",
669
+ "requests/s",
670
+ PLUGIN_WINDOWS_NAME,
671
+ "PerflibWebService",
672
+ PRIO_WEBSITE_IIS_REQUESTS_RATE,
673
+ update_every,
674
+ RRDSET_TYPE_LINE);
675
572
- rrddim_set_by_pointer(
573
- p->st_service_uptime, p->rd_service_uptime, (collected_number)p->IISUptime.current.Data);
676
+ p->rd_request_rate = rrddim_add(p->st_request_rate, "requests", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
677
575
- rrdset_done(p->st_service_uptime);
678
+ rrdlabels_add(p->st_request_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
679
}
680
578
- if (perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsOptions) &&
579
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsGet) &&
580
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsPost) &&
581
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsHead) &&
582
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsPut) &&
583
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsDelete) &&
584
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsTrace) &&
585
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsMove) &&
586
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsCopy) &&
587
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsMkcol) &&
588
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsPropfind) &&
589
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsProppatch) &&
590
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsSearch) &&
591
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsLock) &&
592
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsUnlock) &&
593
- perflibGetInstanceCounter(pDataBlock, pObjectType, pi, &p->IISRequestsOther)) {
594
- if (!p->st_request_rate) {
595
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_requests_rate", windows_shared_buffer);
596
- netdata_fix_chart_name(id);
597
- p->st_request_rate = rrdset_create_localhost(
598
- "iis",
599
- id,
600
- NULL,
601
- "requests",
602
- "iis.website_requests_rate",
603
- "Website requests rate",
604
- "requests/s",
605
- PLUGIN_WINDOWS_NAME,
606
- "PerflibWebService",
607
- PRIO_WEBSITE_IIS_REQUESTS_RATE,
608
- update_every,
609
- RRDSET_TYPE_LINE);
681
+ uint64_t requests =
682
+ p->IISRequestsOptions.current.Data + p->IISRequestsGet.current.Data + p->IISRequestsPost.current.Data +
683
+ p->IISRequestsHead.current.Data + p->IISRequestsPut.current.Data + p->IISRequestsDelete.current.Data +
684
+ p->IISRequestsTrace.current.Data + p->IISRequestsMove.current.Data + p->IISRequestsCopy.current.Data +
685
+ p->IISRequestsMkcol.current.Data + p->IISRequestsPropfind.current.Data +
686
+ p->IISRequestsProppatch.current.Data + p->IISRequestsSearch.current.Data + p->IISRequestsLock.current.Data +
687
+ p->IISRequestsUnlock.current.Data + p->IISRequestsOther.current.Data;
688
611
- p->rd_request_rate = rrddim_add(p->st_request_rate, "requests", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
689
+ rrddim_set_by_pointer(p->st_request_rate, p->rd_request_rate, (collected_number)requests);
690
613
- rrdlabels_add(p->st_request_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
614
- }
691
+ rrdset_done(p->st_request_rate);
692
616
- uint64_t requests =
617
- p->IISRequestsOptions.current.Data + p->IISRequestsGet.current.Data + p->IISRequestsPost.current.Data +
618
- p->IISRequestsHead.current.Data + p->IISRequestsPut.current.Data + p->IISRequestsDelete.current.Data +
619
- p->IISRequestsTrace.current.Data + p->IISRequestsMove.current.Data + p->IISRequestsCopy.current.Data +
620
- p->IISRequestsMkcol.current.Data + p->IISRequestsPropfind.current.Data +
621
- p->IISRequestsProppatch.current.Data + p->IISRequestsSearch.current.Data +
622
- p->IISRequestsLock.current.Data + p->IISRequestsUnlock.current.Data + p->IISRequestsOther.current.Data;
693
+ if (!p->st_request_by_type_rate) {
694
+ snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_requests_by_type_rate", windows_shared_buffer);
695
+ netdata_fix_chart_name(id);
696
+ p->st_request_by_type_rate = rrdset_create_localhost(
697
+ "iis",
698
+ id,
699
+ NULL,
700
+ "requests",
701
+ "iis.website_requests_by_type_rate",
702
+ "Website requests rate",
703
+ "requests/s",
704
+ PLUGIN_WINDOWS_NAME,
705
+ "PerflibWebService",
706
+ PRIO_WEBSITE_IIS_REQUESTS_BY_TYPE_RATE,
707
+ update_every,
708
+ RRDSET_TYPE_STACKED);
709
+
710
+ p->rd_request_options_rate =
711
+ rrddim_add(p->st_request_by_type_rate, "options", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
712
+ p->rd_request_get_rate =
713
+ rrddim_add(p->st_request_by_type_rate, "get", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
714
+ p->rd_request_post_rate =
715
+ rrddim_add(p->st_request_by_type_rate, "post", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
716
+ p->rd_request_head_rate =
717
+ rrddim_add(p->st_request_by_type_rate, "head", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
718
+ p->rd_request_put_rate =
719
+ rrddim_add(p->st_request_by_type_rate, "put", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
720
+ p->rd_request_delete_rate =
721
+ rrddim_add(p->st_request_by_type_rate, "delete", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
722
+ p->rd_request_trace_rate =
723
+ rrddim_add(p->st_request_by_type_rate, "trace", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
724
+ p->rd_request_move_rate =
725
+ rrddim_add(p->st_request_by_type_rate, "move", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
726
+ p->rd_request_copy_rate =
727
+ rrddim_add(p->st_request_by_type_rate, "copy", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
728
+ p->rd_request_mkcol_rate =
729
+ rrddim_add(p->st_request_by_type_rate, "mkcol", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
730
+ p->rd_request_propfind_rate =
731
+ rrddim_add(p->st_request_by_type_rate, "propfind", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
732
+ p->rd_request_proppatch_rate =
733
+ rrddim_add(p->st_request_by_type_rate, "proppatch", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
734
+ p->rd_request_search_rate =
735
+ rrddim_add(p->st_request_by_type_rate, "search", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
736
+ p->rd_request_lock_rate =
737
+ rrddim_add(p->st_request_by_type_rate, "lock", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
738
+ p->rd_request_unlock_rate =
739
+ rrddim_add(p->st_request_by_type_rate, "unlock", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
740
+ p->rd_request_other_rate =
741
+ rrddim_add(p->st_request_by_type_rate, "other", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
742
+
743
+ rrdlabels_add(p->st_request_by_type_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
744
+ }
745
624
- rrddim_set_by_pointer(p->st_request_rate, p->rd_request_rate, (collected_number)requests);
746
+ rrddim_set_by_pointer(
747
+ p->st_request_by_type_rate,
748
+ p->rd_request_options_rate,
749
+ (collected_number)p->IISRequestsOptions.current.Data);
750
+ rrddim_set_by_pointer(
751
+ p->st_request_by_type_rate, p->rd_request_get_rate, (collected_number)p->IISRequestsGet.current.Data);
752
+ rrddim_set_by_pointer(
753
+ p->st_request_by_type_rate, p->rd_request_post_rate, (collected_number)p->IISRequestsPost.current.Data);
754
+ rrddim_set_by_pointer(
755
+ p->st_request_by_type_rate, p->rd_request_head_rate, (collected_number)p->IISRequestsHead.current.Data);
756
+ rrddim_set_by_pointer(
757
+ p->st_request_by_type_rate, p->rd_request_put_rate, (collected_number)p->IISRequestsPut.current.Data);
758
+ rrddim_set_by_pointer(
759
+ p->st_request_by_type_rate, p->rd_request_delete_rate, (collected_number)p->IISRequestsDelete.current.Data);
760
+ rrddim_set_by_pointer(
761
+ p->st_request_by_type_rate, p->rd_request_trace_rate, (collected_number)p->IISRequestsTrace.current.Data);
762
+ rrddim_set_by_pointer(
763
+ p->st_request_by_type_rate, p->rd_request_move_rate, (collected_number)p->IISRequestsMove.current.Data);
764
+ rrddim_set_by_pointer(
765
+ p->st_request_by_type_rate, p->rd_request_copy_rate, (collected_number)p->IISRequestsCopy.current.Data);
766
+ rrddim_set_by_pointer(
767
+ p->st_request_by_type_rate, p->rd_request_mkcol_rate, (collected_number)p->IISRequestsMkcol.current.Data);
768
+ rrddim_set_by_pointer(
769
+ p->st_request_by_type_rate,
770
+ p->rd_request_propfind_rate,
771
+ (collected_number)p->IISRequestsPropfind.current.Data);
772
+ rrddim_set_by_pointer(
773
+ p->st_request_by_type_rate,
774
+ p->rd_request_proppatch_rate,
775
+ (collected_number)p->IISRequestsProppatch.current.Data);
776
+ rrddim_set_by_pointer(
777
+ p->st_request_by_type_rate, p->rd_request_search_rate, (collected_number)p->IISRequestsSearch.current.Data);
778
+ rrddim_set_by_pointer(
779
+ p->st_request_by_type_rate, p->rd_request_lock_rate, (collected_number)p->IISRequestsLock.current.Data);
780
+ rrddim_set_by_pointer(
781
+ p->st_request_by_type_rate, p->rd_request_unlock_rate, (collected_number)p->IISRequestsUnlock.current.Data);
782
+ rrddim_set_by_pointer(
783
+ p->st_request_by_type_rate, p->rd_request_other_rate, (collected_number)p->IISRequestsOther.current.Data);
784
626
- rrdset_done(p->st_request_rate);
785
+ rrdset_done(p->st_request_by_type_rate);
786
+ }
787
+}
788
628
- if (!p->st_request_by_type_rate) {
629
- snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_requests_by_type_rate", windows_shared_buffer);
630
- netdata_fix_chart_name(id);
631
- p->st_request_by_type_rate = rrdset_create_localhost(
632
- "iis",
633
- id,
634
- NULL,
635
- "requests",
636
- "iis.website_requests_by_type_rate",
637
- "Website requests rate",
638
- "requests/s",
639
- PLUGIN_WINDOWS_NAME,
640
- "PerflibWebService",
641
- PRIO_WEBSITE_IIS_REQUESTS_BY_TYPE_RATE,
642
- update_every,
643
- RRDSET_TYPE_STACKED);
644
-
645
- p->rd_request_options_rate =
646
- rrddim_add(p->st_request_by_type_rate, "options", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
647
- p->rd_request_get_rate =
648
- rrddim_add(p->st_request_by_type_rate, "get", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
649
- p->rd_request_post_rate =
650
- rrddim_add(p->st_request_by_type_rate, "post", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
651
- p->rd_request_head_rate =
652
- rrddim_add(p->st_request_by_type_rate, "head", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
653
- p->rd_request_put_rate =
654
- rrddim_add(p->st_request_by_type_rate, "put", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
655
- p->rd_request_delete_rate =
656
- rrddim_add(p->st_request_by_type_rate, "delete", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
657
- p->rd_request_trace_rate =
658
- rrddim_add(p->st_request_by_type_rate, "trace", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
659
- p->rd_request_move_rate =
660
- rrddim_add(p->st_request_by_type_rate, "move", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
661
- p->rd_request_copy_rate =
662
- rrddim_add(p->st_request_by_type_rate, "copy", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
663
- p->rd_request_mkcol_rate =
664
- rrddim_add(p->st_request_by_type_rate, "mkcol", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
665
- p->rd_request_propfind_rate =
666
- rrddim_add(p->st_request_by_type_rate, "propfind", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
667
- p->rd_request_proppatch_rate =
668
- rrddim_add(p->st_request_by_type_rate, "proppatch", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
669
- p->rd_request_search_rate =
670
- rrddim_add(p->st_request_by_type_rate, "search", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
671
- p->rd_request_lock_rate =
672
- rrddim_add(p->st_request_by_type_rate, "lock", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
673
- p->rd_request_unlock_rate =
674
- rrddim_add(p->st_request_by_type_rate, "unlock", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
675
- p->rd_request_other_rate =
676
- rrddim_add(p->st_request_by_type_rate, "other", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
789
+static bool do_web_services(PERF_DATA_BLOCK *pDataBlock, int update_every)
790
+{
791
+ PERF_OBJECT_TYPE *pObjectType = perflibFindObjectTypeByName(pDataBlock, "Web Service");
792
+ if (!pObjectType)
793
+ return false;
794
678
- rrdlabels_add(
679
- p->st_request_by_type_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
680
- }
795
+ PERF_INSTANCE_DEFINITION *pi = NULL;
796
+ for (LONG i = 0; i < pObjectType->NumInstances; i++) {
797
+ pi = perflibForEachInstance(pDataBlock, pObjectType, pi);
798
+ if (!pi)
799
+ break;
800
682
- rrddim_set_by_pointer(
683
- p->st_request_by_type_rate,
684
- p->rd_request_options_rate,
685
- (collected_number)p->IISRequestsOptions.current.Data);
686
- rrddim_set_by_pointer(
687
- p->st_request_by_type_rate, p->rd_request_get_rate, (collected_number)p->IISRequestsGet.current.Data);
688
- rrddim_set_by_pointer(
689
- p->st_request_by_type_rate, p->rd_request_post_rate, (collected_number)p->IISRequestsPost.current.Data);
690
- rrddim_set_by_pointer(
691
- p->st_request_by_type_rate, p->rd_request_head_rate, (collected_number)p->IISRequestsHead.current.Data);
692
- rrddim_set_by_pointer(
693
- p->st_request_by_type_rate, p->rd_request_put_rate, (collected_number)p->IISRequestsPut.current.Data);
694
- rrddim_set_by_pointer(
695
- p->st_request_by_type_rate,
696
- p->rd_request_delete_rate,
697
- (collected_number)p->IISRequestsDelete.current.Data);
698
- rrddim_set_by_pointer(
699
- p->st_request_by_type_rate,
700
- p->rd_request_trace_rate,
701
- (collected_number)p->IISRequestsTrace.current.Data);
702
- rrddim_set_by_pointer(
703
- p->st_request_by_type_rate, p->rd_request_move_rate, (collected_number)p->IISRequestsMove.current.Data);
704
- rrddim_set_by_pointer(
705
- p->st_request_by_type_rate, p->rd_request_copy_rate, (collected_number)p->IISRequestsCopy.current.Data);
706
- rrddim_set_by_pointer(
707
- p->st_request_by_type_rate,
708
- p->rd_request_mkcol_rate,
709
- (collected_number)p->IISRequestsMkcol.current.Data);
710
- rrddim_set_by_pointer(
711
- p->st_request_by_type_rate,
712
- p->rd_request_propfind_rate,
713
- (collected_number)p->IISRequestsPropfind.current.Data);
714
- rrddim_set_by_pointer(
715
- p->st_request_by_type_rate,
716
- p->rd_request_proppatch_rate,
717
- (collected_number)p->IISRequestsProppatch.current.Data);
718
- rrddim_set_by_pointer(
719
- p->st_request_by_type_rate,
720
- p->rd_request_search_rate,
721
- (collected_number)p->IISRequestsSearch.current.Data);
722
- rrddim_set_by_pointer(
723
- p->st_request_by_type_rate, p->rd_request_lock_rate, (collected_number)p->IISRequestsLock.current.Data);
724
- rrddim_set_by_pointer(
725
- p->st_request_by_type_rate,
726
- p->rd_request_unlock_rate,
727
- (collected_number)p->IISRequestsUnlock.current.Data);
728
- rrddim_set_by_pointer(
729
- p->st_request_by_type_rate,
730
- p->rd_request_other_rate,
731
- (collected_number)p->IISRequestsOther.current.Data);
801
+ if (!getInstanceName(pDataBlock, pObjectType, pi, windows_shared_buffer, sizeof(windows_shared_buffer)))
802
+ strncpyz(windows_shared_buffer, "[unknown]", sizeof(windows_shared_buffer) - 1);
803
733
- rrdset_done(p->st_request_by_type_rate);
804
+ // We are not ploting _Total here, because cloud will group the sites
805
+ if (strcasecmp(windows_shared_buffer, "_Total") == 0) {
806
+ continue;
807
}
808
+
809
+ struct web_service *p = dictionary_set(web_services, windows_shared_buffer, NULL, sizeof(*p));
810
+
811
+ netdata_webservice_traffic(pDataBlock, pObjectType, pi, p, update_every);
812
+ netdata_webservice_file_transfer_rate(pDataBlock, pObjectType, pi, p, update_every);
813
+ netdata_webservice_active_connection(pDataBlock, pObjectType, pi, p, update_every);
814
+ netdata_webservice_connection_attemp_rate(pDataBlock, pObjectType, pi, p, update_every);
815
+ netdata_webservice_user_count(pDataBlock, pObjectType, pi, p, update_every);
816
+ netdata_webservice_isapi_extension_request_count(pDataBlock, pObjectType, pi, p, update_every);
817
+ netdata_webservice_isapi_extension_request_rate(pDataBlock, pObjectType, pi, p, update_every);
818
+ netdata_webservice_errors_rate(pDataBlock, pObjectType, pi, p, update_every);
819
+ netdata_webservice_logon_attemp_rate(pDataBlock, pObjectType, pi, p, update_every);
820
+ netdata_webservice_uptime(pDataBlock, pObjectType, pi, p, update_every);
821
+ netdata_webservice_requests(pDataBlock, pObjectType, pi, p, update_every);
822
}
823
824
return true;