master
go 185 lines 5.07 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package dovecot
4
5 import (
6 "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi"
7 )
8
9 const (
10 prioSessions = collectorapi.Priority + iota
11 prioLogins
12 prioAuthenticationAttempts
13 prioCommands
14 prioPageFaults
15 prioContextSwitches
16 prioDiskIO
17 prioNetTraffic
18 prioSysCalls
19 prioLookups
20 prioCachePerformance
21 prioAuthCachePerformance
22 )
23
24 var charts = collectorapi.Charts{
25 sessionsChart.Copy(),
26 loginsChart.Copy(),
27 authAttemptsChart.Copy(),
28 commandsChart.Copy(),
29 pageFaultsChart.Copy(),
30 contextSwitchesChart.Copy(),
31 diskIOChart.Copy(),
32 netTrafficChart.Copy(),
33 sysCallsChart.Copy(),
34 lookupsChart.Copy(),
35 cacheChart.Copy(),
36 authCacheChart.Copy(),
37 }
38
39 var (
40 sessionsChart = collectorapi.Chart{
41 ID: "sessions",
42 Title: "Dovecot Active Sessions",
43 Units: "sessions",
44 Fam: "sessions",
45 Ctx: "dovecot.sessions",
46 Priority: prioSessions,
47 Dims: collectorapi.Dims{
48 {ID: "num_connected_sessions", Name: "active"},
49 },
50 }
51 loginsChart = collectorapi.Chart{
52 ID: "logins",
53 Title: "Dovecot Logins",
54 Units: "logins",
55 Fam: "logins",
56 Ctx: "dovecot.logins",
57 Priority: prioLogins,
58 Dims: collectorapi.Dims{
59 {ID: "num_logins", Name: "logins"},
60 },
61 }
62 authAttemptsChart = collectorapi.Chart{
63 ID: "auth",
64 Title: "Dovecot Authentications",
65 Units: "attempts/s",
66 Fam: "logins",
67 Ctx: "dovecot.auth",
68 Priority: prioAuthenticationAttempts,
69 Type: collectorapi.Stacked,
70 Dims: collectorapi.Dims{
71 {ID: "auth_successes", Name: "ok", Algo: collectorapi.Incremental},
72 {ID: "auth_failures", Name: "failed", Algo: collectorapi.Incremental},
73 },
74 }
75 commandsChart = collectorapi.Chart{
76 ID: "commands",
77 Title: "Dovecot Commands",
78 Units: "commands",
79 Fam: "commands",
80 Ctx: "dovecot.commands",
81 Priority: prioCommands,
82 Dims: collectorapi.Dims{
83 {ID: "num_cmds", Name: "commands"},
84 },
85 }
86 pageFaultsChart = collectorapi.Chart{
87 ID: "faults",
88 Title: "Dovecot Page Faults",
89 Units: "faults/s",
90 Fam: "page faults",
91 Ctx: "dovecot.faults",
92 Priority: prioPageFaults,
93 Dims: collectorapi.Dims{
94 {ID: "min_faults", Name: "minor", Algo: collectorapi.Incremental},
95 {ID: "maj_faults", Name: "major", Algo: collectorapi.Incremental},
96 },
97 }
98 contextSwitchesChart = collectorapi.Chart{
99 ID: "context_switches",
100 Title: "Dovecot Context Switches",
101 Units: "switches/s",
102 Fam: "context switches",
103 Ctx: "dovecot.context_switches",
104 Priority: prioContextSwitches,
105 Dims: collectorapi.Dims{
106 {ID: "vol_cs", Name: "voluntary", Algo: collectorapi.Incremental},
107 {ID: "invol_cs", Name: "involuntary", Algo: collectorapi.Incremental},
108 },
109 }
110 diskIOChart = collectorapi.Chart{
111 ID: "io",
112 Title: "Dovecot Disk I/O",
113 Units: "KiB/s",
114 Fam: "disk",
115 Ctx: "dovecot.io",
116 Priority: prioDiskIO,
117 Type: collectorapi.Area,
118 Dims: collectorapi.Dims{
119 {ID: "disk_input", Name: "read", Div: 1024, Algo: collectorapi.Incremental},
120 {ID: "disk_output", Name: "write", Mul: -1, Div: 1024, Algo: collectorapi.Incremental},
121 },
122 }
123 netTrafficChart = collectorapi.Chart{
124 ID: "net",
125 Title: "Dovecot Network Bandwidth",
126 Units: "kilobits/s",
127 Fam: "network",
128 Ctx: "dovecot.net",
129 Priority: prioNetTraffic,
130 Type: collectorapi.Area,
131 Dims: collectorapi.Dims{
132 {ID: "read_bytes", Name: "read", Mul: 8, Div: 1000, Algo: collectorapi.Incremental},
133 {ID: "write_bytes", Name: "write", Mul: -8, Div: 1000, Algo: collectorapi.Incremental},
134 },
135 }
136 sysCallsChart = collectorapi.Chart{
137 ID: "syscalls",
138 Title: "Dovecot Number of SysCalls",
139 Units: "syscalls/s",
140 Fam: "system",
141 Ctx: "dovecot.syscalls",
142 Priority: prioSysCalls,
143 Dims: collectorapi.Dims{
144 {ID: "read_count", Name: "read", Algo: collectorapi.Incremental},
145 {ID: "write_count", Name: "write", Algo: collectorapi.Incremental},
146 },
147 }
148 lookupsChart = collectorapi.Chart{
149 ID: "lookup",
150 Title: "Dovecot Lookups",
151 Units: "lookups/s",
152 Fam: "lookups",
153 Ctx: "dovecot.lookup",
154 Priority: prioLookups,
155 Type: collectorapi.Stacked,
156 Dims: collectorapi.Dims{
157 {ID: "mail_lookup_path", Name: "path", Algo: collectorapi.Incremental},
158 {ID: "mail_lookup_attr", Name: "attr", Algo: collectorapi.Incremental},
159 },
160 }
161 cacheChart = collectorapi.Chart{
162 ID: "cache",
163 Title: "Dovecot Cache Hits",
164 Units: "hits/s",
165 Fam: "cache",
166 Ctx: "dovecot.cache",
167 Priority: prioCachePerformance,
168 Dims: collectorapi.Dims{
169 {ID: "mail_cache_hits", Name: "hits", Algo: collectorapi.Incremental},
170 },
171 }
172 authCacheChart = collectorapi.Chart{
173 ID: "auth_cache",
174 Title: "Dovecot Authentication Cache",
175 Units: "requests/s",
176 Fam: "cache",
177 Ctx: "dovecot.auth_cache",
178 Priority: prioAuthCachePerformance,
179 Type: collectorapi.Stacked,
180 Dims: collectorapi.Dims{
181 {ID: "auth_cache_hits", Name: "hits", Algo: collectorapi.Incremental},
182 {ID: "auth_cache_misses", Name: "misses", Algo: collectorapi.Incremental},
183 },
184 }
185 )