@@ -19,11 +19,341 @@ package server
1919import (
2020 "context"
2121
22- "google.golang.org/grpc/codes"
23- "google.golang.org/grpc/status"
2422 runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
2523)
2624
25+ const (
26+ CpuUsageMetrics = "cpu"
27+ MemoryUsageMetrics = "memory"
28+ CpuLoadMetrics = "cpuLoad"
29+ DiskIOMetrics = "diskIO"
30+ DiskUsageMetrics = "disk"
31+ NetworkUsageMetrics = "network"
32+ ProcessMetrics = "process"
33+ OOMMetrics = "oom_event"
34+ )
35+
36+ var baseLabelKeys = []string {"id" , "name" }
37+
2738func (c * criService ) ListMetricDescriptors (context.Context , * runtime.ListMetricDescriptorsRequest ) (* runtime.ListMetricDescriptorsResponse , error ) {
28- return nil , status .Errorf (codes .Unimplemented , "method ListMetricDescriptors not implemented" )
39+ descriptors := c .getMetricDescriptors ()
40+
41+ metricDescriptors := make ([]* runtime.MetricDescriptor , 0 )
42+ for _ , descriptor := range descriptors {
43+ metricDescriptors = append (metricDescriptors , descriptor ... )
44+ }
45+
46+ return & runtime.ListMetricDescriptorsResponse {Descriptors : metricDescriptors }, nil
47+
48+ }
49+ func (c * criService ) getMetricDescriptors () map [string ][]* runtime.MetricDescriptor {
50+ descriptors := map [string ][]* runtime.MetricDescriptor {
51+ CpuUsageMetrics : {
52+ {
53+ Name : "container_cpu_user_seconds_total" ,
54+ Help : "Cumulative user CPU time consumed in seconds." ,
55+ LabelKeys : baseLabelKeys ,
56+ }, {
57+ Name : "container_cpu_system_seconds_total" ,
58+ Help : "Cumulative system CPU time consumed in seconds." ,
59+ LabelKeys : baseLabelKeys ,
60+ }, {
61+ Name : "container_cpu_usage_seconds_total" ,
62+ Help : "Cumulative CPU time consumed in seconds." ,
63+ LabelKeys : baseLabelKeys ,
64+ }, {
65+ Name : "container_cpu_cfs_periods_total" ,
66+ Help : "Number of elapsed enforcement period intervals." ,
67+ LabelKeys : baseLabelKeys ,
68+ }, {
69+ Name : "container_cpu_cfs_throttled_periods_total" ,
70+ Help : "Number of throttled period intervals." ,
71+ LabelKeys : baseLabelKeys ,
72+ }, {
73+ Name : "container_cpu_cfs_throttled_seconds_total" ,
74+ Help : "Total time duration the container has been throttled." ,
75+ LabelKeys : baseLabelKeys ,
76+ },
77+ },
78+ CpuLoadMetrics : {
79+ {
80+ Name : "container_cpu_load_average_10s" ,
81+ Help : "Value of container CPU load average over the last 10 seconds." ,
82+ LabelKeys : baseLabelKeys ,
83+ },
84+ {
85+ // additional added from cadvisor
86+ Name : "container_cpu_load_d_average_10s" ,
87+ Help : "Value of container cpu load.d average over the last 10 seconds." ,
88+ LabelKeys : baseLabelKeys ,
89+ },
90+ {
91+ Name : "container_tasks_state" ,
92+ Help : "Number of tasks in given state" ,
93+ LabelKeys : baseLabelKeys ,
94+ },
95+ },
96+ DiskUsageMetrics : {
97+ {
98+ Name : "container_fs_inodes_free" ,
99+ Help : "Number of available Inodes" ,
100+ LabelKeys : append (baseLabelKeys , "device" ),
101+ }, {
102+ Name : "container_fs_inodes_total" ,
103+ Help : "Number of Inodes" ,
104+ LabelKeys : append (baseLabelKeys , "device" ),
105+ }, {
106+ Name : "container_fs_limit_bytes" ,
107+ Help : "Number of bytes that can be consumed by the container on this filesystem." ,
108+ LabelKeys : append (baseLabelKeys , "device" ),
109+ }, {
110+ Name : "container_fs_usage_bytes" ,
111+ Help : "Number of bytes that are consumed by the container on this filesystem." ,
112+ LabelKeys : append (baseLabelKeys , "device" ),
113+ },
114+ },
115+ DiskIOMetrics : {
116+ {
117+ Name : "container_fs_reads_bytes_total" ,
118+ Help : "Cumulative count of bytes read" ,
119+ LabelKeys : append (baseLabelKeys , "device" ),
120+ },
121+ {
122+ Name : "container_fs_reads_total" ,
123+ Help : "Cumulative count of reads completed" ,
124+ LabelKeys : append (baseLabelKeys , "device" ),
125+ },
126+ {
127+ Name : "container_fs_sector_reads_total" ,
128+ Help : "Cumulative count of sector reads completed" ,
129+ LabelKeys : append (baseLabelKeys , "device" ),
130+ },
131+ {
132+ Name : "container_fs_reads_merged_total" ,
133+ Help : "Cumulative count of reads merged" ,
134+ LabelKeys : append (baseLabelKeys , "device" ),
135+ },
136+ {
137+ Name : "container_fs_read_seconds_total" ,
138+ Help : "Cumulative count of seconds spent reading" ,
139+ LabelKeys : append (baseLabelKeys , "device" ),
140+ },
141+ {
142+ Name : "container_fs_writes_bytes_total" ,
143+ Help : "Cumulative count of bytes written" ,
144+ LabelKeys : append (baseLabelKeys , "device" ),
145+ },
146+ {
147+ Name : "container_fs_writes_total" ,
148+ Help : "Cumulative count of writes completed" ,
149+ LabelKeys : append (baseLabelKeys , "device" ),
150+ },
151+ {
152+ Name : "container_fs_sector_writes_total" ,
153+ Help : "Cumulative count of sector writes completed" ,
154+ LabelKeys : append (baseLabelKeys , "device" ),
155+ },
156+ {
157+ Name : "container_fs_writes_merged_total" ,
158+ Help : "Cumulative count of writes merged" ,
159+ LabelKeys : append (baseLabelKeys , "device" ),
160+ },
161+ {
162+ Name : "container_fs_write_seconds_total" ,
163+ Help : "Cumulative count of seconds spent writing" ,
164+ LabelKeys : append (baseLabelKeys , "device" ),
165+ },
166+ {
167+ Name : "container_fs_io_current" ,
168+ Help : "Number of I/Os currently in progress" ,
169+ LabelKeys : append (baseLabelKeys , "device" ),
170+ },
171+ {
172+ Name : "container_fs_io_time_seconds_total" ,
173+ Help : "Cumulative count of seconds spent doing I/Os" ,
174+ LabelKeys : append (baseLabelKeys , "device" ),
175+ },
176+ {
177+ Name : "container_fs_io_time_weighted_seconds_total" ,
178+ Help : "Cumulative weighted I/O time in seconds" ,
179+ LabelKeys : append (baseLabelKeys , "device" ),
180+ },
181+ {
182+ Name : "container_blkio_device_usage_total" ,
183+ Help : "Blkio device bytes usage" ,
184+ LabelKeys : append (baseLabelKeys , "device" , "major" , "minor" , "operation" ),
185+ },
186+ },
187+ MemoryUsageMetrics : {
188+ {
189+ Name : "container_memory_cache" ,
190+ Help : "Number of bytes of page cache memory." ,
191+ LabelKeys : baseLabelKeys ,
192+ },
193+ {
194+ Name : "container_memory_rss" ,
195+ Help : "Size of RSS in bytes." ,
196+ LabelKeys : baseLabelKeys ,
197+ },
198+ {
199+ Name : "container_memory_kernel_usage" ,
200+ Help : "Size of kernel memory allocated in bytes." ,
201+ LabelKeys : baseLabelKeys ,
202+ },
203+ {
204+ Name : "container_memory_mapped_file" ,
205+ Help : "Size of memory mapped files in bytes." ,
206+ LabelKeys : baseLabelKeys ,
207+ },
208+ {
209+ Name : "container_memory_swap" ,
210+ Help : "Container swap usage in bytes." ,
211+ LabelKeys : baseLabelKeys ,
212+ },
213+ {
214+ Name : "container_memory_failcnt" ,
215+ Help : "Number of memory usage hits limits" ,
216+ LabelKeys : baseLabelKeys ,
217+ },
218+ {
219+ Name : "container_memory_usage_bytes" ,
220+ Help : "Current memory usage in bytes, including all memory regardless of when it was accessed" ,
221+ LabelKeys : baseLabelKeys ,
222+ },
223+ {
224+ Name : "container_memory_max_usage_bytes" ,
225+ Help : "Maximum memory usage recorded in bytes" ,
226+ LabelKeys : baseLabelKeys ,
227+ },
228+ {
229+ Name : "container_memory_working_set_bytes" ,
230+ Help : "Current working set in bytes." ,
231+ LabelKeys : baseLabelKeys ,
232+ },
233+ {
234+ // additional added from cadvisor
235+ Name : "container_memory_total_active_file_bytes" ,
236+ Help : "Current total active file in bytes." ,
237+ LabelKeys : baseLabelKeys ,
238+ },
239+ {
240+ // additional added from cadvisor
241+ Name : "container_memory_total_inactive_file_bytes" ,
242+ Help : "Current total inactive file in bytes." ,
243+ LabelKeys : baseLabelKeys ,
244+ },
245+ {
246+ Name : "container_memory_failures_total" ,
247+ Help : "Cumulative count of memory allocation failures." ,
248+ LabelKeys : append (baseLabelKeys , "failure_type" , "scope" ),
249+ },
250+ },
251+ // Added for parity with cadvisor
252+ "misc" : {
253+ {
254+ Name : "container_scrape_error" ,
255+ Help : "1 if there was an error while getting container metrics, 0 otherwise" ,
256+ LabelKeys : baseLabelKeys ,
257+ }, {
258+ Name : "container_last_seen" ,
259+ Help : "Last time a container was seen by the exporter" ,
260+ LabelKeys : baseLabelKeys ,
261+ }, {
262+ Name : "cadvisor_version_info" ,
263+ Help : "A metric with a constant '1' value labeled by kernel version, OS version, docker version, cadvisor version & cadvisor revision." ,
264+ LabelKeys : []string {"kernelVersion" , "osVersion" , "dockerVersion" , "cadvisorVersion" , "cadvisorRevision" },
265+ }, {
266+ Name : "container_start_time_seconds" ,
267+ Help : "Start time of the container since unix epoch in seconds." ,
268+ LabelKeys : baseLabelKeys ,
269+ }, {
270+ Name : "container_spec_cpu_period" ,
271+ Help : "CPU period of the container." ,
272+ LabelKeys : baseLabelKeys ,
273+ }, {
274+ Name : "container_spec_cpu_quota" ,
275+ Help : "CPU quota of the container." ,
276+ LabelKeys : baseLabelKeys ,
277+ }, {
278+ Name : "container_spec_cpu_shares" ,
279+ Help : "CPU share of the container." ,
280+ LabelKeys : baseLabelKeys ,
281+ },
282+ },
283+ NetworkUsageMetrics : {
284+ {
285+ Name : "container_network_receive_bytes_total" ,
286+ Help : "Cumulative count of bytes received" ,
287+ LabelKeys : append (baseLabelKeys , "interface" ),
288+ }, {
289+ Name : "container_network_receive_packets_total" ,
290+ Help : "Cumulative count of packets received" ,
291+ LabelKeys : append (baseLabelKeys , "interface" ),
292+ }, {
293+ Name : "container_network_receive_packets_dropped_total" ,
294+ Help : "Cumulative count of packets dropped while receiving" ,
295+ LabelKeys : append (baseLabelKeys , "interface" ),
296+ }, {
297+ Name : "container_network_receive_errors_total" ,
298+ Help : "Cumulative count of errors encountered while receiving" ,
299+ LabelKeys : append (baseLabelKeys , "interface" ),
300+ }, {
301+ Name : "container_network_transmit_bytes_total" ,
302+ Help : "Cumulative count of bytes transmitted" ,
303+ LabelKeys : append (baseLabelKeys , "interface" ),
304+ }, {
305+ Name : "container_network_transmit_packets_total" ,
306+ Help : "Cumulative count of packets transmitted" ,
307+ LabelKeys : append (baseLabelKeys , "interface" ),
308+ }, {
309+ Name : "container_network_transmit_packets_dropped_total" ,
310+ Help : "Cumulative count of packets dropped while transmitting" ,
311+ LabelKeys : append (baseLabelKeys , "interface" ),
312+ }, {
313+ Name : "container_network_transmit_errors_total" ,
314+ Help : "Cumulative count of errors encountered while transmitting" ,
315+ LabelKeys : append (baseLabelKeys , "interface" ),
316+ },
317+ },
318+ OOMMetrics : {
319+ {
320+ Name : "container_oom_events_total" ,
321+ Help : "Count of out of memory events observed for the container" ,
322+ LabelKeys : baseLabelKeys ,
323+ },
324+ },
325+ ProcessMetrics : {
326+ {
327+ Name : "container_processes" ,
328+ Help : "Number of processes running inside the container." ,
329+ LabelKeys : baseLabelKeys ,
330+ },
331+ {
332+ Name : "container_file_descriptors" ,
333+ Help : "Number of open file descriptors for the container." ,
334+ LabelKeys : baseLabelKeys ,
335+ },
336+ {
337+ Name : "container_sockets" ,
338+ Help : "Number of open sockets for the container." ,
339+ LabelKeys : baseLabelKeys ,
340+ },
341+ {
342+ Name : "container_threads_max" ,
343+ Help : "Maximum number of threads allowed inside the container, infinity if value is zero" ,
344+ LabelKeys : baseLabelKeys ,
345+ },
346+ {
347+ Name : "container_threads" ,
348+ Help : "Number of threads running inside the container" ,
349+ LabelKeys : baseLabelKeys ,
350+ },
351+ {
352+ Name : "container_ulimits_soft" ,
353+ Help : "Soft ulimit values for the container root process. Unlimited if -1, except priority and nice" ,
354+ LabelKeys : append (baseLabelKeys , "ulimit" ),
355+ },
356+ },
357+ }
358+ return descriptors
29359}
0 commit comments