@cryptotaxi247 / netdata-1 / commits / 71c39b0f6

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;