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  }