github.com/netdata/go.d.plugin@v0.58.1/modules/couchdb/metrics.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package couchdb 4 5 // https://docs.couchdb.org/en/stable/api/index.html 6 7 type cdbMetrics struct { 8 // https://docs.couchdb.org/en/stable/api/server/common.html#active-tasks 9 ActiveTasks []cdbActiveTask 10 // https://docs.couchdb.org/en/stable/api/server/common.html#node-node-name-stats 11 NodeStats *cdbNodeStats 12 // https://docs.couchdb.org/en/stable/api/server/common.html#node-node-name-system 13 NodeSystem *cdbNodeSystem 14 // https://docs.couchdb.org/en/stable/api/database/common.html 15 DBStats []cdbDBStats 16 } 17 18 func (m cdbMetrics) empty() bool { 19 switch { 20 case m.hasActiveTasks(), m.hasNodeStats(), m.hasNodeSystem(), m.hasDBStats(): 21 return false 22 } 23 return true 24 } 25 26 func (m cdbMetrics) hasActiveTasks() bool { return m.ActiveTasks != nil } 27 func (m cdbMetrics) hasNodeStats() bool { return m.NodeStats != nil } 28 func (m cdbMetrics) hasNodeSystem() bool { return m.NodeSystem != nil } 29 func (m cdbMetrics) hasDBStats() bool { return m.DBStats != nil } 30 31 type cdbActiveTask struct { 32 Type string `json:"type"` 33 } 34 35 type cdbNodeStats struct { 36 CouchDB struct { 37 DatabaseReads struct { 38 Value float64 `stm:"" json:"value"` 39 } `stm:"database_reads" json:"database_reads"` 40 DatabaseWrites struct { 41 Value float64 `stm:"" json:"value"` 42 } `stm:"database_writes" json:"database_writes"` 43 HTTPd struct { 44 ViewReads struct { 45 Value float64 `stm:"" json:"value"` 46 } `stm:"view_reads" json:"view_reads"` 47 } `stm:"httpd" json:"httpd"` 48 HTTPdRequestMethods struct { 49 Copy struct { 50 Value float64 `stm:"" json:"value"` 51 } `stm:"COPY" json:"COPY"` 52 Delete struct { 53 Value float64 `stm:"" json:"value"` 54 } `stm:"DELETE" json:"DELETE"` 55 Get struct { 56 Value float64 `stm:"" json:"value"` 57 } `stm:"GET" json:"GET"` 58 Head struct { 59 Value float64 `stm:"" json:"value"` 60 } `stm:"HEAD" json:"HEAD"` 61 Options struct { 62 Value float64 `stm:"" json:"value"` 63 } `stm:"OPTIONS" json:"OPTIONS"` 64 Post struct { 65 Value float64 `stm:"" json:"value"` 66 } `stm:"POST" json:"POST"` 67 Put struct { 68 Value float64 `stm:"" json:"value"` 69 } `stm:"PUT" json:"PUT"` 70 } `stm:"httpd_request_methods" json:"httpd_request_methods"` 71 HTTPdStatusCodes struct { 72 Code200 struct { 73 Value float64 `stm:"" json:"value"` 74 } `stm:"200" json:"200"` 75 Code201 struct { 76 Value float64 `stm:"" json:"value"` 77 } `stm:"201" json:"201"` 78 Code202 struct { 79 Value float64 `stm:"" json:"value"` 80 } `stm:"202" json:"202"` 81 Code204 struct { 82 Value float64 `stm:"" json:"value"` 83 } `stm:"204" json:"204"` 84 Code206 struct { 85 Value float64 `stm:"" json:"value"` 86 } `stm:"206" json:"206"` 87 Code301 struct { 88 Value float64 `stm:"" json:"value"` 89 } `stm:"301" json:"301"` 90 Code302 struct { 91 Value float64 `stm:"" json:"value"` 92 } `stm:"302" json:"302"` 93 Code304 struct { 94 Value float64 `stm:"" json:"value"` 95 } `stm:"304" json:"304"` 96 Code400 struct { 97 Value float64 `stm:"" json:"value"` 98 } `stm:"400" json:"400"` 99 Code401 struct { 100 Value float64 `stm:"" json:"value"` 101 } `stm:"401" json:"401"` 102 Code403 struct { 103 Value float64 `stm:"" json:"value"` 104 } `stm:"403" json:"403"` 105 Code404 struct { 106 Value float64 `stm:"" json:"value"` 107 } `stm:"404" json:"404"` 108 Code405 struct { 109 Value float64 `stm:"" json:"value"` 110 } `stm:"405" json:"405"` 111 Code406 struct { 112 Value float64 `stm:"" json:"value"` 113 } `stm:"406" json:"406"` 114 Code409 struct { 115 Value float64 `stm:"" json:"value"` 116 } `stm:"409" json:"409"` 117 Code412 struct { 118 Value float64 `stm:"" json:"value"` 119 } `stm:"412" json:"412"` 120 Code413 struct { 121 Value float64 `stm:"" json:"value"` 122 } `stm:"413" json:"413"` 123 Code414 struct { 124 Value float64 `stm:"" json:"value"` 125 } `stm:"414" json:"414"` 126 Code415 struct { 127 Value float64 `stm:"" json:"value"` 128 } `stm:"415" json:"415"` 129 Code416 struct { 130 Value float64 `stm:"" json:"value"` 131 } `stm:"416" json:"416"` 132 Code417 struct { 133 Value float64 `stm:"" json:"value"` 134 } `stm:"417" json:"417"` 135 Code500 struct { 136 Value float64 `stm:"" json:"value"` 137 } `stm:"500" json:"500"` 138 Code501 struct { 139 Value float64 `stm:"" json:"value"` 140 } `stm:"501" json:"501"` 141 Code503 struct { 142 Value float64 `stm:"" json:"value"` 143 } `stm:"503" json:"503"` 144 } `stm:"httpd_status_codes" json:"httpd_status_codes"` 145 OpenOSFiles struct { 146 Value float64 `stm:"" json:"value"` 147 } `stm:"open_os_files" json:"open_os_files"` 148 } `stm:"couchdb" json:"couchdb"` 149 CouchReplicator struct { 150 Jobs struct { 151 Running struct { 152 Value float64 `stm:"" json:"value"` 153 } `stm:"running" json:"running"` 154 Pending struct { 155 Value float64 `stm:"" json:"value"` 156 } `stm:"pending" json:"pending"` 157 Crashed struct { 158 Value float64 `stm:"" json:"value"` 159 } `stm:"crashed" json:"crashed"` 160 } `stm:"jobs" json:"jobs"` 161 } `stm:"couch_replicator" json:"couch_replicator"` 162 } 163 164 type cdbNodeSystem struct { 165 Memory struct { 166 Other float64 `stm:"other" json:"other"` 167 Atom float64 `stm:"atom" json:"atom"` 168 AtomUsed float64 `stm:"atom_used" json:"atom_used"` 169 Processes float64 `stm:"processes" json:"processes"` 170 Binary float64 `stm:"binary" json:"binary"` 171 Code float64 `stm:"code" json:"code"` 172 Ets float64 `stm:"ets" json:"ets"` 173 } `stm:"memory" json:"memory"` 174 175 RunQueue float64 `stm:"run_queue" json:"run_queue"` 176 EtsTableCount float64 `stm:"ets_table_count" json:"ets_table_count"` 177 ContextSwitches float64 `stm:"context_switches" json:"context_switches"` 178 Reductions float64 `stm:"reductions" json:"reductions"` 179 IOInput float64 `stm:"io_input" json:"io_input"` 180 IOOutput float64 `stm:"io_output" json:"io_output"` 181 OSProcCount float64 `stm:"os_proc_count" json:"os_proc_count"` 182 ProcessCount float64 `stm:"process_count" json:"process_count"` 183 InternalReplicationJobs float64 `stm:"internal_replication_jobs" json:"internal_replication_jobs"` 184 185 MessageQueues map[string]interface{} `json:"message_queues"` 186 } 187 188 type cdbDBStats struct { 189 Key string 190 Error string 191 Info struct { 192 Sizes struct { 193 File float64 `stm:"file" json:"file"` 194 External float64 `stm:"external" json:"external"` 195 Active float64 `stm:"active" json:"active"` 196 } `stm:"db_sizes" json:"sizes"` 197 DocDelCount float64 `stm:"db_doc_del_counts" json:"doc_del_count"` 198 DocCount float64 `stm:"db_doc_counts" json:"doc_count"` 199 } 200 }