diff options
Diffstat (limited to '')
-rw-r--r-- | src/go/collectors/go.d.plugin/modules/apache/charts.go | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/apache/charts.go b/src/go/collectors/go.d.plugin/modules/apache/charts.go new file mode 100644 index 000000000..5470aecad --- /dev/null +++ b/src/go/collectors/go.d.plugin/modules/apache/charts.go @@ -0,0 +1,189 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package apache + +import "github.com/netdata/netdata/go/go.d.plugin/agent/module" + +const ( + prioRequests = module.Priority + iota + prioConnection + prioConnsAsync + prioScoreboard + prioNet + prioWorkers + prioReqPerSec + prioBytesPerSec + prioBytesPerReq + prioUptime +) + +var baseCharts = module.Charts{ + chartConnections.Copy(), + chartConnsAsync.Copy(), + chartWorkers.Copy(), + chartScoreboard.Copy(), +} + +var extendedCharts = module.Charts{ + chartRequests.Copy(), + chartBandwidth.Copy(), + chartReqPerSec.Copy(), + chartBytesPerSec.Copy(), + chartBytesPerReq.Copy(), + chartUptime.Copy(), +} + +func newCharts(s *serverStatus) *module.Charts { + charts := baseCharts.Copy() + + // ServerMPM: prefork + if s.Connections.Total == nil { + _ = charts.Remove(chartConnections.ID) + } + if s.Connections.Async.KeepAlive == nil { + _ = charts.Remove(chartConnsAsync.ID) + } + + if s.Total.Accesses != nil { + _ = charts.Add(*extendedCharts.Copy()...) + } + + return charts +} + +// simple status +var ( + chartConnections = module.Chart{ + ID: "connections", + Title: "Connections", + Units: "connections", + Fam: "connections", + Ctx: "apache.connections", + Priority: prioConnection, + Dims: module.Dims{ + {ID: "conns_total", Name: "connections"}, + }, + } + chartConnsAsync = module.Chart{ + ID: "conns_async", + Title: "Async Connections", + Units: "connections", + Fam: "connections", + Ctx: "apache.conns_async", + Type: module.Stacked, + Priority: prioConnsAsync, + Dims: module.Dims{ + {ID: "conns_async_keep_alive", Name: "keepalive"}, + {ID: "conns_async_closing", Name: "closing"}, + {ID: "conns_async_writing", Name: "writing"}, + }, + } + chartWorkers = module.Chart{ + ID: "workers", + Title: "Workers Threads", + Units: "workers", + Fam: "workers", + Ctx: "apache.workers", + Type: module.Stacked, + Priority: prioWorkers, + Dims: module.Dims{ + {ID: "idle_workers", Name: "idle"}, + {ID: "busy_workers", Name: "busy"}, + }, + } + chartScoreboard = module.Chart{ + ID: "scoreboard", + Title: "Scoreboard", + Units: "connections", + Fam: "connections", + Ctx: "apache.scoreboard", + Priority: prioScoreboard, + Dims: module.Dims{ + {ID: "scoreboard_waiting", Name: "waiting"}, + {ID: "scoreboard_starting", Name: "starting"}, + {ID: "scoreboard_reading", Name: "reading"}, + {ID: "scoreboard_sending", Name: "sending"}, + {ID: "scoreboard_keepalive", Name: "keepalive"}, + {ID: "scoreboard_dns_lookup", Name: "dns_lookup"}, + {ID: "scoreboard_closing", Name: "closing"}, + {ID: "scoreboard_logging", Name: "logging"}, + {ID: "scoreboard_finishing", Name: "finishing"}, + {ID: "scoreboard_idle_cleanup", Name: "idle_cleanup"}, + {ID: "scoreboard_open", Name: "open"}, + }, + } +) + +// extended status +var ( + chartRequests = module.Chart{ + ID: "requests", + Title: "Requests", + Units: "requests/s", + Fam: "requests", + Ctx: "apache.requests", + Priority: prioRequests, + Dims: module.Dims{ + {ID: "total_accesses", Name: "requests", Algo: module.Incremental}, + }, + } + chartBandwidth = module.Chart{ + ID: "net", + Title: "Bandwidth", + Units: "kilobits/s", + Fam: "bandwidth", + Ctx: "apache.net", + Type: module.Area, + Priority: prioNet, + Dims: module.Dims{ + {ID: "total_kBytes", Name: "sent", Algo: module.Incremental, Mul: 8}, + }, + } + chartReqPerSec = module.Chart{ + ID: "reqpersec", + Title: "Lifetime Average Number Of Requests Per Second", + Units: "requests/s", + Fam: "statistics", + Ctx: "apache.reqpersec", + Type: module.Area, + Priority: prioReqPerSec, + Dims: module.Dims{ + {ID: "req_per_sec", Name: "requests", Div: 100000}, + }, + } + chartBytesPerSec = module.Chart{ + ID: "bytespersec", + Title: "Lifetime Average Number Of Bytes Served Per Second", + Units: "KiB/s", + Fam: "statistics", + Ctx: "apache.bytespersec", + Type: module.Area, + Priority: prioBytesPerSec, + Dims: module.Dims{ + {ID: "bytes_per_sec", Name: "served", Mul: 8, Div: 1024 * 100000}, + }, + } + chartBytesPerReq = module.Chart{ + ID: "bytesperreq", + Title: "Lifetime Average Response Size", + Units: "KiB", + Fam: "statistics", + Ctx: "apache.bytesperreq", + Type: module.Area, + Priority: prioBytesPerReq, + Dims: module.Dims{ + {ID: "bytes_per_req", Name: "size", Div: 1024 * 100000}, + }, + } + chartUptime = module.Chart{ + ID: "uptime", + Title: "Uptime", + Units: "seconds", + Fam: "availability", + Ctx: "apache.uptime", + Priority: prioUptime, + Dims: module.Dims{ + {ID: "uptime"}, + }, + } +) |