summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/couchdb/metrics.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/go/collectors/go.d.plugin/modules/couchdb/metrics.go200
1 files changed, 200 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/couchdb/metrics.go b/src/go/collectors/go.d.plugin/modules/couchdb/metrics.go
new file mode 100644
index 000000000..4d2f02679
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/couchdb/metrics.go
@@ -0,0 +1,200 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package couchdb
+
+// https://docs.couchdb.org/en/stable/api/index.html
+
+type cdbMetrics struct {
+ // https://docs.couchdb.org/en/stable/api/server/common.html#active-tasks
+ ActiveTasks []cdbActiveTask
+ // https://docs.couchdb.org/en/stable/api/server/common.html#node-node-name-stats
+ NodeStats *cdbNodeStats
+ // https://docs.couchdb.org/en/stable/api/server/common.html#node-node-name-system
+ NodeSystem *cdbNodeSystem
+ // https://docs.couchdb.org/en/stable/api/database/common.html
+ DBStats []cdbDBStats
+}
+
+func (m cdbMetrics) empty() bool {
+ switch {
+ case m.hasActiveTasks(), m.hasNodeStats(), m.hasNodeSystem(), m.hasDBStats():
+ return false
+ }
+ return true
+}
+
+func (m cdbMetrics) hasActiveTasks() bool { return m.ActiveTasks != nil }
+func (m cdbMetrics) hasNodeStats() bool { return m.NodeStats != nil }
+func (m cdbMetrics) hasNodeSystem() bool { return m.NodeSystem != nil }
+func (m cdbMetrics) hasDBStats() bool { return m.DBStats != nil }
+
+type cdbActiveTask struct {
+ Type string `json:"type"`
+}
+
+type cdbNodeStats struct {
+ CouchDB struct {
+ DatabaseReads struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"database_reads" json:"database_reads"`
+ DatabaseWrites struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"database_writes" json:"database_writes"`
+ HTTPd struct {
+ ViewReads struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"view_reads" json:"view_reads"`
+ } `stm:"httpd" json:"httpd"`
+ HTTPdRequestMethods struct {
+ Copy struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"COPY" json:"COPY"`
+ Delete struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"DELETE" json:"DELETE"`
+ Get struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"GET" json:"GET"`
+ Head struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"HEAD" json:"HEAD"`
+ Options struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"OPTIONS" json:"OPTIONS"`
+ Post struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"POST" json:"POST"`
+ Put struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"PUT" json:"PUT"`
+ } `stm:"httpd_request_methods" json:"httpd_request_methods"`
+ HTTPdStatusCodes struct {
+ Code200 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"200" json:"200"`
+ Code201 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"201" json:"201"`
+ Code202 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"202" json:"202"`
+ Code204 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"204" json:"204"`
+ Code206 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"206" json:"206"`
+ Code301 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"301" json:"301"`
+ Code302 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"302" json:"302"`
+ Code304 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"304" json:"304"`
+ Code400 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"400" json:"400"`
+ Code401 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"401" json:"401"`
+ Code403 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"403" json:"403"`
+ Code404 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"404" json:"404"`
+ Code405 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"405" json:"405"`
+ Code406 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"406" json:"406"`
+ Code409 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"409" json:"409"`
+ Code412 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"412" json:"412"`
+ Code413 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"413" json:"413"`
+ Code414 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"414" json:"414"`
+ Code415 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"415" json:"415"`
+ Code416 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"416" json:"416"`
+ Code417 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"417" json:"417"`
+ Code500 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"500" json:"500"`
+ Code501 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"501" json:"501"`
+ Code503 struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"503" json:"503"`
+ } `stm:"httpd_status_codes" json:"httpd_status_codes"`
+ OpenOSFiles struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"open_os_files" json:"open_os_files"`
+ } `stm:"couchdb" json:"couchdb"`
+ CouchReplicator struct {
+ Jobs struct {
+ Running struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"running" json:"running"`
+ Pending struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"pending" json:"pending"`
+ Crashed struct {
+ Value float64 `stm:"" json:"value"`
+ } `stm:"crashed" json:"crashed"`
+ } `stm:"jobs" json:"jobs"`
+ } `stm:"couch_replicator" json:"couch_replicator"`
+}
+
+type cdbNodeSystem struct {
+ Memory struct {
+ Other float64 `stm:"other" json:"other"`
+ Atom float64 `stm:"atom" json:"atom"`
+ AtomUsed float64 `stm:"atom_used" json:"atom_used"`
+ Processes float64 `stm:"processes" json:"processes"`
+ Binary float64 `stm:"binary" json:"binary"`
+ Code float64 `stm:"code" json:"code"`
+ Ets float64 `stm:"ets" json:"ets"`
+ } `stm:"memory" json:"memory"`
+
+ RunQueue float64 `stm:"run_queue" json:"run_queue"`
+ EtsTableCount float64 `stm:"ets_table_count" json:"ets_table_count"`
+ ContextSwitches float64 `stm:"context_switches" json:"context_switches"`
+ Reductions float64 `stm:"reductions" json:"reductions"`
+ IOInput float64 `stm:"io_input" json:"io_input"`
+ IOOutput float64 `stm:"io_output" json:"io_output"`
+ OSProcCount float64 `stm:"os_proc_count" json:"os_proc_count"`
+ ProcessCount float64 `stm:"process_count" json:"process_count"`
+ InternalReplicationJobs float64 `stm:"internal_replication_jobs" json:"internal_replication_jobs"`
+
+ MessageQueues map[string]interface{} `json:"message_queues"`
+}
+
+type cdbDBStats struct {
+ Key string
+ Error string
+ Info struct {
+ Sizes struct {
+ File float64 `stm:"file" json:"file"`
+ External float64 `stm:"external" json:"external"`
+ Active float64 `stm:"active" json:"active"`
+ } `stm:"db_sizes" json:"sizes"`
+ DocDelCount float64 `stm:"db_doc_del_counts" json:"doc_del_count"`
+ DocCount float64 `stm:"db_doc_counts" json:"doc_count"`
+ }
+}