github.com/netdata/go.d.plugin@v0.58.1/modules/k8s_kubelet/metrics.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package k8s_kubelet
     4  
     5  import (
     6  	mtx "github.com/netdata/go.d.plugin/pkg/metrics"
     7  )
     8  
     9  func newMetrics() *metrics {
    10  	var mx metrics
    11  	mx.RESTClient.Requests.ByStatusCode = make(map[string]mtx.Gauge)
    12  	mx.RESTClient.Requests.ByMethod = make(map[string]mtx.Gauge)
    13  	mx.Kubelet.Runtime.Operations = make(map[string]mtx.Gauge)
    14  	mx.Kubelet.Runtime.OperationsErrors = make(map[string]mtx.Gauge)
    15  	mx.Kubelet.Docker.Operations = make(map[string]mtx.Gauge)
    16  	mx.Kubelet.Docker.OperationsErrors = make(map[string]mtx.Gauge)
    17  	mx.Kubelet.PodLogFileSystemUsage = make(map[string]mtx.Gauge)
    18  
    19  	return &mx
    20  }
    21  
    22  type metrics struct {
    23  	Token         tokenMetrics         `stm:"token"`
    24  	RESTClient    restClientMetrics    `stm:"rest_client"`
    25  	APIServer     apiServerMetrics     `stm:"apiserver"`
    26  	Kubelet       kubeletMetrics       `stm:"kubelet"`
    27  	VolumeManager volumeManagerMetrics `stm:"volume_manager"`
    28  }
    29  
    30  type tokenMetrics struct {
    31  	Count     mtx.Gauge `stm:"count"`
    32  	FailCount mtx.Gauge `stm:"fail_count"`
    33  }
    34  
    35  type restClientMetrics struct {
    36  	Requests struct {
    37  		ByStatusCode map[string]mtx.Gauge `stm:""`
    38  		ByMethod     map[string]mtx.Gauge `stm:""`
    39  	} `stm:"requests"`
    40  }
    41  
    42  type apiServerMetrics struct {
    43  	Audit struct {
    44  		Requests struct {
    45  			Rejected mtx.Gauge `stm:"rejected_total"`
    46  		} `stm:"requests"`
    47  	} `stm:"audit"`
    48  	Storage struct {
    49  		EnvelopeTransformation struct {
    50  			CacheMisses mtx.Gauge `stm:"cache_misses_total"`
    51  		} `stm:"envelope_transformation"`
    52  		DataKeyGeneration struct {
    53  			Failures  mtx.Gauge `stm:"failures_total"`
    54  			Latencies struct {
    55  				LE5     mtx.Gauge `stm:"5"`
    56  				LE10    mtx.Gauge `stm:"10"`
    57  				LE20    mtx.Gauge `stm:"20"`
    58  				LE40    mtx.Gauge `stm:"40"`
    59  				LE80    mtx.Gauge `stm:"80"`
    60  				LE160   mtx.Gauge `stm:"160"`
    61  				LE320   mtx.Gauge `stm:"320"`
    62  				LE640   mtx.Gauge `stm:"640"`
    63  				LE1280  mtx.Gauge `stm:"1280"`
    64  				LE2560  mtx.Gauge `stm:"2560"`
    65  				LE5120  mtx.Gauge `stm:"5120"`
    66  				LE10240 mtx.Gauge `stm:"10240"`
    67  				LE20480 mtx.Gauge `stm:"20480"`
    68  				LE40960 mtx.Gauge `stm:"40960"`
    69  				LEInf   mtx.Gauge `stm:"+Inf"`
    70  			} `stm:"bucket"`
    71  		} `stm:"data_key_generation"`
    72  	} `stm:"storage"`
    73  }
    74  
    75  type kubeletMetrics struct {
    76  	NodeConfigError       mtx.Gauge `stm:"node_config_error"`
    77  	RunningContainerCount mtx.Gauge `stm:"running_container"`
    78  	RunningPodCount       mtx.Gauge `stm:"running_pod"`
    79  	PLEG                  struct {
    80  		Relist struct {
    81  			Interval struct {
    82  				Quantile05  mtx.Gauge `stm:"05"`
    83  				Quantile09  mtx.Gauge `stm:"09"`
    84  				Quantile099 mtx.Gauge `stm:"099"`
    85  			} `stm:"interval"`
    86  			Latency struct {
    87  				Quantile05  mtx.Gauge `stm:"05"`
    88  				Quantile09  mtx.Gauge `stm:"09"`
    89  				Quantile099 mtx.Gauge `stm:"099"`
    90  			} `stm:"latency"`
    91  		} `stm:"relist"`
    92  	} `stm:"pleg"`
    93  	Runtime struct {
    94  		Operations       map[string]mtx.Gauge `stm:"operations"`
    95  		OperationsErrors map[string]mtx.Gauge `stm:"operations_errors"`
    96  	} `stm:"runtime"`
    97  	Docker struct {
    98  		Operations       map[string]mtx.Gauge `stm:"operations"`
    99  		OperationsErrors map[string]mtx.Gauge `stm:"operations_errors"`
   100  	} `stm:"docker"`
   101  	PodLogFileSystemUsage map[string]mtx.Gauge `stm:"log_file_system_usage"`
   102  }
   103  
   104  type volumeManagerMetrics struct {
   105  	Plugins map[string]*volumeManagerPlugin `stm:"plugin"`
   106  }
   107  
   108  type volumeManagerPlugin struct {
   109  	State struct {
   110  		Actual  mtx.Gauge `stm:"actual"`
   111  		Desired mtx.Gauge `stm:"desired"`
   112  	} `stm:"state"`
   113  }