94 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
| package kubernetes
 | |
| 
 | |
| import "time"
 | |
| 
 | |
| // SummaryMetrics represents all the summary data about a paritcular node retrieved from a kubelet
 | |
| type SummaryMetrics struct {
 | |
| 	Node NodeMetrics  `json:"node"`
 | |
| 	Pods []PodMetrics `json:"pods"`
 | |
| }
 | |
| 
 | |
| // NodeMetrics represents detailed information about a node
 | |
| type NodeMetrics struct {
 | |
| 	NodeName         string             `json:"nodeName"`
 | |
| 	SystemContainers []ContainerMetrics `json:"systemContainers"`
 | |
| 	StartTime        time.Time          `json:"startTime"`
 | |
| 	CPU              CPUMetrics         `json:"cpu"`
 | |
| 	Memory           MemoryMetrics      `json:"memory"`
 | |
| 	Network          NetworkMetrics     `json:"network"`
 | |
| 	FileSystem       FileSystemMetrics  `json:"fs"`
 | |
| 	Runtime          RuntimeMetrics     `json:"runtime"`
 | |
| }
 | |
| 
 | |
| // ContainerMetrics represents the metric data collect about a container from the kubelet
 | |
| type ContainerMetrics struct {
 | |
| 	Name      string            `json:"name"`
 | |
| 	StartTime time.Time         `json:"startTime"`
 | |
| 	CPU       CPUMetrics        `json:"cpu"`
 | |
| 	Memory    MemoryMetrics     `json:"memory"`
 | |
| 	RootFS    FileSystemMetrics `json:"rootfs"`
 | |
| 	LogsFS    FileSystemMetrics `json:"logs"`
 | |
| }
 | |
| 
 | |
| // RuntimeMetrics contains metric data on the runtime of the system
 | |
| type RuntimeMetrics struct {
 | |
| 	ImageFileSystem FileSystemMetrics `json:"imageFs"`
 | |
| }
 | |
| 
 | |
| // CPUMetrics represents the cpu usage data of a pod or node
 | |
| type CPUMetrics struct {
 | |
| 	Time                 time.Time `json:"time"`
 | |
| 	UsageNanoCores       int64     `json:"usageNanoCores"`
 | |
| 	UsageCoreNanoSeconds int64     `json:"usageCoreNanoSeconds"`
 | |
| }
 | |
| 
 | |
| // PodMetrics contains metric data on a given pod
 | |
| type PodMetrics struct {
 | |
| 	PodRef     PodReference       `json:"podRef"`
 | |
| 	StartTime  time.Time          `json:"startTime"`
 | |
| 	Containers []ContainerMetrics `json:"containers"`
 | |
| 	Network    NetworkMetrics     `json:"network"`
 | |
| 	Volumes    []VolumeMetrics    `json:"volume"`
 | |
| }
 | |
| 
 | |
| // PodReference is how a pod is identified
 | |
| type PodReference struct {
 | |
| 	Name      string `json:"name"`
 | |
| 	Namespace string `json:"namespace"`
 | |
| }
 | |
| 
 | |
| // MemoryMetrics represents the memory metrics for a pod or node
 | |
| type MemoryMetrics struct {
 | |
| 	Time            time.Time `json:"time"`
 | |
| 	AvailableBytes  int64     `json:"availableBytes"`
 | |
| 	UsageBytes      int64     `json:"usageBytes"`
 | |
| 	WorkingSetBytes int64     `json:"workingSetBytes"`
 | |
| 	RSSBytes        int64     `json:"rssBytes"`
 | |
| 	PageFaults      int64     `json:"pageFaults"`
 | |
| 	MajorPageFaults int64     `json:"majorPageFaults"`
 | |
| }
 | |
| 
 | |
| // FileSystemMetrics represents disk usage metrics for a pod or node
 | |
| type FileSystemMetrics struct {
 | |
| 	AvailableBytes int64 `json:"availableBytes"`
 | |
| 	CapacityBytes  int64 `json:"capacityBytes"`
 | |
| 	UsedBytes      int64 `json:"usedBytes"`
 | |
| }
 | |
| 
 | |
| // NetworkMetrics represents network usage data for a pod or node
 | |
| type NetworkMetrics struct {
 | |
| 	Time     time.Time `json:"time"`
 | |
| 	RXBytes  int64     `json:"rxBytes"`
 | |
| 	RXErrors int64     `json:"rxErrors"`
 | |
| 	TXBytes  int64     `json:"txBytes"`
 | |
| 	TXErrors int64     `json:"txErrors"`
 | |
| }
 | |
| 
 | |
| // VolumeMetrics represents the disk usage data for a given volume
 | |
| type VolumeMetrics struct {
 | |
| 	Name           string `json:"name"`
 | |
| 	AvailableBytes int64  `json:"availableBytes"`
 | |
| 	CapacityBytes  int64  `json:"capacityBytes"`
 | |
| 	UsedBytes      int64  `json:"usedBytes"`
 | |
| }
 |