github.com/netdata/go.d.plugin@v0.58.1/modules/redis/charts.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package redis 4 5 import "github.com/netdata/go.d.plugin/agent/module" 6 7 const ( 8 prioConnections = module.Priority + iota 9 prioClients 10 11 prioPingLatency 12 prioCommands 13 prioKeyLookupHitRate 14 15 prioMemory 16 prioMemoryFragmentationRatio 17 prioKeyEviction 18 19 prioNet 20 21 prioConnectedReplicas 22 prioMasterLinkStatus 23 prioMasterLastIOSinceTime 24 prioMasterLinkDownSinceTime 25 26 prioPersistenceRDBChanges 27 prioPersistenceRDBBgSaveNow 28 prioPersistenceRDBBgSaveHealth 29 prioPersistenceRDBBgSaveLastSaveSinceTime 30 prioPersistenceAOFSize 31 32 prioCommandsCalls 33 prioCommandsUsec 34 prioCommandsUsecPerSec 35 36 prioKeyExpiration 37 prioKeys 38 prioExpiresKeys 39 40 prioUptime 41 ) 42 43 var redisCharts = module.Charts{ 44 chartConnections.Copy(), 45 chartClients.Copy(), 46 47 pingLatencyCommands.Copy(), 48 chartCommands.Copy(), 49 chartKeyLookupHitRate.Copy(), 50 51 chartMemory.Copy(), 52 chartMemoryFragmentationRatio.Copy(), 53 chartKeyEviction.Copy(), 54 55 chartNet.Copy(), 56 57 chartConnectedReplicas.Copy(), 58 59 chartPersistenceRDBChanges.Copy(), 60 chartPersistenceRDBBgSaveNow.Copy(), 61 chartPersistenceRDBBgSaveHealth.Copy(), 62 chartPersistenceRDBLastSaveSinceTime.Copy(), 63 64 chartCommandsCalls.Copy(), 65 chartCommandsUsec.Copy(), 66 chartCommandsUsecPerSec.Copy(), 67 68 chartKeyExpiration.Copy(), 69 chartKeys.Copy(), 70 chartExpiresKeys.Copy(), 71 72 chartUptime.Copy(), 73 } 74 75 var ( 76 chartConnections = module.Chart{ 77 ID: "connections", 78 Title: "Accepted and rejected (maxclients limit) connections", 79 Units: "connections/s", 80 Fam: "connections", 81 Ctx: "redis.connections", 82 Priority: prioConnections, 83 Dims: module.Dims{ 84 {ID: "total_connections_received", Name: "accepted", Algo: module.Incremental}, 85 {ID: "rejected_connections", Name: "rejected", Algo: module.Incremental}, 86 }, 87 } 88 chartClients = module.Chart{ 89 ID: "clients", 90 Title: "Clients", 91 Units: "clients", 92 Fam: "connections", 93 Ctx: "redis.clients", 94 Priority: prioClients, 95 Dims: module.Dims{ 96 {ID: "connected_clients", Name: "connected"}, 97 {ID: "blocked_clients", Name: "blocked"}, 98 {ID: "tracking_clients", Name: "tracking"}, 99 {ID: "clients_in_timeout_table", Name: "in_timeout_table"}, 100 }, 101 } 102 ) 103 104 var ( 105 pingLatencyCommands = module.Chart{ 106 ID: "ping_latency", 107 Title: "Ping latency", 108 Units: "seconds", 109 Fam: "performance", 110 Ctx: "redis.ping_latency", 111 Priority: prioPingLatency, 112 Type: module.Area, 113 Dims: module.Dims{ 114 {ID: "ping_latency_min", Name: "min", Div: 1e6}, 115 {ID: "ping_latency_max", Name: "max", Div: 1e6}, 116 {ID: "ping_latency_avg", Name: "avg", Div: 1e6}, 117 }, 118 } 119 chartCommands = module.Chart{ 120 ID: "commands", 121 Title: "Processed commands", 122 Units: "commands/s", 123 Fam: "performance", 124 Ctx: "redis.commands", 125 Priority: prioCommands, 126 Dims: module.Dims{ 127 {ID: "total_commands_processed", Name: "processed", Algo: module.Incremental}, 128 }, 129 } 130 chartKeyLookupHitRate = module.Chart{ 131 ID: "key_lookup_hit_rate", 132 Title: "Keys lookup hit rate", 133 Units: "percentage", 134 Fam: "performance", 135 Ctx: "redis.keyspace_lookup_hit_rate", 136 Priority: prioKeyLookupHitRate, 137 Dims: module.Dims{ 138 {ID: "keyspace_hit_rate", Name: "lookup_hit_rate", Div: precision}, 139 }, 140 } 141 ) 142 143 var ( 144 chartMemory = module.Chart{ 145 ID: "memory", 146 Title: "Memory usage", 147 Units: "bytes", 148 Fam: "memory", 149 Ctx: "redis.memory", 150 Type: module.Area, 151 Priority: prioMemory, 152 Dims: module.Dims{ 153 {ID: "maxmemory", Name: "max"}, 154 {ID: "used_memory", Name: "used"}, 155 {ID: "used_memory_rss", Name: "rss"}, 156 {ID: "used_memory_peak", Name: "peak"}, 157 {ID: "used_memory_dataset", Name: "dataset"}, 158 {ID: "used_memory_lua", Name: "lua"}, 159 {ID: "used_memory_scripts", Name: "scripts"}, 160 }, 161 } 162 chartMemoryFragmentationRatio = module.Chart{ 163 ID: "mem_fragmentation_ratio", 164 Title: "Ratio between used_memory_rss and used_memory", 165 Units: "ratio", 166 Fam: "memory", 167 Ctx: "redis.mem_fragmentation_ratio", 168 Priority: prioMemoryFragmentationRatio, 169 Dims: module.Dims{ 170 {ID: "mem_fragmentation_ratio", Name: "mem_fragmentation", Div: precision}, 171 }, 172 } 173 chartKeyEviction = module.Chart{ 174 ID: "key_eviction_events", 175 Title: "Evicted keys due to maxmemory limit", 176 Units: "keys/s", 177 Fam: "memory", 178 Ctx: "redis.key_eviction_events", 179 Priority: prioKeyEviction, 180 Dims: module.Dims{ 181 {ID: "evicted_keys", Name: "evicted", Algo: module.Incremental}, 182 }, 183 } 184 ) 185 186 var ( 187 chartNet = module.Chart{ 188 ID: "net", 189 Title: "Bandwidth", 190 Units: "kilobits/s", 191 Fam: "network", 192 Ctx: "redis.net", 193 Type: module.Area, 194 Priority: prioNet, 195 Dims: module.Dims{ 196 {ID: "total_net_input_bytes", Name: "received", Mul: 8, Div: 1024, Algo: module.Incremental}, 197 {ID: "total_net_output_bytes", Name: "sent", Mul: -8, Div: 1024, Algo: module.Incremental}, 198 }, 199 } 200 ) 201 202 var ( 203 chartPersistenceRDBChanges = module.Chart{ 204 ID: "persistence", 205 Title: "Operations that produced changes since the last SAVE or BGSAVE", 206 Units: "operations", 207 Fam: "persistence", 208 Ctx: "redis.rdb_changes", 209 Priority: prioPersistenceRDBChanges, 210 Dims: module.Dims{ 211 {ID: "rdb_changes_since_last_save", Name: "changes"}, 212 }, 213 } 214 chartPersistenceRDBBgSaveNow = module.Chart{ 215 ID: "bgsave_now", 216 Title: "Duration of the on-going RDB save operation if any", 217 Units: "seconds", 218 Fam: "persistence", 219 Ctx: "redis.bgsave_now", 220 Priority: prioPersistenceRDBBgSaveNow, 221 Dims: module.Dims{ 222 {ID: "rdb_current_bgsave_time_sec", Name: "current_bgsave_time"}, 223 }, 224 } 225 chartPersistenceRDBBgSaveHealth = module.Chart{ 226 ID: "bgsave_health", 227 Title: "Status of the last RDB save operation (0: ok, 1: err)", 228 Units: "status", 229 Fam: "persistence", 230 Ctx: "redis.bgsave_health", 231 Priority: prioPersistenceRDBBgSaveHealth, 232 Dims: module.Dims{ 233 {ID: "rdb_last_bgsave_status", Name: "last_bgsave"}, 234 }, 235 } 236 chartPersistenceRDBLastSaveSinceTime = module.Chart{ 237 ID: "bgsave_last_rdb_save_since_time", 238 Title: "Time elapsed since the last successful RDB save", 239 Units: "seconds", 240 Fam: "persistence", 241 Ctx: "redis.bgsave_last_rdb_save_since_time", 242 Priority: prioPersistenceRDBBgSaveLastSaveSinceTime, 243 Dims: module.Dims{ 244 {ID: "rdb_last_save_time", Name: "last_bgsave_time"}, 245 }, 246 } 247 248 chartPersistenceAOFSize = module.Chart{ 249 ID: "persistence_aof_size", 250 Title: "AOF file size", 251 Units: "bytes", 252 Fam: "persistence", 253 Ctx: "redis.aof_file_size", 254 Priority: prioPersistenceAOFSize, 255 Dims: module.Dims{ 256 {ID: "aof_current_size", Name: "current"}, 257 {ID: "aof_base_size", Name: "base"}, 258 }, 259 } 260 ) 261 262 var ( 263 chartCommandsCalls = module.Chart{ 264 ID: "commands_calls", 265 Title: "Calls per command", 266 Units: "calls/s", 267 Fam: "commands", 268 Ctx: "redis.commands_calls", 269 Type: module.Stacked, 270 Priority: prioCommandsCalls, 271 } 272 chartCommandsUsec = module.Chart{ 273 ID: "commands_usec", 274 Title: "Total CPU time consumed by the commands", 275 Units: "microseconds", 276 Fam: "commands", 277 Ctx: "redis.commands_usec", 278 Type: module.Stacked, 279 Priority: prioCommandsUsec, 280 } 281 chartCommandsUsecPerSec = module.Chart{ 282 ID: "commands_usec_per_sec", 283 Title: "Average CPU consumed per command execution", 284 Units: "microseconds/s", 285 Fam: "commands", 286 Ctx: "redis.commands_usec_per_sec", 287 Priority: prioCommandsUsecPerSec, 288 } 289 ) 290 291 var ( 292 chartKeyExpiration = module.Chart{ 293 ID: "key_expiration_events", 294 Title: "Expired keys", 295 Units: "keys/s", 296 Fam: "keyspace", 297 Ctx: "redis.key_expiration_events", 298 Priority: prioKeyExpiration, 299 Dims: module.Dims{ 300 {ID: "expired_keys", Name: "expired", Algo: module.Incremental}, 301 }, 302 } 303 chartKeys = module.Chart{ 304 ID: "keys", 305 Title: "Keys per database", 306 Units: "keys", 307 Fam: "keyspace", 308 Ctx: "redis.database_keys", 309 Type: module.Stacked, 310 Priority: prioKeys, 311 } 312 chartExpiresKeys = module.Chart{ 313 ID: "expires_keys", 314 Title: "Keys with an expiration per database", 315 Units: "keys", 316 Fam: "keyspace", 317 Ctx: "redis.database_expires_keys", 318 Type: module.Stacked, 319 Priority: prioExpiresKeys, 320 } 321 ) 322 323 var ( 324 chartConnectedReplicas = module.Chart{ 325 ID: "connected_replicas", 326 Title: "Connected replicas", 327 Units: "replicas", 328 Fam: "replication", 329 Ctx: "redis.connected_replicas", 330 Priority: prioConnectedReplicas, 331 Dims: module.Dims{ 332 {ID: "connected_slaves", Name: "connected"}, 333 }, 334 } 335 masterLinkStatusChart = module.Chart{ 336 ID: "master_last_status", 337 Title: "Master link status", 338 Units: "status", 339 Fam: "replication", 340 Ctx: "redis.master_link_status", 341 Priority: prioMasterLinkStatus, 342 Dims: module.Dims{ 343 {ID: "master_link_status_up", Name: "up"}, 344 {ID: "master_link_status_down", Name: "down"}, 345 }, 346 } 347 masterLastIOSinceTimeChart = module.Chart{ 348 ID: "master_last_io_since_time", 349 Title: "Time elapsed since the last interaction with master", 350 Units: "seconds", 351 Fam: "replication", 352 Ctx: "redis.master_last_io_since_time", 353 Priority: prioMasterLastIOSinceTime, 354 Dims: module.Dims{ 355 {ID: "master_last_io_seconds_ago", Name: "time"}, 356 }, 357 } 358 masterLinkDownSinceTimeChart = module.Chart{ 359 ID: "master_link_down_since_stime", 360 Title: "Time elapsed since the link between master and slave is down", 361 Units: "seconds", 362 Fam: "replication", 363 Ctx: "redis.master_link_down_since_time", 364 Priority: prioMasterLinkDownSinceTime, 365 Dims: module.Dims{ 366 {ID: "master_link_down_since_seconds", Name: "time"}, 367 }, 368 } 369 ) 370 371 var ( 372 chartUptime = module.Chart{ 373 ID: "uptime", 374 Title: "Uptime", 375 Units: "seconds", 376 Fam: "uptime", 377 Ctx: "redis.uptime", 378 Priority: prioUptime, 379 Dims: module.Dims{ 380 {ID: "uptime_in_seconds", Name: "uptime"}, 381 }, 382 } 383 )