@@ -289,6 +289,151 @@ CreateAsyncDoubleMetricContainerFilesystemUsage(metrics::Meter *meter)
289289 unitMetricContainerFilesystemUsage);
290290}
291291
292+ /* *
293+ Container memory available.
294+ <p>
295+ Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit
296+ is undefined, the available bytes is omitted. In general, this metric can be derived from <a
297+ href="https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics">cadvisor</a>
298+ and by subtracting the @code container_memory_working_set_bytes @endcode metric from the @code
299+ container_spec_memory_limit_bytes @endcode metric. In K8s, this metric is derived from the <a
300+ href="https://pkg.go.dev/k8s.io/[email protected] /pkg/apis/stats/v1alpha1#MemoryStats">MemoryStats.AvailableBytes</a> 301+ field of the <a
302+ href="https://pkg.go.dev/k8s.io/[email protected] /pkg/apis/stats/v1alpha1#PodStats">PodStats.Memory</a> 303+ of the Kubelet's stats API. <p> updowncounter
304+ */
305+ static constexpr const char *kMetricContainerMemoryAvailable = " container.memory.available" ;
306+ static constexpr const char *descrMetricContainerMemoryAvailable = " Container memory available." ;
307+ static constexpr const char *unitMetricContainerMemoryAvailable = " By" ;
308+
309+ static inline nostd::unique_ptr<metrics::UpDownCounter<int64_t >>
310+ CreateSyncInt64MetricContainerMemoryAvailable (metrics::Meter *meter)
311+ {
312+ return meter->CreateInt64UpDownCounter (kMetricContainerMemoryAvailable ,
313+ descrMetricContainerMemoryAvailable,
314+ unitMetricContainerMemoryAvailable);
315+ }
316+
317+ static inline nostd::unique_ptr<metrics::UpDownCounter<double >>
318+ CreateSyncDoubleMetricContainerMemoryAvailable (metrics::Meter *meter)
319+ {
320+ return meter->CreateDoubleUpDownCounter (kMetricContainerMemoryAvailable ,
321+ descrMetricContainerMemoryAvailable,
322+ unitMetricContainerMemoryAvailable);
323+ }
324+
325+ static inline nostd::shared_ptr<metrics::ObservableInstrument>
326+ CreateAsyncInt64MetricContainerMemoryAvailable (metrics::Meter *meter)
327+ {
328+ return meter->CreateInt64ObservableUpDownCounter (kMetricContainerMemoryAvailable ,
329+ descrMetricContainerMemoryAvailable,
330+ unitMetricContainerMemoryAvailable);
331+ }
332+
333+ static inline nostd::shared_ptr<metrics::ObservableInstrument>
334+ CreateAsyncDoubleMetricContainerMemoryAvailable (metrics::Meter *meter)
335+ {
336+ return meter->CreateDoubleObservableUpDownCounter (kMetricContainerMemoryAvailable ,
337+ descrMetricContainerMemoryAvailable,
338+ unitMetricContainerMemoryAvailable);
339+ }
340+
341+ /* *
342+ Container memory paging faults.
343+ <p>
344+ In general, this metric can be derived from <a
345+ href="https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics">cadvisor</a>
346+ and specifically the @code container_memory_failures_total{failure_type=pgfault, scope=container}
347+ @endcode and @code container_memory_failures_total{failure_type=pgmajfault, scope=container}
348+ @endcodemetric. In K8s, this metric is derived from the <a
349+ href="https://pkg.go.dev/k8s.io/[email protected] /pkg/apis/stats/v1alpha1#MemoryStats">MemoryStats.PageFaults</a> 350+ and <a
351+ href="https://pkg.go.dev/k8s.io/[email protected] /pkg/apis/stats/v1alpha1#MemoryStats">MemoryStats.MajorPageFaults</a> 352+ field of the <a
353+ href="https://pkg.go.dev/k8s.io/[email protected] /pkg/apis/stats/v1alpha1#PodStats">PodStats.Memory</a> 354+ of the Kubelet's stats API. <p> counter
355+ */
356+ static constexpr const char *kMetricContainerMemoryPagingFaults = " container.memory.paging.faults" ;
357+ static constexpr const char *descrMetricContainerMemoryPagingFaults =
358+ " Container memory paging faults." ;
359+ static constexpr const char *unitMetricContainerMemoryPagingFaults = " {fault}" ;
360+
361+ static inline nostd::unique_ptr<metrics::Counter<uint64_t >>
362+ CreateSyncInt64MetricContainerMemoryPagingFaults (metrics::Meter *meter)
363+ {
364+ return meter->CreateUInt64Counter (kMetricContainerMemoryPagingFaults ,
365+ descrMetricContainerMemoryPagingFaults,
366+ unitMetricContainerMemoryPagingFaults);
367+ }
368+
369+ static inline nostd::unique_ptr<metrics::Counter<double >>
370+ CreateSyncDoubleMetricContainerMemoryPagingFaults (metrics::Meter *meter)
371+ {
372+ return meter->CreateDoubleCounter (kMetricContainerMemoryPagingFaults ,
373+ descrMetricContainerMemoryPagingFaults,
374+ unitMetricContainerMemoryPagingFaults);
375+ }
376+
377+ static inline nostd::shared_ptr<metrics::ObservableInstrument>
378+ CreateAsyncInt64MetricContainerMemoryPagingFaults (metrics::Meter *meter)
379+ {
380+ return meter->CreateInt64ObservableCounter (kMetricContainerMemoryPagingFaults ,
381+ descrMetricContainerMemoryPagingFaults,
382+ unitMetricContainerMemoryPagingFaults);
383+ }
384+
385+ static inline nostd::shared_ptr<metrics::ObservableInstrument>
386+ CreateAsyncDoubleMetricContainerMemoryPagingFaults (metrics::Meter *meter)
387+ {
388+ return meter->CreateDoubleObservableCounter (kMetricContainerMemoryPagingFaults ,
389+ descrMetricContainerMemoryPagingFaults,
390+ unitMetricContainerMemoryPagingFaults);
391+ }
392+
393+ /* *
394+ Container memory RSS.
395+ <p>
396+ In general, this metric can be derived from <a
397+ href="https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics">cadvisor</a>
398+ and specifically the @code container_memory_rss @endcode metric. In K8s, this metric is derived
399+ from the <a
400+ href="https://pkg.go.dev/k8s.io/[email protected] /pkg/apis/stats/v1alpha1#MemoryStats">MemoryStats.RSSBytes</a> 401+ field of the <a
402+ href="https://pkg.go.dev/k8s.io/[email protected] /pkg/apis/stats/v1alpha1#PodStats">PodStats.Memory</a> 403+ of the Kubelet's stats API. <p> updowncounter
404+ */
405+ static constexpr const char *kMetricContainerMemoryRss = " container.memory.rss" ;
406+ static constexpr const char *descrMetricContainerMemoryRss = " Container memory RSS." ;
407+ static constexpr const char *unitMetricContainerMemoryRss = " By" ;
408+
409+ static inline nostd::unique_ptr<metrics::UpDownCounter<int64_t >>
410+ CreateSyncInt64MetricContainerMemoryRss (metrics::Meter *meter)
411+ {
412+ return meter->CreateInt64UpDownCounter (kMetricContainerMemoryRss , descrMetricContainerMemoryRss,
413+ unitMetricContainerMemoryRss);
414+ }
415+
416+ static inline nostd::unique_ptr<metrics::UpDownCounter<double >>
417+ CreateSyncDoubleMetricContainerMemoryRss (metrics::Meter *meter)
418+ {
419+ return meter->CreateDoubleUpDownCounter (kMetricContainerMemoryRss , descrMetricContainerMemoryRss,
420+ unitMetricContainerMemoryRss);
421+ }
422+
423+ static inline nostd::shared_ptr<metrics::ObservableInstrument>
424+ CreateAsyncInt64MetricContainerMemoryRss (metrics::Meter *meter)
425+ {
426+ return meter->CreateInt64ObservableUpDownCounter (
427+ kMetricContainerMemoryRss , descrMetricContainerMemoryRss, unitMetricContainerMemoryRss);
428+ }
429+
430+ static inline nostd::shared_ptr<metrics::ObservableInstrument>
431+ CreateAsyncDoubleMetricContainerMemoryRss (metrics::Meter *meter)
432+ {
433+ return meter->CreateDoubleObservableUpDownCounter (
434+ kMetricContainerMemoryRss , descrMetricContainerMemoryRss, unitMetricContainerMemoryRss);
435+ }
436+
292437/* *
293438 Memory usage of the container.
294439 <p>
@@ -328,6 +473,54 @@ CreateAsyncDoubleMetricContainerMemoryUsage(metrics::Meter *meter)
328473 kMetricContainerMemoryUsage , descrMetricContainerMemoryUsage, unitMetricContainerMemoryUsage);
329474}
330475
476+ /* *
477+ Container memory working set.
478+ <p>
479+ In general, this metric can be derived from <a
480+ href="https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics">cadvisor</a>
481+ and specifically the @code container_memory_working_set_bytes @endcode metric. In K8s, this metric
482+ is derived from the <a
483+ href="https://pkg.go.dev/k8s.io/[email protected] /pkg/apis/stats/v1alpha1#MemoryStats">MemoryStats.WorkingSetBytes</a> 484+ field of the <a
485+ href="https://pkg.go.dev/k8s.io/[email protected] /pkg/apis/stats/v1alpha1#PodStats">PodStats.Memory</a> 486+ of the Kubelet's stats API. <p> updowncounter
487+ */
488+ static constexpr const char *kMetricContainerMemoryWorkingSet = " container.memory.working_set" ;
489+ static constexpr const char *descrMetricContainerMemoryWorkingSet = " Container memory working set." ;
490+ static constexpr const char *unitMetricContainerMemoryWorkingSet = " By" ;
491+
492+ static inline nostd::unique_ptr<metrics::UpDownCounter<int64_t >>
493+ CreateSyncInt64MetricContainerMemoryWorkingSet (metrics::Meter *meter)
494+ {
495+ return meter->CreateInt64UpDownCounter (kMetricContainerMemoryWorkingSet ,
496+ descrMetricContainerMemoryWorkingSet,
497+ unitMetricContainerMemoryWorkingSet);
498+ }
499+
500+ static inline nostd::unique_ptr<metrics::UpDownCounter<double >>
501+ CreateSyncDoubleMetricContainerMemoryWorkingSet (metrics::Meter *meter)
502+ {
503+ return meter->CreateDoubleUpDownCounter (kMetricContainerMemoryWorkingSet ,
504+ descrMetricContainerMemoryWorkingSet,
505+ unitMetricContainerMemoryWorkingSet);
506+ }
507+
508+ static inline nostd::shared_ptr<metrics::ObservableInstrument>
509+ CreateAsyncInt64MetricContainerMemoryWorkingSet (metrics::Meter *meter)
510+ {
511+ return meter->CreateInt64ObservableUpDownCounter (kMetricContainerMemoryWorkingSet ,
512+ descrMetricContainerMemoryWorkingSet,
513+ unitMetricContainerMemoryWorkingSet);
514+ }
515+
516+ static inline nostd::shared_ptr<metrics::ObservableInstrument>
517+ CreateAsyncDoubleMetricContainerMemoryWorkingSet (metrics::Meter *meter)
518+ {
519+ return meter->CreateDoubleObservableUpDownCounter (kMetricContainerMemoryWorkingSet ,
520+ descrMetricContainerMemoryWorkingSet,
521+ unitMetricContainerMemoryWorkingSet);
522+ }
523+
331524/* *
332525 Network bytes for the container.
333526 <p>
0 commit comments