| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | package zookeeper |
| 4 | |
| 5 | import "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi" |
| 6 | |
| 7 | const ( |
| 8 | prioRequests = collectorapi.Priority + iota |
| 9 | prioRequestsLatency |
| 10 | prioStaleRequests |
| 11 | prioStaleRequestsDropped |
| 12 | |
| 13 | prioAliveConnections |
| 14 | prioConnectionsDropped |
| 15 | prioConnectionsRejected |
| 16 | prioAuthFails |
| 17 | prioGlobalSessions |
| 18 | |
| 19 | prioServerState |
| 20 | |
| 21 | prioThrottledOps |
| 22 | |
| 23 | prioPackets |
| 24 | |
| 25 | prioFileDescriptors |
| 26 | |
| 27 | prioNodesCount |
| 28 | prioWatchesCount |
| 29 | prioApproxDataSize |
| 30 | |
| 31 | prioUptime |
| 32 | ) |
| 33 | |
| 34 | var charts = collectorapi.Charts{ |
| 35 | chartRequests.Copy(), |
| 36 | chartRequestsLatency.Copy(), |
| 37 | chartStaleRequests.Copy(), |
| 38 | chartStaleRequestsDropped.Copy(), |
| 39 | |
| 40 | chartAliveConnections.Copy(), |
| 41 | chartConnectionsDropped.Copy(), |
| 42 | chartConnectionsRejected.Copy(), |
| 43 | chartAuthFailed.Copy(), |
| 44 | chartGlobalSessions.Copy(), |
| 45 | |
| 46 | chartServerState.Copy(), |
| 47 | chartThrottledOps.Copy(), |
| 48 | |
| 49 | chartPackets.Copy(), |
| 50 | |
| 51 | chartFileDescriptors.Copy(), |
| 52 | |
| 53 | chartNodesCount.Copy(), |
| 54 | chartWatchesCount.Copy(), |
| 55 | chartApproxDataSize.Copy(), |
| 56 | |
| 57 | chartUptime.Copy(), |
| 58 | } |
| 59 | |
| 60 | var ( |
| 61 | chartRequests = collectorapi.Chart{ |
| 62 | ID: "requests", |
| 63 | Title: "Outstanding Requests", |
| 64 | Units: "requests", |
| 65 | Fam: "requests", |
| 66 | Ctx: "zookeeper.requests", |
| 67 | Priority: prioRequests, |
| 68 | Dims: collectorapi.Dims{ |
| 69 | {ID: "outstanding_requests", Name: "outstanding"}, |
| 70 | }, |
| 71 | } |
| 72 | chartRequestsLatency = collectorapi.Chart{ |
| 73 | ID: "requests_latency", |
| 74 | Title: "Requests Latency", |
| 75 | Units: "ms", |
| 76 | Fam: "requests", |
| 77 | Ctx: "zookeeper.requests_latency", |
| 78 | Priority: prioRequestsLatency, |
| 79 | Dims: collectorapi.Dims{ |
| 80 | {ID: "min_latency", Name: "min", Div: 1000}, |
| 81 | {ID: "avg_latency", Name: "avg", Div: 1000}, |
| 82 | {ID: "max_latency", Name: "max", Div: 1000}, |
| 83 | }, |
| 84 | } |
| 85 | chartStaleRequests = collectorapi.Chart{ |
| 86 | ID: "stale_requests", |
| 87 | Title: "Stale Requests", |
| 88 | Units: "requests/s", |
| 89 | Fam: "requests", |
| 90 | Ctx: "zookeeper.stale_requests", |
| 91 | Priority: prioStaleRequests, |
| 92 | Dims: collectorapi.Dims{ |
| 93 | {ID: "stale_requests", Name: "stale", Algo: collectorapi.Incremental}, |
| 94 | }, |
| 95 | } |
| 96 | chartStaleRequestsDropped = collectorapi.Chart{ |
| 97 | ID: "stale_requests_dropped", |
| 98 | Title: "Stale Requests Dropped", |
| 99 | Units: "requests/s", |
| 100 | Fam: "requests", |
| 101 | Ctx: "zookeeper.stale_requests_dropped", |
| 102 | Priority: prioStaleRequestsDropped, |
| 103 | Dims: collectorapi.Dims{ |
| 104 | {ID: "stale_requests_dropped", Name: "dropped", Algo: collectorapi.Incremental}, |
| 105 | }, |
| 106 | } |
| 107 | |
| 108 | chartAliveConnections = collectorapi.Chart{ |
| 109 | ID: "connections", |
| 110 | Title: "Alive Connections", |
| 111 | Units: "connections", |
| 112 | Fam: "connections", |
| 113 | Ctx: "zookeeper.connections", |
| 114 | Priority: prioAliveConnections, |
| 115 | Dims: collectorapi.Dims{ |
| 116 | {ID: "num_alive_connections", Name: "alive"}, |
| 117 | }, |
| 118 | } |
| 119 | chartConnectionsDropped = collectorapi.Chart{ |
| 120 | ID: "connections_dropped", |
| 121 | Title: "Dropped Connections", |
| 122 | Units: "connections/s", |
| 123 | Fam: "connections", |
| 124 | Ctx: "zookeeper.connections_dropped", |
| 125 | Priority: prioConnectionsDropped, |
| 126 | Dims: collectorapi.Dims{ |
| 127 | {ID: "connection_drop_count", Name: "dropped", Algo: collectorapi.Incremental}, |
| 128 | }, |
| 129 | } |
| 130 | chartConnectionsRejected = collectorapi.Chart{ |
| 131 | ID: "connections_rejected", |
| 132 | Title: "Rejected Connections", |
| 133 | Units: "connections/s", |
| 134 | Fam: "connections", |
| 135 | Ctx: "zookeeper.connections_rejected", |
| 136 | Priority: prioConnectionsRejected, |
| 137 | Dims: collectorapi.Dims{ |
| 138 | {ID: "connection_rejected", Name: "rejected", Algo: collectorapi.Incremental}, |
| 139 | }, |
| 140 | } |
| 141 | chartAuthFailed = collectorapi.Chart{ |
| 142 | ID: "auth_failed_count", |
| 143 | Title: "Auth Fails", |
| 144 | Units: "fails/s", |
| 145 | Fam: "connections", |
| 146 | Ctx: "zookeeper.auth_fails", |
| 147 | Priority: prioAuthFails, |
| 148 | Dims: collectorapi.Dims{ |
| 149 | {ID: "auth_failed_count", Name: "auth", Algo: collectorapi.Incremental}, |
| 150 | }, |
| 151 | } |
| 152 | chartGlobalSessions = collectorapi.Chart{ |
| 153 | ID: "global_sessions", |
| 154 | Title: "Global Sessions", |
| 155 | Units: "sessions", |
| 156 | Fam: "connections", |
| 157 | Ctx: "zookeeper.global_sessions", |
| 158 | Priority: prioGlobalSessions, |
| 159 | Dims: collectorapi.Dims{ |
| 160 | {ID: "global_sessions", Name: "global"}, |
| 161 | }, |
| 162 | } |
| 163 | |
| 164 | chartServerState = collectorapi.Chart{ |
| 165 | ID: "server_state", |
| 166 | Title: "Server State", |
| 167 | Units: "state", |
| 168 | Fam: "server state", |
| 169 | Ctx: "zookeeper.server_state", |
| 170 | Priority: prioServerState, |
| 171 | Dims: collectorapi.Dims{ |
| 172 | {ID: "server_state_leader", Name: "leader"}, |
| 173 | {ID: "server_state_follower", Name: "follower"}, |
| 174 | {ID: "server_state_observer", Name: "observer"}, |
| 175 | {ID: "server_state_standalone", Name: "standalone"}, |
| 176 | }, |
| 177 | } |
| 178 | chartThrottledOps = collectorapi.Chart{ |
| 179 | ID: "throttled_ops", |
| 180 | Title: "Throttled Operations", |
| 181 | Units: "ops/s", |
| 182 | Fam: "server state", |
| 183 | Ctx: "zookeeper.throttled_ops", |
| 184 | Priority: prioThrottledOps, |
| 185 | Dims: collectorapi.Dims{ |
| 186 | {ID: "throttled_ops", Name: "throttled", Algo: collectorapi.Incremental}, |
| 187 | }, |
| 188 | } |
| 189 | |
| 190 | chartPackets = collectorapi.Chart{ |
| 191 | ID: "packets", |
| 192 | Title: "Packets", |
| 193 | Units: "pps", |
| 194 | Fam: "net", |
| 195 | Ctx: "zookeeper.packets", |
| 196 | Priority: prioPackets, |
| 197 | Dims: collectorapi.Dims{ |
| 198 | {ID: "packets_received", Name: "received", Algo: collectorapi.Incremental}, |
| 199 | {ID: "packets_sent", Name: "sent", Algo: collectorapi.Incremental, Mul: -1}, |
| 200 | }, |
| 201 | } |
| 202 | |
| 203 | chartFileDescriptors = collectorapi.Chart{ |
| 204 | ID: "file_descriptor", |
| 205 | Title: "Open File Descriptors", |
| 206 | Units: "file descriptors", |
| 207 | Fam: "file descriptors", |
| 208 | Ctx: "zookeeper.file_descriptor", |
| 209 | Priority: prioFileDescriptors, |
| 210 | Dims: collectorapi.Dims{ |
| 211 | {ID: "open_file_descriptor_count", Name: "open"}, |
| 212 | }, |
| 213 | Vars: collectorapi.Vars{ |
| 214 | {ID: "max_file_descriptor_count"}, |
| 215 | }, |
| 216 | } |
| 217 | |
| 218 | chartNodesCount = collectorapi.Chart{ |
| 219 | ID: "nodes", |
| 220 | Title: "Number of Nodes", |
| 221 | Units: "nodes", |
| 222 | Fam: "data tree", |
| 223 | Ctx: "zookeeper.nodes", |
| 224 | Priority: prioNodesCount, |
| 225 | Dims: collectorapi.Dims{ |
| 226 | {ID: "znode_count", Name: "znode"}, |
| 227 | {ID: "ephemerals_count", Name: "ephemerals"}, |
| 228 | }, |
| 229 | } |
| 230 | chartWatchesCount = collectorapi.Chart{ |
| 231 | ID: "watches", |
| 232 | Title: "Number of Watches", |
| 233 | Units: "watches", |
| 234 | Fam: "data tree", |
| 235 | Ctx: "zookeeper.watches", |
| 236 | Priority: prioWatchesCount, |
| 237 | Dims: collectorapi.Dims{ |
| 238 | {ID: "watch_count", Name: "watches"}, |
| 239 | }, |
| 240 | } |
| 241 | chartApproxDataSize = collectorapi.Chart{ |
| 242 | ID: "approximate_data_size", |
| 243 | Title: "Approximate Data Tree Size", |
| 244 | Units: "KiB", |
| 245 | Fam: "data tree", |
| 246 | Ctx: "zookeeper.approximate_data_size", |
| 247 | Priority: prioApproxDataSize, |
| 248 | Dims: collectorapi.Dims{ |
| 249 | {ID: "approximate_data_size", Name: "size", Div: 1024}, |
| 250 | }, |
| 251 | } |
| 252 | |
| 253 | chartUptime = collectorapi.Chart{ |
| 254 | ID: "uptime", |
| 255 | Title: "Uptime", |
| 256 | Units: "seconds", |
| 257 | Fam: "uptime", |
| 258 | Ctx: "zookeeper.uptime", |
| 259 | Priority: prioUptime, |
| 260 | Dims: collectorapi.Dims{ |
| 261 | {ID: "uptime"}, |
| 262 | }, |
| 263 | } |
| 264 | ) |