master
go 94 lines 2.36 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package supervisord
4
5 import (
6 "fmt"
7
8 "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi"
9 )
10
11 const (
12 summaryChartsPriority = collectorapi.Priority
13 groupChartsPriority = summaryChartsPriority + 20
14 )
15
16 var summaryCharts = collectorapi.Charts{
17 {
18 ID: "processes",
19 Title: "Processes",
20 Units: "processes",
21 Fam: "summary",
22 Ctx: "supervisord.summary_processes",
23 Type: collectorapi.Stacked,
24 Priority: summaryChartsPriority,
25 Dims: collectorapi.Dims{
26 {ID: "running_processes", Name: "running"},
27 {ID: "non_running_processes", Name: "non-running"},
28 },
29 },
30 }
31
32 var (
33 groupChartsTmpl = collectorapi.Charts{
34 groupProcessesChartTmpl.Copy(),
35 groupProcessesStateCodeChartTmpl.Copy(),
36 groupProcessesExitStatusChartTmpl.Copy(),
37 groupProcessesUptimeChartTmpl.Copy(),
38 groupProcessesDowntimeChartTmpl.Copy(),
39 }
40
41 groupProcessesChartTmpl = collectorapi.Chart{
42 ID: "group_%s_processes",
43 Title: "Processes",
44 Units: "processes",
45 Fam: "group %s",
46 Ctx: "supervisord.processes",
47 Type: collectorapi.Stacked,
48 Dims: collectorapi.Dims{
49 {ID: "group_%s_running_processes", Name: "running"},
50 {ID: "group_%s_non_running_processes", Name: "non-running"},
51 },
52 }
53 groupProcessesStateCodeChartTmpl = collectorapi.Chart{
54 ID: "group_%s_processes_state_code",
55 Title: "State code",
56 Units: "code",
57 Fam: "group %s",
58 Ctx: "supervisord.process_state_code",
59 }
60 groupProcessesExitStatusChartTmpl = collectorapi.Chart{
61 ID: "group_%s_processes_exit_status",
62 Title: "Exit status",
63 Units: "status",
64 Fam: "group %s",
65 Ctx: "supervisord.process_exit_status",
66 }
67 groupProcessesUptimeChartTmpl = collectorapi.Chart{
68 ID: "group_%s_processes_uptime",
69 Title: "Uptime",
70 Units: "seconds",
71 Fam: "group %s",
72 Ctx: "supervisord.process_uptime",
73 }
74 groupProcessesDowntimeChartTmpl = collectorapi.Chart{
75 ID: "group_%s_processes_downtime",
76 Title: "Downtime",
77 Units: "seconds",
78 Fam: "group %s",
79 Ctx: "supervisord.process_downtime",
80 }
81 )
82
83 func newProcGroupCharts(group string) *collectorapi.Charts {
84 charts := groupChartsTmpl.Copy()
85 for i, c := range *charts {
86 c.ID = fmt.Sprintf(c.ID, group)
87 c.Fam = fmt.Sprintf(c.Fam, group)
88 c.Priority = groupChartsPriority + i
89 for _, d := range c.Dims {
90 d.ID = fmt.Sprintf(d.ID, group)
91 }
92 }
93 return charts
94 }