This page describes how to configure a Google Kubernetes Engine (GKE) cluster to send a curated set of cAdvisor/Kubelet metrics to Cloud Monitoring using Google Cloud Managed Service for Prometheus. This page also describes how these metrics are formatted when they are written to Monitoring, and how to query metrics.
The curated set of metrics is a subset of the set of cAdvisor/Kubelet metrics built into every Kubernetes deployment by default and includes metrics related to reducing ingestion volume and associated costs.
Before you begin
Before you start, make sure that you have performed the following tasks:
- Enable the Google Kubernetes Engine API. Enable Google Kubernetes Engine API
- If you want to use the Google Cloud CLI for this task, install
and then initialize
the
gcloud CLI. If you previously installed the gcloud CLI, get the latest
version by running
gcloud components update
.
Requirements
To collect cAdvisor/Kubelet metrics, your GKE cluster must meet the following requirements:
- The cluster must be running GKE version 1.29.3-gke.1093000 or later. cAdvisor/Kubelet packages are enabled by default when you create a cluster running version 1.29.3-gke.1093000 or later.
- The cluster must have system metrics enabled.
- The cluster has Google Cloud Managed Service for Prometheus managed collection enabled. Google Cloud Managed Service for Prometheus managed collection is enabled by default for new clusters.
Configuring collection of cAdvisor/Kubelet metrics
You can enable cAdvisor/Kubelet metrics in an existing GKE cluster using the Google Cloud console, the gcloud CLI, or Terraform.
Console
To configure cAdvisor/Kubelet metrics from the Detailstab for the cluster, do the following:
-
In the Google Cloud console, go to the Kubernetes clusters page:
If you use the search bar to find this page, then select the result whose subheading is Kubernetes Engine .
-
Click your cluster's name.
-
In the Featuresrow labelled Cloud Monitoring, click the Editicon.
-
In the Edit Cloud Monitoringdialog that appears, confirm that Enable Cloud Monitoringis selected.
-
In the Componentsdrop-down menu, select the cAdvisor/Kubelet components from which you would like to collect metrics:
- cAdvisor
- Kubelet
-
Click OK.
-
Click Save Changes.
gcloud
Update your cluster to collect metrics:
gcloud
container
clusters
update
CLUSTER_NAME
\
--location =
COMPUTE_LOCATION
\
--enable-managed-prometheus
\
--monitoring =
SYSTEM,CADVISOR,KUBELET
Replace the following:
-
CLUSTER_NAME
: the name of the existing cluster. -
COMPUTE_LOCATION
: the Compute Engine location of the cluster.
The set of values supplied to the monitoring
flag overrides any previous
setting.
Terraform
To configure the collection of cAdvisor/Kubelet metrics by using Terraform,
see the monitoring_config
block in the Terraform registry for google_container_cluster
.
For general information about using Google Cloud with Terraform, see Terraform with Google Cloud
.
Metric format
All Kubernetes cAdvisor/Kubelet metrics written to Cloud Monitoring
use the resource type prometheus_target
.
Each metric name is prefixed with prometheus.googleapis.com/
and has a suffix indicating the
Prometheus metric type, such as /gauge
, /histogram
,
or /counter
. Otherwise, each metric name is
identical to the metric name exposed by open source Kubernetes.
Exporting from Cloud Monitoring
The cAdvisor/Kubelet metrics can be exported from Cloud Monitoring by using the Cloud Monitoring API . Because all cAdvisor/Kubelet metrics are ingested by using Google Cloud Managed Service for Prometheus , cAdvisor/Kubelet metrics can be queried by using Prometheus Query Language (PromQL) . They can also be queried by using by using Monitoring Query Language (MQL) .
Querying metrics
When you query cAdvisor/Kubelet metrics, the name you use depends on whether you are using PromQL or Cloud Monitoring-based features like MQL or the Metrics Explorer menu-driven interface .
The following tables of cAdvisor/Kubelet metrics show two versions of each metric name:
- PromQL metric name : When using PromQL in Cloud Monitoring pages of the Google Cloud console or in PromQL fields of the Cloud Monitoring API , use the PromQL metric name.
- Cloud Monitoring metric name
When using other
Cloud Monitoring features, use the Cloud Monitoring metric name
in the tables below. This name must be prefixed with
prometheus.googleapis.com/
, which has been omitted from the entries in the table.
cAdvisor metrics
The Cloud Monitoring metric names in this table must be prefixed with prometheus.googleapis.com/
. That prefix has been omitted from the
entries in the table.
Cloud Monitoring metric name
Monitored resources
Required GKE version
Labels
container_cpu_cfs_periods_total
container_cpu_cfs_periods_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
cpu
container_cpu_cfs_throttled_periods_total
container_cpu_cfs_throttled_periods_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
cpu
container_cpu_usage_seconds_total
container_cpu_usage_seconds_total/counter
CUMULATIVE
, DOUBLE
, s
prometheus_target
1.29.3-gke.1093000
cpu
container_fs_limit_bytes
container_fs_limit_bytes/gauge
GAUGE
, DOUBLE
, By
prometheus_target
1.29.3-gke.1093000
disk
container_fs_read_seconds_total
container_fs_read_seconds_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
diskIO
container_fs_reads_bytes_total
container_fs_reads_bytes_total/counter
CUMULATIVE
, DOUBLE
, By
prometheus_target
1.29.3-gke.1093000
diskIO
container_fs_reads_total
container_fs_reads_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
diskIO
container_fs_usage_bytes
container_fs_usage_bytes/gauge
GAUGE
, DOUBLE
, By
prometheus_target
1.29.3-gke.1093000
disk
container_fs_write_seconds_total
container_fs_write_seconds_total/counter
CUMULATIVE
, DOUBLE
, s
prometheus_target
1.29.3-gke.1093000
diskIO
container_fs_writes_bytes_total
container_fs_writes_bytes_total/counter
CUMULATIVE
, DOUBLE
, By
prometheus_target
1.29.3-gke.1093000
diskIO
container_fs_writes_total
container_fs_writes_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
diskIO
container_memory_rss
container_memory_rss/gauge
GAUGE
, DOUBLE
, By
prometheus_target
1.29.3-gke.1093000
memory
container_memory_working_set_bytes
container_memory_working_set_bytes/gauge
GAUGE
, DOUBLE
, By
prometheus_target
1.29.3-gke.1093000
memory
container_network_receive_bytes_total
container_network_receive_bytes_total/counter
CUMULATIVE
, DOUBLE
, By
prometheus_target
1.29.3-gke.1093000
network
container_network_receive_packets_dropped_total
container_network_receive_packets_dropped_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
network
container_network_receive_packets_total
container_network_receive_packets_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
network
container_network_transmit_bytes_total
container_network_transmit_bytes_total/counter
CUMULATIVE
, DOUBLE
, By
prometheus_target
1.29.3-gke.1093000
network
container_network_transmit_packets_dropped_total
container_network_transmit_packets_dropped_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
network
container_network_transmit_packets_total
container_network_transmit_packets_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
network
Kubelet metrics
The Cloud Monitoring metric names in this table must be prefixed with prometheus.googleapis.com/
. That prefix has been omitted from the
entries in the table.
Cloud Monitoring metric name
Monitored resources
Required GKE version
Labels
kubelet_certificate_manager_server_ttl_seconds
kubelet_certificate_manager_server_ttl_seconds/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
kubelet_node_name
kubelet_node_name/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
node
kubelet_pleg_relist_duration_seconds
kubelet_pleg_relist_duration_seconds/histogram
CUMULATIVE
, DISTRIBUTION
, s
prometheus_target
1.29.3-gke.1093000
kubelet_pod_worker_duration_seconds
kubelet_pod_worker_duration_seconds/histogram
CUMULATIVE
, DISTRIBUTION
, s
prometheus_target
1.29.3-gke.1093000
operation_type
kubelet_running_containers
kubelet_running_containers/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
container_state
kubelet_running_pods
kubelet_running_pods/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
kubelet_runtime_operations_total
kubelet_runtime_operations_total/counter
CUMULATIVE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
operation_type
kubelet_volume_stats_available_bytes
kubelet_volume_stats_available_bytes/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
namespace
persistentvolumeclaim
kubelet_volume_stats_capacity_bytes
kubelet_volume_stats_capacity_bytes/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
namespace
persistentvolumeclaim
kubelet_volume_stats_inodes
kubelet_volume_stats_inodes/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
namespace
persistentvolumeclaim
kubelet_volume_stats_inodes_free
kubelet_volume_stats_inodes_free/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
namespace
persistentvolumeclaim
kubelet_volume_stats_inodes_used
kubelet_volume_stats_inodes_used/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
namespace
persistentvolumeclaim
kubelet_volume_stats_used_bytes
kubelet_volume_stats_used_bytes/gauge
GAUGE
, DOUBLE
, 1
prometheus_target
1.29.3-gke.1093000
namespace
persistentvolumeclaim