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  )