github.com/netdata/go.d.plugin@v0.58.1/modules/apache/charts.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package apache 4 5 import "github.com/netdata/go.d.plugin/agent/module" 6 7 const ( 8 prioRequests = module.Priority + iota 9 prioConnection 10 prioConnsAsync 11 prioScoreboard 12 prioNet 13 prioWorkers 14 prioReqPerSec 15 prioBytesPerSec 16 prioBytesPerReq 17 prioUptime 18 ) 19 20 var baseCharts = module.Charts{ 21 chartConnections.Copy(), 22 chartConnsAsync.Copy(), 23 chartWorkers.Copy(), 24 chartScoreboard.Copy(), 25 } 26 27 var extendedCharts = module.Charts{ 28 chartRequests.Copy(), 29 chartBandwidth.Copy(), 30 chartReqPerSec.Copy(), 31 chartBytesPerSec.Copy(), 32 chartBytesPerReq.Copy(), 33 chartUptime.Copy(), 34 } 35 36 func newCharts(s *serverStatus) *module.Charts { 37 charts := baseCharts.Copy() 38 39 // ServerMPM: prefork 40 if s.Connections.Total == nil { 41 _ = charts.Remove(chartConnections.ID) 42 } 43 if s.Connections.Async.KeepAlive == nil { 44 _ = charts.Remove(chartConnsAsync.ID) 45 } 46 47 if s.Total.Accesses != nil { 48 _ = charts.Add(*extendedCharts.Copy()...) 49 } 50 51 return charts 52 } 53 54 // simple status 55 var ( 56 chartConnections = module.Chart{ 57 ID: "connections", 58 Title: "Connections", 59 Units: "connections", 60 Fam: "connections", 61 Ctx: "apache.connections", 62 Priority: prioConnection, 63 Dims: module.Dims{ 64 {ID: "conns_total", Name: "connections"}, 65 }, 66 } 67 chartConnsAsync = module.Chart{ 68 ID: "conns_async", 69 Title: "Async Connections", 70 Units: "connections", 71 Fam: "connections", 72 Ctx: "apache.conns_async", 73 Type: module.Stacked, 74 Priority: prioConnsAsync, 75 Dims: module.Dims{ 76 {ID: "conns_async_keep_alive", Name: "keepalive"}, 77 {ID: "conns_async_closing", Name: "closing"}, 78 {ID: "conns_async_writing", Name: "writing"}, 79 }, 80 } 81 chartWorkers = module.Chart{ 82 ID: "workers", 83 Title: "Workers Threads", 84 Units: "workers", 85 Fam: "workers", 86 Ctx: "apache.workers", 87 Type: module.Stacked, 88 Priority: prioWorkers, 89 Dims: module.Dims{ 90 {ID: "idle_workers", Name: "idle"}, 91 {ID: "busy_workers", Name: "busy"}, 92 }, 93 } 94 chartScoreboard = module.Chart{ 95 ID: "scoreboard", 96 Title: "Scoreboard", 97 Units: "connections", 98 Fam: "connections", 99 Ctx: "apache.scoreboard", 100 Priority: prioScoreboard, 101 Dims: module.Dims{ 102 {ID: "scoreboard_waiting", Name: "waiting"}, 103 {ID: "scoreboard_starting", Name: "starting"}, 104 {ID: "scoreboard_reading", Name: "reading"}, 105 {ID: "scoreboard_sending", Name: "sending"}, 106 {ID: "scoreboard_keepalive", Name: "keepalive"}, 107 {ID: "scoreboard_dns_lookup", Name: "dns_lookup"}, 108 {ID: "scoreboard_closing", Name: "closing"}, 109 {ID: "scoreboard_logging", Name: "logging"}, 110 {ID: "scoreboard_finishing", Name: "finishing"}, 111 {ID: "scoreboard_idle_cleanup", Name: "idle_cleanup"}, 112 {ID: "scoreboard_open", Name: "open"}, 113 }, 114 } 115 ) 116 117 // extended status 118 var ( 119 chartRequests = module.Chart{ 120 ID: "requests", 121 Title: "Requests", 122 Units: "requests/s", 123 Fam: "requests", 124 Ctx: "apache.requests", 125 Priority: prioRequests, 126 Dims: module.Dims{ 127 {ID: "total_accesses", Name: "requests", Algo: module.Incremental}, 128 }, 129 } 130 chartBandwidth = module.Chart{ 131 ID: "net", 132 Title: "Bandwidth", 133 Units: "kilobits/s", 134 Fam: "bandwidth", 135 Ctx: "apache.net", 136 Type: module.Area, 137 Priority: prioNet, 138 Dims: module.Dims{ 139 {ID: "total_kBytes", Name: "sent", Algo: module.Incremental, Mul: 8}, 140 }, 141 } 142 chartReqPerSec = module.Chart{ 143 ID: "reqpersec", 144 Title: "Lifetime Average Number Of Requests Per Second", 145 Units: "requests/s", 146 Fam: "statistics", 147 Ctx: "apache.reqpersec", 148 Type: module.Area, 149 Priority: prioReqPerSec, 150 Dims: module.Dims{ 151 {ID: "req_per_sec", Name: "requests", Div: 100000}, 152 }, 153 } 154 chartBytesPerSec = module.Chart{ 155 ID: "bytespersec", 156 Title: "Lifetime Average Number Of Bytes Served Per Second", 157 Units: "KiB/s", 158 Fam: "statistics", 159 Ctx: "apache.bytespersec", 160 Type: module.Area, 161 Priority: prioBytesPerSec, 162 Dims: module.Dims{ 163 {ID: "bytes_per_sec", Name: "served", Mul: 8, Div: 1024 * 100000}, 164 }, 165 } 166 chartBytesPerReq = module.Chart{ 167 ID: "bytesperreq", 168 Title: "Lifetime Average Response Size", 169 Units: "KiB", 170 Fam: "statistics", 171 Ctx: "apache.bytesperreq", 172 Type: module.Area, 173 Priority: prioBytesPerReq, 174 Dims: module.Dims{ 175 {ID: "bytes_per_req", Name: "size", Div: 1024 * 100000}, 176 }, 177 } 178 chartUptime = module.Chart{ 179 ID: "uptime", 180 Title: "Uptime", 181 Units: "seconds", 182 Fam: "availability", 183 Ctx: "apache.uptime", 184 Priority: prioUptime, 185 Dims: module.Dims{ 186 {ID: "uptime"}, 187 }, 188 } 189 )