github.com/netdata/go.d.plugin@v0.58.1/modules/hdfs/charts.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package hdfs 4 5 import "github.com/netdata/go.d.plugin/agent/module" 6 7 type ( 8 Charts = module.Charts 9 Dims = module.Dims 10 Vars = module.Vars 11 ) 12 13 var jvmCharts = Charts{ 14 { 15 ID: "jvm_heap_memory", 16 Title: "Heap Memory", 17 Units: "MiB", 18 Fam: "jvm", 19 Ctx: "hdfs.heap_memory", 20 Type: module.Area, 21 Dims: Dims{ 22 {ID: "jvm_mem_heap_committed", Name: "committed", Div: 1000}, 23 {ID: "jvm_mem_heap_used", Name: "used", Div: 1000}, 24 }, 25 Vars: Vars{ 26 {ID: "jvm_mem_heap_max"}, 27 }, 28 }, 29 { 30 ID: "jvm_gc_count_total", 31 Title: "GC Events", 32 Units: "events/s", 33 Fam: "jvm", 34 Ctx: "hdfs.gc_count_total", 35 Dims: Dims{ 36 {ID: "jvm_gc_count", Name: "gc", Algo: module.Incremental}, 37 }, 38 }, 39 { 40 ID: "jvm_gc_time_total", 41 Title: "GC Time", 42 Units: "ms", 43 Fam: "jvm", 44 Ctx: "hdfs.gc_time_total", 45 Dims: Dims{ 46 {ID: "jvm_gc_time_millis", Name: "time", Algo: module.Incremental}, 47 }, 48 }, 49 { 50 ID: "jvm_gc_threshold", 51 Title: "Number of Times That the GC Threshold is Exceeded", 52 Units: "events/s", 53 Fam: "jvm", 54 Ctx: "hdfs.gc_threshold", 55 Dims: Dims{ 56 {ID: "jvm_gc_num_info_threshold_exceeded", Name: "info", Algo: module.Incremental}, 57 {ID: "jvm_gc_num_warn_threshold_exceeded", Name: "warn", Algo: module.Incremental}, 58 }, 59 }, 60 { 61 ID: "jvm_threads", 62 Title: "Number of Threads", 63 Units: "num", 64 Fam: "jvm", 65 Ctx: "hdfs.threads", 66 Type: module.Stacked, 67 Dims: Dims{ 68 {ID: "jvm_threads_new", Name: "new"}, 69 {ID: "jvm_threads_runnable", Name: "runnable"}, 70 {ID: "jvm_threads_blocked", Name: "blocked"}, 71 {ID: "jvm_threads_waiting", Name: "waiting"}, 72 {ID: "jvm_threads_timed_waiting", Name: "timed_waiting"}, 73 {ID: "jvm_threads_terminated", Name: "terminated"}, 74 }, 75 }, 76 { 77 ID: "jvm_logs_total", 78 Title: "Number of Logs", 79 Units: "logs/s", 80 Fam: "jvm", 81 Ctx: "hdfs.logs_total", 82 Type: module.Stacked, 83 Dims: Dims{ 84 {ID: "jvm_log_info", Name: "info", Algo: module.Incremental}, 85 {ID: "jvm_log_error", Name: "error", Algo: module.Incremental}, 86 {ID: "jvm_log_warn", Name: "warn", Algo: module.Incremental}, 87 {ID: "jvm_log_fatal", Name: "fatal", Algo: module.Incremental}, 88 }, 89 }, 90 } 91 92 var rpcActivityCharts = Charts{ 93 { 94 ID: "rpc_bandwidth", 95 Title: "RPC Bandwidth", 96 Units: "kilobits/s", 97 Fam: "rpc", 98 Ctx: "hdfs.rpc_bandwidth", 99 Type: module.Area, 100 Dims: Dims{ 101 {ID: "rpc_received_bytes", Name: "received", Div: 1000, Algo: module.Incremental}, 102 {ID: "rpc_sent_bytes", Name: "sent", Div: -1000, Algo: module.Incremental}, 103 }, 104 }, 105 { 106 ID: "rpc_calls", 107 Title: "RPC Calls", 108 Units: "calls/s", 109 Fam: "rpc", 110 Ctx: "hdfs.rpc_calls", 111 Dims: Dims{ 112 {ID: "rpc_queue_time_num_ops", Name: "calls", Algo: module.Incremental}, 113 }, 114 }, 115 { 116 ID: "rpc_open_connections", 117 Title: "RPC Open Connections", 118 Units: "connections", 119 Fam: "rpc", 120 Ctx: "hdfs.open_connections", 121 Dims: Dims{ 122 {ID: "rpc_num_open_connections", Name: "open"}, 123 }, 124 }, 125 { 126 ID: "rpc_call_queue_length", 127 Title: "RPC Call Queue Length", 128 Units: "num", 129 Fam: "rpc", 130 Ctx: "hdfs.call_queue_length", 131 Dims: Dims{ 132 {ID: "rpc_call_queue_length", Name: "length"}, 133 }, 134 }, 135 { 136 ID: "rpc_avg_queue_time", 137 Title: "RPC Avg Queue Time", 138 Units: "ms", 139 Fam: "rpc", 140 Ctx: "hdfs.avg_queue_time", 141 Dims: Dims{ 142 {ID: "rpc_queue_time_avg_time", Name: "time", Div: 1000}, 143 }, 144 }, 145 { 146 ID: "rpc_avg_processing_time", 147 Title: "RPC Avg Processing Time", 148 Units: "ms", 149 Fam: "rpc", 150 Ctx: "hdfs.avg_processing_time", 151 Dims: Dims{ 152 {ID: "rpc_processing_time_avg_time", Name: "time", Div: 1000}, 153 }, 154 }, 155 } 156 157 var fsNameSystemCharts = Charts{ 158 { 159 ID: "fs_name_system_capacity", 160 Title: "Capacity Across All Datanodes", 161 Units: "KiB", 162 Fam: "fs name system", 163 Ctx: "hdfs.capacity", 164 Type: module.Stacked, 165 Dims: Dims{ 166 {ID: "fsns_capacity_remaining", Name: "remaining", Div: 1024}, 167 {ID: "fsns_capacity_used", Name: "used", Div: 1024}, 168 }, 169 Vars: Vars{ 170 {ID: "fsns_capacity_total"}, 171 }, 172 }, 173 { 174 ID: "fs_name_system_used_capacity", 175 Title: "Used Capacity Across All Datanodes", 176 Units: "KiB", 177 Fam: "fs name system", 178 Ctx: "hdfs.used_capacity", 179 Type: module.Stacked, 180 Dims: Dims{ 181 {ID: "fsns_capacity_used_dfs", Name: "dfs", Div: 1024}, 182 {ID: "fsns_capacity_used_non_dfs", Name: "non_dfs", Div: 1024}, 183 }, 184 }, 185 { 186 ID: "fs_name_system_load", 187 Title: "Number of Concurrent File Accesses (read/write) Across All DataNodes", 188 Units: "load", 189 Fam: "fs name system", 190 Ctx: "hdfs.load", 191 Dims: Dims{ 192 {ID: "fsns_total_load", Name: "load"}, 193 }, 194 }, 195 { 196 ID: "fs_name_system_volume_failures_total", 197 Title: "Number of Volume Failures Across All Datanodes", 198 Units: "events/s", 199 Fam: "fs name system", 200 Ctx: "hdfs.volume_failures_total", 201 Dims: Dims{ 202 {ID: "fsns_volume_failures_total", Name: "failures", Algo: module.Incremental}, 203 }, 204 }, 205 { 206 ID: "fs_files_total", 207 Title: "Number of Tracked Files", 208 Units: "num", 209 Fam: "fs name system", 210 Ctx: "hdfs.files_total", 211 Dims: Dims{ 212 {ID: "fsns_files_total", Name: "files"}, 213 }, 214 }, 215 { 216 ID: "fs_blocks_total", 217 Title: "Number of Allocated Blocks in the System", 218 Units: "num", 219 Fam: "fs name system", 220 Ctx: "hdfs.blocks_total", 221 Dims: Dims{ 222 {ID: "fsns_blocks_total", Name: "blocks"}, 223 }, 224 }, 225 { 226 ID: "fs_problem_blocks", 227 Title: "Number of Problem Blocks (can point to an unhealthy cluster)", 228 Units: "num", 229 Fam: "fs name system", 230 Ctx: "hdfs.blocks", 231 Dims: Dims{ 232 {ID: "fsns_corrupt_blocks", Name: "corrupt"}, 233 {ID: "fsns_missing_blocks", Name: "missing"}, 234 {ID: "fsns_under_replicated_blocks", Name: "under_replicated"}, 235 }, 236 }, 237 { 238 ID: "fs_name_system_data_nodes", 239 Title: "Number of Data Nodes By Status", 240 Units: "num", 241 Fam: "fs name system", 242 Ctx: "hdfs.data_nodes", 243 Type: module.Stacked, 244 Dims: Dims{ 245 {ID: "fsns_num_live_data_nodes", Name: "live"}, 246 {ID: "fsns_num_dead_data_nodes", Name: "dead"}, 247 {ID: "fsns_stale_data_nodes", Name: "stale"}, 248 }, 249 }, 250 } 251 252 var fsDatasetStateCharts = Charts{ 253 { 254 ID: "fs_dataset_state_capacity", 255 Title: "Capacity", 256 Units: "KiB", 257 Fam: "fs dataset", 258 Ctx: "hdfs.datanode_capacity", 259 Type: module.Stacked, 260 Dims: Dims{ 261 {ID: "fsds_capacity_remaining", Name: "remaining", Div: 1024}, 262 {ID: "fsds_capacity_used", Name: "used", Div: 1024}, 263 }, 264 Vars: Vars{ 265 {ID: "fsds_capacity_total"}, 266 }, 267 }, 268 { 269 ID: "fs_dataset_state_used_capacity", 270 Title: "Used Capacity", 271 Units: "KiB", 272 Fam: "fs dataset", 273 Ctx: "hdfs.datanode_used_capacity", 274 Type: module.Stacked, 275 Dims: Dims{ 276 {ID: "fsds_capacity_used_dfs", Name: "dfs", Div: 1024}, 277 {ID: "fsds_capacity_used_non_dfs", Name: "non_dfs", Div: 1024}, 278 }, 279 }, 280 { 281 ID: "fs_dataset_state_num_failed_volumes", 282 Title: "Number of Failed Volumes", 283 Units: "num", 284 Fam: "fs dataset", 285 Ctx: "hdfs.datanode_failed_volumes", 286 Dims: Dims{ 287 {ID: "fsds_num_failed_volumes", Name: "failed volumes"}, 288 }, 289 }, 290 } 291 292 var fsDataNodeActivityCharts = Charts{ 293 { 294 ID: "dna_bandwidth", 295 Title: "Bandwidth", 296 Units: "KiB/s", 297 Fam: "activity", 298 Ctx: "hdfs.datanode_bandwidth", 299 Type: module.Area, 300 Dims: Dims{ 301 {ID: "dna_bytes_read", Name: "reads", Div: 1024, Algo: module.Incremental}, 302 {ID: "dna_bytes_written", Name: "writes", Div: -1024, Algo: module.Incremental}, 303 }, 304 }, 305 } 306 307 func dataNodeCharts() *Charts { 308 charts := Charts{} 309 panicIfError(charts.Add(*jvmCharts.Copy()...)) 310 panicIfError(charts.Add(*rpcActivityCharts.Copy()...)) 311 panicIfError(charts.Add(*fsDatasetStateCharts.Copy()...)) 312 panicIfError(charts.Add(*fsDataNodeActivityCharts.Copy()...)) 313 return &charts 314 } 315 316 func nameNodeCharts() *Charts { 317 charts := Charts{} 318 panicIfError(charts.Add(*jvmCharts.Copy()...)) 319 panicIfError(charts.Add(*rpcActivityCharts.Copy()...)) 320 panicIfError(charts.Add(*fsNameSystemCharts.Copy()...)) 321 return &charts 322 } 323 324 func panicIfError(err error) { 325 if err != nil { 326 panic(err) 327 } 328 }