master
go 228 lines 7.72 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package couchdb
4
5 import (
6 "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi"
7 )
8
9 type (
10 Charts = collectorapi.Charts
11 Dims = collectorapi.Dims
12 Vars = collectorapi.Vars
13 )
14
15 var dbActivityCharts = Charts{
16 {
17 ID: "activity",
18 Title: "Overall Activity",
19 Units: "requests/s",
20 Fam: "dbactivity",
21 Ctx: "couchdb.activity",
22 Type: collectorapi.Stacked,
23 Dims: Dims{
24 {ID: "couchdb_database_reads", Name: "DB reads", Algo: collectorapi.Incremental},
25 {ID: "couchdb_database_writes", Name: "DB writes", Algo: collectorapi.Incremental},
26 {ID: "couchdb_httpd_view_reads", Name: "View reads", Algo: collectorapi.Incremental},
27 },
28 },
29 }
30
31 var httpTrafficBreakdownCharts = Charts{
32 {
33 ID: "request_methods",
34 Title: "HTTP request methods",
35 Units: "requests/s",
36 Fam: "httptraffic",
37 Ctx: "couchdb.request_methods",
38 Type: collectorapi.Stacked,
39 Dims: Dims{
40 {ID: "couchdb_httpd_request_methods_COPY", Name: "COPY", Algo: collectorapi.Incremental},
41 {ID: "couchdb_httpd_request_methods_DELETE", Name: "DELETE", Algo: collectorapi.Incremental},
42 {ID: "couchdb_httpd_request_methods_GET", Name: "GET", Algo: collectorapi.Incremental},
43 {ID: "couchdb_httpd_request_methods_HEAD", Name: "HEAD", Algo: collectorapi.Incremental},
44 {ID: "couchdb_httpd_request_methods_OPTIONS", Name: "OPTIONS", Algo: collectorapi.Incremental},
45 {ID: "couchdb_httpd_request_methods_POST", Name: "POST", Algo: collectorapi.Incremental},
46 {ID: "couchdb_httpd_request_methods_PUT", Name: "PUT", Algo: collectorapi.Incremental},
47 },
48 },
49 {
50 ID: "response_codes",
51 Title: "HTTP response status codes",
52 Units: "responses/s",
53 Fam: "httptraffic",
54 Ctx: "couchdb.response_codes",
55 Type: collectorapi.Stacked,
56 Dims: Dims{
57 {ID: "couchdb_httpd_status_codes_200", Name: "200 OK", Algo: collectorapi.Incremental},
58 {ID: "couchdb_httpd_status_codes_201", Name: "201 Created", Algo: collectorapi.Incremental},
59 {ID: "couchdb_httpd_status_codes_202", Name: "202 Accepted", Algo: collectorapi.Incremental},
60 {ID: "couchdb_httpd_status_codes_204", Name: "204 No Content", Algo: collectorapi.Incremental},
61 {ID: "couchdb_httpd_status_codes_206", Name: "206 Partial Content", Algo: collectorapi.Incremental},
62 {ID: "couchdb_httpd_status_codes_301", Name: "301 Moved Permanently", Algo: collectorapi.Incremental},
63 {ID: "couchdb_httpd_status_codes_302", Name: "302 Found", Algo: collectorapi.Incremental},
64 {ID: "couchdb_httpd_status_codes_304", Name: "304 Not Modified", Algo: collectorapi.Incremental},
65 {ID: "couchdb_httpd_status_codes_400", Name: "400 Bad Request", Algo: collectorapi.Incremental},
66 {ID: "couchdb_httpd_status_codes_401", Name: "401 Unauthorized", Algo: collectorapi.Incremental},
67 {ID: "couchdb_httpd_status_codes_403", Name: "403 Forbidden", Algo: collectorapi.Incremental},
68 {ID: "couchdb_httpd_status_codes_404", Name: "404 Not Found", Algo: collectorapi.Incremental},
69 {ID: "couchdb_httpd_status_codes_406", Name: "406 Not Acceptable", Algo: collectorapi.Incremental},
70 {ID: "couchdb_httpd_status_codes_409", Name: "409 Conflict", Algo: collectorapi.Incremental},
71 {ID: "couchdb_httpd_status_codes_412", Name: "412 Precondition Failed", Algo: collectorapi.Incremental},
72 {ID: "couchdb_httpd_status_codes_413", Name: "413 Request Entity Too Long", Algo: collectorapi.Incremental},
73 {ID: "couchdb_httpd_status_codes_414", Name: "414 Request URI Too Long", Algo: collectorapi.Incremental},
74 {ID: "couchdb_httpd_status_codes_415", Name: "415 Unsupported Media Type", Algo: collectorapi.Incremental},
75 {ID: "couchdb_httpd_status_codes_416", Name: "416 Requested Range Not Satisfiable", Algo: collectorapi.Incremental},
76 {ID: "couchdb_httpd_status_codes_417", Name: "417 Expectation Failed", Algo: collectorapi.Incremental},
77 {ID: "couchdb_httpd_status_codes_500", Name: "500 Internal Server Error", Algo: collectorapi.Incremental},
78 {ID: "couchdb_httpd_status_codes_501", Name: "501 Not Implemented", Algo: collectorapi.Incremental},
79 {ID: "couchdb_httpd_status_codes_503", Name: "503 Service Unavailable", Algo: collectorapi.Incremental},
80 },
81 },
82 {
83 ID: "response_code_classes",
84 Title: "HTTP response status code classes",
85 Units: "responses/s",
86 Fam: "httptraffic",
87 Ctx: "couchdb.response_code_classes",
88 Type: collectorapi.Stacked,
89 Dims: Dims{
90 {ID: "couchdb_httpd_status_codes_2xx", Name: "2xx Success", Algo: collectorapi.Incremental},
91 {ID: "couchdb_httpd_status_codes_3xx", Name: "3xx Redirection", Algo: collectorapi.Incremental},
92 {ID: "couchdb_httpd_status_codes_4xx", Name: "4xx Client error", Algo: collectorapi.Incremental},
93 {ID: "couchdb_httpd_status_codes_5xx", Name: "5xx Server error", Algo: collectorapi.Incremental},
94 },
95 },
96 }
97
98 var serverOperationsCharts = Charts{
99 {
100 ID: "active_tasks",
101 Title: "Active task breakdown",
102 Units: "tasks",
103 Fam: "ops",
104 Ctx: "couchdb.active_tasks",
105 Type: collectorapi.Stacked,
106 Dims: Dims{
107 {ID: "active_tasks_indexer", Name: "Indexer"},
108 {ID: "active_tasks_database_compaction", Name: "DB Compaction"},
109 {ID: "active_tasks_replication", Name: "Replication"},
110 {ID: "active_tasks_view_compaction", Name: "View Compaction"},
111 },
112 },
113 {
114 ID: "replicator_jobs",
115 Title: "Replicator job breakdown",
116 Units: "jobs",
117 Fam: "ops",
118 Ctx: "couchdb.replicator_jobs",
119 Type: collectorapi.Stacked,
120 Dims: Dims{
121 {ID: "couch_replicator_jobs_running", Name: "Running"},
122 {ID: "couch_replicator_jobs_pending", Name: "Pending"},
123 {ID: "couch_replicator_jobs_crashed", Name: "Crashed"},
124 {ID: "internal_replication_jobs", Name: "Internal replication jobs"},
125 },
126 },
127 {
128 ID: "open_files",
129 Title: "Open files",
130 Units: "files",
131 Fam: "ops",
132 Ctx: "couchdb.open_files",
133 Dims: Dims{
134 {ID: "couchdb_open_os_files", Name: "# files"},
135 },
136 },
137 }
138
139 var erlangStatisticsCharts = Charts{
140 {
141 ID: "erlang_memory",
142 Title: "Erlang VM memory usage",
143 Units: "B",
144 Fam: "erlang",
145 Ctx: "couchdb.erlang_vm_memory",
146 Type: collectorapi.Stacked,
147 Dims: Dims{
148 {ID: "memory_atom", Name: "atom"},
149 {ID: "memory_binary", Name: "binaries"},
150 {ID: "memory_code", Name: "code"},
151 {ID: "memory_ets", Name: "ets"},
152 {ID: "memory_processes", Name: "procs"},
153 {ID: "memory_other", Name: "other"},
154 },
155 },
156 {
157 ID: "erlang_proc_counts",
158 Title: "Process counts",
159 Units: "processes",
160 Fam: "erlang",
161 Ctx: "couchdb.proccounts",
162 Dims: Dims{
163 {ID: "os_proc_count", Name: "OS procs"},
164 {ID: "process_count", Name: "erl procs"},
165 },
166 },
167 {
168 ID: "erlang_peak_msg_queue",
169 Title: "Peak message queue size",
170 Units: "messages",
171 Fam: "erlang",
172 Ctx: "couchdb.peakmsgqueue",
173 Dims: Dims{
174 {ID: "peak_msg_queue", Name: "peak size"},
175 },
176 },
177 {
178 ID: "erlang_reductions",
179 Title: "Erlang reductions",
180 Units: "reductions",
181 Fam: "erlang",
182 Ctx: "couchdb.reductions",
183 Type: collectorapi.Stacked,
184 Dims: Dims{
185 {ID: "reductions", Name: "reductions", Algo: collectorapi.Incremental},
186 },
187 },
188 }
189
190 var (
191 dbSpecificCharts = Charts{
192 {
193 ID: "db_sizes_file",
194 Title: "Database sizes (file)",
195 Units: "B",
196 Fam: "perdbstats",
197 Ctx: "couchdb.db_sizes_file",
198 },
199 {
200 ID: "db_sizes_external",
201 Title: "Database sizes (external)",
202 Units: "B",
203 Fam: "perdbstats",
204 Ctx: "couchdb.db_sizes_external",
205 },
206 {
207 ID: "db_sizes_active",
208 Title: "Database sizes (active)",
209 Units: "B",
210 Fam: "perdbstats",
211 Ctx: "couchdb.db_sizes_active",
212 },
213 {
214 ID: "db_doc_counts",
215 Title: "Database # of docs",
216 Units: "docs",
217 Fam: "perdbstats",
218 Ctx: "couchdb.db_doc_count",
219 },
220 {
221 ID: "db_doc_del_counts",
222 Title: "Database # of deleted docs",
223 Units: "docs",
224 Fam: "perdbstats",
225 Ctx: "couchdb.db_doc_del_count",
226 },
227 }
228 )