github.com/netdata/go.d.plugin@v0.58.1/modules/windows/collect_iis.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package windows 4 5 import ( 6 "strings" 7 8 "github.com/netdata/go.d.plugin/pkg/prometheus" 9 ) 10 11 const ( 12 metricIISCurrentAnonymousUsers = "windows_iis_current_anonymous_users" 13 metricIISCurrentNonAnonymousUsers = "windows_iis_current_non_anonymous_users" 14 metricIISCurrentConnections = "windows_iis_current_connections" 15 metricIICurrentISAPIExtRequests = "windows_iis_current_isapi_extension_requests" 16 metricIISUptime = "windows_iis_service_uptime" 17 18 metricIISReceivedBytesTotal = "windows_iis_received_bytes_total" 19 metricIISSentBytesTotal = "windows_iis_sent_bytes_total" 20 metricIISRequestsTotal = "windows_iis_requests_total" 21 metricIISIPAPIExtRequestsTotal = "windows_iis_ipapi_extension_requests_total" 22 metricIISConnAttemptsAllInstancesTotal = "windows_iis_connection_attempts_all_instances_total" 23 metricIISFilesReceivedTotal = "windows_iis_files_received_total" 24 metricIISFilesSentTotal = "windows_iis_files_sent_total" 25 metricIISLogonAttemptsTotal = "windows_iis_logon_attempts_total" 26 metricIISLockedErrorsTotal = "windows_iis_locked_errors_total" 27 metricIISNotFoundErrorsTotal = "windows_iis_not_found_errors_total" 28 ) 29 30 func (w *Windows) collectIIS(mx map[string]int64, pms prometheus.Series) { 31 seen := make(map[string]bool) 32 px := "iis_website_" 33 for _, pm := range pms.FindByName(metricIISCurrentAnonymousUsers) { 34 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 35 seen[name] = true 36 mx[px+name+"_current_anonymous_users"] += int64(pm.Value) 37 } 38 } 39 for _, pm := range pms.FindByName(metricIISCurrentNonAnonymousUsers) { 40 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 41 seen[name] = true 42 mx[px+name+"_current_non_anonymous_users"] += int64(pm.Value) 43 } 44 } 45 for _, pm := range pms.FindByName(metricIISCurrentConnections) { 46 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 47 seen[name] = true 48 mx[px+name+"_current_connections"] += int64(pm.Value) 49 } 50 } 51 for _, pm := range pms.FindByName(metricIICurrentISAPIExtRequests) { 52 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 53 seen[name] = true 54 mx[px+name+"_current_isapi_extension_requests"] += int64(pm.Value) 55 } 56 } 57 for _, pm := range pms.FindByName(metricIISUptime) { 58 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 59 seen[name] = true 60 mx[px+name+"_service_uptime"] += int64(pm.Value) 61 } 62 } 63 for _, pm := range pms.FindByName(metricIISReceivedBytesTotal) { 64 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 65 seen[name] = true 66 mx[px+name+"_received_bytes_total"] += int64(pm.Value) 67 } 68 } 69 for _, pm := range pms.FindByName(metricIISSentBytesTotal) { 70 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 71 seen[name] = true 72 mx[px+name+"_sent_bytes_total"] += int64(pm.Value) 73 } 74 } 75 for _, pm := range pms.FindByName(metricIISRequestsTotal) { 76 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 77 seen[name] = true 78 mx[px+name+"_requests_total"] += int64(pm.Value) 79 } 80 } 81 for _, pm := range pms.FindByName(metricIISConnAttemptsAllInstancesTotal) { 82 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 83 seen[name] = true 84 mx[px+name+"_connection_attempts_all_instances_total"] += int64(pm.Value) 85 } 86 } 87 for _, pm := range pms.FindByName(metricIISFilesReceivedTotal) { 88 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 89 seen[name] = true 90 mx[px+name+"_files_received_total"] += int64(pm.Value) 91 } 92 } 93 for _, pm := range pms.FindByName(metricIISFilesSentTotal) { 94 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 95 seen[name] = true 96 mx[px+name+"_files_sent_total"] += int64(pm.Value) 97 } 98 } 99 for _, pm := range pms.FindByName(metricIISIPAPIExtRequestsTotal) { 100 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 101 seen[name] = true 102 mx[px+name+"_isapi_extension_requests_total"] += int64(pm.Value) 103 } 104 } 105 for _, pm := range pms.FindByName(metricIISLogonAttemptsTotal) { 106 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 107 seen[name] = true 108 mx[px+name+"_logon_attempts_total"] += int64(pm.Value) 109 } 110 } 111 for _, pm := range pms.FindByName(metricIISLockedErrorsTotal) { 112 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 113 seen[name] = true 114 mx[px+name+"_locked_errors_total"] += int64(pm.Value) 115 } 116 } 117 for _, pm := range pms.FindByName(metricIISNotFoundErrorsTotal) { 118 if name := cleanWebsiteName(pm.Labels.Get("site")); name != "" { 119 seen[name] = true 120 mx[px+name+"_not_found_errors_total"] += int64(pm.Value) 121 } 122 } 123 124 for site := range seen { 125 if !w.cache.iis[site] { 126 w.cache.iis[site] = true 127 w.addIISWebsiteCharts(site) 128 } 129 } 130 for site := range w.cache.iis { 131 if !seen[site] { 132 delete(w.cache.iis, site) 133 w.removeIIWebsiteSCharts(site) 134 } 135 } 136 } 137 138 func cleanWebsiteName(name string) string { 139 return strings.ReplaceAll(name, " ", "_") 140 }