master
go 229 lines 6.15 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package memcached
4
5 import (
6 "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi"
7 )
8
9 const (
10 prioCache = collectorapi.Priority + iota
11 prioNet
12 prioConnections
13 prioItems
14 prioEvictedReclaimed
15 prioGet
16 prioGetRate
17 prioSetRate
18 prioDelete
19 prioCas
20 prioIncrement
21 prioDecrement
22 prioTouch
23 prioTouchRate
24 )
25
26 var charts = collectorapi.Charts{
27 cacheChart.Copy(),
28 netChart.Copy(),
29 connectionsChart.Copy(),
30 itemsChart.Copy(),
31 EvictedReclaimedChart.Copy(),
32 getChart.Copy(),
33 getRateChart.Copy(),
34 setRateChart.Copy(),
35 deleteChart.Copy(),
36 casChart.Copy(),
37 incrementChart.Copy(),
38 decrementChart.Copy(),
39 touchChart.Copy(),
40 touchRateChart.Copy(),
41 }
42
43 const (
44 byteToMiB = 1 << 20
45 )
46
47 var (
48 cacheChart = collectorapi.Chart{
49 ID: "cache",
50 Title: "Cache Size",
51 Units: "MiB",
52 Fam: "cache",
53 Ctx: "memcached.cache",
54 Type: collectorapi.Stacked,
55 Priority: prioCache,
56 Dims: collectorapi.Dims{
57 {ID: "avail", Div: byteToMiB},
58 {ID: "bytes", Name: "used", Div: byteToMiB},
59 },
60 }
61 netChart = collectorapi.Chart{
62 ID: "net",
63 Title: "Network",
64 Units: "kilobits/s",
65 Fam: "network",
66 Ctx: "memcached.net",
67 Type: collectorapi.Area,
68 Priority: prioNet,
69 Dims: collectorapi.Dims{
70 {ID: "bytes_read", Name: "in", Mul: 8, Div: 1000, Algo: collectorapi.Incremental},
71 {ID: "bytes_written", Name: "out", Mul: -8, Div: 1000, Algo: collectorapi.Incremental},
72 },
73 }
74 connectionsChart = collectorapi.Chart{
75 ID: "connections",
76 Title: "Connections",
77 Units: "connections/s",
78 Fam: "connections",
79 Ctx: "memcached.connections",
80 Type: collectorapi.Line,
81 Priority: prioConnections,
82 Dims: collectorapi.Dims{
83 {ID: "curr_connections", Name: "current", Algo: collectorapi.Incremental},
84 {ID: "rejected_connections", Name: "rejected", Algo: collectorapi.Incremental},
85 {ID: "total_connections", Name: "total", Algo: collectorapi.Incremental},
86 },
87 }
88 itemsChart = collectorapi.Chart{
89 ID: "items",
90 Title: "Items",
91 Units: "items",
92 Fam: "items",
93 Ctx: "memcached.items",
94 Type: collectorapi.Line,
95 Priority: prioItems,
96 Dims: collectorapi.Dims{
97 {ID: "curr_items", Name: "current"},
98 {ID: "total_items", Name: "total"},
99 },
100 }
101 EvictedReclaimedChart = collectorapi.Chart{
102 ID: "evicted_reclaimed",
103 Title: "Evicted and Reclaimed Items",
104 Units: "items",
105 Fam: "items",
106 Ctx: "memcached.evicted_reclaimed",
107 Type: collectorapi.Line,
108 Priority: prioEvictedReclaimed,
109 Dims: collectorapi.Dims{
110 {ID: "reclaimed"},
111 {ID: "evictions", Name: "evicted"},
112 },
113 }
114 getChart = collectorapi.Chart{
115 ID: "get",
116 Title: "Get Requests",
117 Units: "requests",
118 Fam: "get ops",
119 Ctx: "memcached.get",
120 Type: collectorapi.Stacked,
121 Priority: prioGet,
122 Dims: collectorapi.Dims{
123 {ID: "get_hits", Name: "hits", Algo: collectorapi.PercentOfAbsolute},
124 {ID: "get_misses", Name: "misses", Algo: collectorapi.PercentOfAbsolute},
125 },
126 }
127 getRateChart = collectorapi.Chart{
128 ID: "get_rate",
129 Title: "Get Request Rate",
130 Units: "requests/s",
131 Fam: "get ops",
132 Ctx: "memcached.get_rate",
133 Type: collectorapi.Line,
134 Priority: prioGetRate,
135 Dims: collectorapi.Dims{
136 {ID: "cmd_get", Name: "rate", Algo: collectorapi.Incremental},
137 },
138 }
139 setRateChart = collectorapi.Chart{
140 ID: "set_rate",
141 Title: "Set Request Rate",
142 Units: "requests/s",
143 Fam: "set ops",
144 Ctx: "memcached.set_rate",
145 Type: collectorapi.Line,
146 Priority: prioSetRate,
147 Dims: collectorapi.Dims{
148 {ID: "cmd_set", Name: "rate", Algo: collectorapi.Incremental},
149 },
150 }
151 deleteChart = collectorapi.Chart{
152 ID: "delete",
153 Title: "Delete Requests",
154 Units: "requests",
155 Fam: "delete ops",
156 Ctx: "memcached.delete",
157 Type: collectorapi.Stacked,
158 Priority: prioDelete,
159 Dims: collectorapi.Dims{
160 {ID: "delete_hits", Name: "hits", Algo: collectorapi.PercentOfAbsolute},
161 {ID: "delete_misses", Name: "misses", Algo: collectorapi.PercentOfAbsolute},
162 },
163 }
164 casChart = collectorapi.Chart{
165 ID: "cas",
166 Title: "Check and Set Requests",
167 Units: "requests",
168 Fam: "check and set ops",
169 Ctx: "memcached.cas",
170 Type: collectorapi.Stacked,
171 Priority: prioCas,
172 Dims: collectorapi.Dims{
173 {ID: "cas_hits", Name: "hits", Algo: collectorapi.PercentOfAbsolute},
174 {ID: "cas_misses", Name: "misses", Algo: collectorapi.PercentOfAbsolute},
175 {ID: "cas_badval", Name: "bad value", Algo: collectorapi.PercentOfAbsolute},
176 },
177 }
178 incrementChart = collectorapi.Chart{
179 ID: "increment",
180 Title: "Increment Requests",
181 Units: "requests",
182 Fam: "increment ops",
183 Ctx: "memcached.increment",
184 Type: collectorapi.Stacked,
185 Priority: prioIncrement,
186 Dims: collectorapi.Dims{
187 {ID: "incr_hits", Name: "hits", Algo: collectorapi.PercentOfAbsolute},
188 {ID: "incr_misses", Name: "misses", Algo: collectorapi.PercentOfAbsolute},
189 },
190 }
191 decrementChart = collectorapi.Chart{
192 ID: "decrement",
193 Title: "Decrement Requests",
194 Units: "requests",
195 Fam: "decrement ops",
196 Ctx: "memcached.decrement",
197 Type: collectorapi.Stacked,
198 Priority: prioDecrement,
199 Dims: collectorapi.Dims{
200 {ID: "decr_hits", Name: "hits", Algo: collectorapi.PercentOfAbsolute},
201 {ID: "decr_misses", Name: "misses", Algo: collectorapi.PercentOfAbsolute},
202 },
203 }
204 touchChart = collectorapi.Chart{
205 ID: "touch",
206 Title: "Touch Requests",
207 Units: "requests",
208 Fam: "touch ops",
209 Ctx: "memcached.touch",
210 Type: collectorapi.Stacked,
211 Priority: prioTouch,
212 Dims: collectorapi.Dims{
213 {ID: "touch_hits", Name: "hits", Algo: collectorapi.PercentOfAbsolute},
214 {ID: "touch_misses", Name: "misses", Algo: collectorapi.PercentOfAbsolute},
215 },
216 }
217 touchRateChart = collectorapi.Chart{
218 ID: "touch_rate",
219 Title: "Touch Requests Rate",
220 Units: "requests/s",
221 Fam: "touch ops",
222 Ctx: "memcached.touch_rate",
223 Type: collectorapi.Line,
224 Priority: prioTouchRate,
225 Dims: collectorapi.Dims{
226 {ID: "cmd_touch", Name: "rate", Algo: collectorapi.Incremental},
227 },
228 }
229 )