@cryptotaxi247 / netdata-1 / commits / d5e61abf0

improvement(windows/iis): add requests by type chart (#19028)

Ilya Mashchenko committed Nov 15, 2024 at 22:23 UTC d5e61abf0d582c2ea1275554c41c87fec3fa219b
3 files changed +152 -8
src/collectors/windows.plugin/metadata.yaml
+21
@@ -366,6 +366,27 @@ modules:
366 chart_type: line
367 dimensions:
368 - name: requests
369 + - name: iis.website_requests_by_type_rate
370 + description: Website requests rate
371 + unit: "requests/s"
372 + chart_type: stacked
373 + dimensions:
374 + - name: options
375 + - name: get
376 + - name: post
377 + - name: head
378 + - name: put
379 + - name: delete
380 + - name: trace
381 + - name: move
382 + - name: copy
383 + - name: mkcol
384 + - name: propfind
385 + - name: proppatch
386 + - name: search
387 + - name: lock
388 + - name: unlock
389 + - name: other
390 - name: iis.website_active_connections_count
391 description: Website active connections
392 unit: "connections"
src/collectors/windows.plugin/perflib-web-service.c
+128 -6
@@ -4,6 +4,27 @@
4 #include "windows-internals.h"
5
6 struct web_service {
7 + RRDSET *st_request_rate;
8 + RRDDIM *rd_request_rate;
9 +
10 + RRDSET *st_request_by_type_rate;
11 + RRDDIM *rd_request_options_rate;
12 + RRDDIM *rd_request_get_rate;
13 + RRDDIM *rd_request_post_rate;
14 + RRDDIM *rd_request_head_rate;
15 + RRDDIM *rd_request_put_rate;
16 + RRDDIM *rd_request_delete_rate;
17 + RRDDIM *rd_request_trace_rate;
18 + RRDDIM *rd_request_move_rate;
19 + RRDDIM *rd_request_copy_rate;
20 + RRDDIM *rd_request_mkcol_rate;
21 + RRDDIM *rd_request_propfind_rate;
22 + RRDDIM *rd_request_proppatch_rate;
23 + RRDDIM *rd_request_search_rate;
24 + RRDDIM *rd_request_lock_rate;
25 + RRDDIM *rd_request_unlock_rate;
26 + RRDDIM *rd_request_other_rate;
27 +
28 RRDSET *st_traffic;
29 RRDDIM *rd_traffic_received;
30 RRDDIM *rd_traffic_sent;
@@ -38,9 +59,6 @@ struct web_service {
59 RRDSET *st_service_uptime;
60 RRDDIM *rd_service_uptime;
61
41 - RRDSET *st_request_rate;
42 - RRDDIM *rd_request_rate;
43 -
62 COUNTER_DATA IISCurrentAnonymousUser;
63 COUNTER_DATA IISCurrentNonAnonymousUsers;
64 COUNTER_DATA IISCurrentConnections;
@@ -292,9 +310,9 @@ static bool do_web_services(PERF_DATA_BLOCK *pDataBlock, int update_every) {
310 update_every,
311 RRDSET_TYPE_STACKED);
312
295 - p->rd_user_anonymous = rrddim_add(p->st_user_count, "anonymous", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
313 + p->rd_user_anonymous = rrddim_add(p->st_user_count, "anonymous", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
314 p->rd_user_nonanonymous =
297 - rrddim_add(p->st_user_count, "non_anonymous", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
315 + rrddim_add(p->st_user_count, "non_anonymous", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
316
317 rrdlabels_add(p->st_user_count->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
318 }
@@ -503,7 +521,7 @@ static bool do_web_services(PERF_DATA_BLOCK *pDataBlock, int update_every) {
521 update_every,
522 RRDSET_TYPE_LINE);
523
506 - p->rd_request_rate = rrddim_add(p->st_request_rate, "requests", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
524 + p->rd_request_rate = rrddim_add(p->st_request_rate, "requests", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
525
526 rrdlabels_add(p->st_request_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
527 }
@@ -519,6 +537,110 @@ static bool do_web_services(PERF_DATA_BLOCK *pDataBlock, int update_every) {
537 rrddim_set_by_pointer(p->st_request_rate, p->rd_request_rate, (collected_number)requests);
538
539 rrdset_done(p->st_request_rate);
540 +
541 + if (!p->st_request_by_type_rate) {
542 + snprintfz(id, RRD_ID_LENGTH_MAX, "website_%s_requests_by_type_rate", windows_shared_buffer);
543 + netdata_fix_chart_name(id);
544 + p->st_request_by_type_rate = rrdset_create_localhost(
545 + "iis",
546 + id,
547 + NULL,
548 + "requests",
549 + "iis.website_requests_by_type_rate",
550 + "Website requests rate",
551 + "requests/s",
552 + PLUGIN_WINDOWS_NAME,
553 + "PerflibWebService",
554 + PRIO_WEBSITE_IIS_REQUESTS_BY_TYPE_RATE,
555 + update_every,
556 + RRDSET_TYPE_STACKED);
557 +
558 + p->rd_request_options_rate = rrddim_add(p->st_request_by_type_rate, "options", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
559 + p->rd_request_get_rate = rrddim_add(p->st_request_by_type_rate, "get", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
560 + p->rd_request_post_rate = rrddim_add(p->st_request_by_type_rate, "post", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
561 + p->rd_request_head_rate = rrddim_add(p->st_request_by_type_rate, "head", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
562 + p->rd_request_put_rate = rrddim_add(p->st_request_by_type_rate, "put", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
563 + p->rd_request_delete_rate = rrddim_add(p->st_request_by_type_rate, "delete", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
564 + p->rd_request_trace_rate = rrddim_add(p->st_request_by_type_rate, "trace", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
565 + p->rd_request_move_rate = rrddim_add(p->st_request_by_type_rate, "move", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
566 + p->rd_request_copy_rate = rrddim_add(p->st_request_by_type_rate, "copy", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
567 + p->rd_request_mkcol_rate = rrddim_add(p->st_request_by_type_rate, "mkcol", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
568 + p->rd_request_propfind_rate = rrddim_add(p->st_request_by_type_rate, "propfind", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
569 + p->rd_request_proppatch_rate = rrddim_add(p->st_request_by_type_rate, "proppatch", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
570 + p->rd_request_search_rate = rrddim_add(p->st_request_by_type_rate, "search", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
571 + p->rd_request_lock_rate = rrddim_add(p->st_request_by_type_rate, "lock", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
572 + p->rd_request_unlock_rate = rrddim_add(p->st_request_by_type_rate, "unlock", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
573 + p->rd_request_other_rate = rrddim_add(p->st_request_by_type_rate, "other", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
574 +
575 + rrdlabels_add(p->st_request_by_type_rate->rrdlabels, "website", windows_shared_buffer, RRDLABEL_SRC_AUTO);
576 + }
577 +
578 + rrddim_set_by_pointer(
579 + p->st_request_by_type_rate,
580 + p->rd_request_options_rate,
581 + (collected_number)p->IISRequestsOptions.current.Data);
582 + rrddim_set_by_pointer(
583 + p->st_request_by_type_rate,
584 + p->rd_request_get_rate,
585 + (collected_number)p->IISRequestsGet.current.Data);
586 + rrddim_set_by_pointer(
587 + p->st_request_by_type_rate,
588 + p->rd_request_post_rate,
589 + (collected_number)p->IISRequestsPost.current.Data);
590 + rrddim_set_by_pointer(
591 + p->st_request_by_type_rate,
592 + p->rd_request_head_rate,
593 + (collected_number)p->IISRequestsHead.current.Data);
594 + rrddim_set_by_pointer(
595 + p->st_request_by_type_rate,
596 + p->rd_request_put_rate,
597 + (collected_number)p->IISRequestsPut.current.Data);
598 + rrddim_set_by_pointer(
599 + p->st_request_by_type_rate,
600 + p->rd_request_delete_rate,
601 + (collected_number)p->IISRequestsDelete.current.Data);
602 + rrddim_set_by_pointer(
603 + p->st_request_by_type_rate,
604 + p->rd_request_trace_rate,
605 + (collected_number)p->IISRequestsTrace.current.Data);
606 + rrddim_set_by_pointer(
607 + p->st_request_by_type_rate,
608 + p->rd_request_move_rate,
609 + (collected_number)p->IISRequestsMove.current.Data);
610 + rrddim_set_by_pointer(
611 + p->st_request_by_type_rate,
612 + p->rd_request_copy_rate,
613 + (collected_number)p->IISRequestsCopy.current.Data);
614 + rrddim_set_by_pointer(
615 + p->st_request_by_type_rate,
616 + p->rd_request_mkcol_rate,
617 + (collected_number)p->IISRequestsMkcol.current.Data);
618 + rrddim_set_by_pointer(
619 + p->st_request_by_type_rate,
620 + p->rd_request_propfind_rate,
621 + (collected_number)p->IISRequestsPropfind.current.Data);
622 + rrddim_set_by_pointer(
623 + p->st_request_by_type_rate,
624 + p->rd_request_proppatch_rate,
625 + (collected_number)p->IISRequestsProppatch.current.Data);
626 + rrddim_set_by_pointer(
627 + p->st_request_by_type_rate,
628 + p->rd_request_search_rate,
629 + (collected_number)p->IISRequestsSearch.current.Data);
630 + rrddim_set_by_pointer(
631 + p->st_request_by_type_rate,
632 + p->rd_request_lock_rate,
633 + (collected_number)p->IISRequestsLock.current.Data);
634 + rrddim_set_by_pointer(
635 + p->st_request_by_type_rate,
636 + p->rd_request_unlock_rate,
637 + (collected_number)p->IISRequestsUnlock.current.Data);
638 + rrddim_set_by_pointer(
639 + p->st_request_by_type_rate,
640 + p->rd_request_other_rate,
641 + (collected_number)p->IISRequestsOther.current.Data);
642 +
643 + rrdset_done(p->st_request_by_type_rate);
644 }
645 }
646
src/collectors/windows.plugin/windows_plugin.h
+3 -2
@@ -30,10 +30,11 @@ int do_PerflibMSSQL(int update_every, usec_t dt);
30 int do_PerflibNetFramework(int update_every, usec_t dt);
31
32 enum PERFLIB_PRIO {
33 - PRIO_WEBSITE_IIS_TRAFFIC = 21000, // PRIO selected, because APPS is using 20YYY
33 + PRIO_WEBSITE_IIS_REQUESTS_RATE = 21000, // PRIO selected, because APPS is using 20YYY
34 + PRIO_WEBSITE_IIS_REQUESTS_BY_TYPE_RATE,
35 + PRIO_WEBSITE_IIS_TRAFFIC,
36 PRIO_WEBSITE_IIS_FTP_FILE_TRANSFER_RATE,
37 PRIO_WEBSITE_IIS_ACTIVE_CONNECTIONS_COUNT,
36 - PRIO_WEBSITE_IIS_REQUESTS_RATE,
38 PRIO_WEBSITE_IIS_CONNECTIONS_ATTEMP,
39 PRIO_WEBSITE_IIS_USERS,
40 PRIO_WEBSITE_IIS_ISAPI_EXT_REQUEST_COUNT,