当您从 Kubernetes 群集中启用 Azure Monitor 中的 Prometheus 指标收集时,它会使用默认的目标、仪表板和录制规则配置。 本文介绍默认配置和可以选择根据特定要求自定义它的方案。
最小引入配置文件
最小引入配置文件 是当在群集的 Azure Monitor 中启用了 Prometheus 指标时默认启用的设置。 此设置通过将指标限制为仅默认仪表板使用的指标、默认录制规则和默认警报来减少引入的指标量。 本文列出了这些目标和指标。 如果禁用此设置,则会收集默认目标的所有可用指标,从而显著增加引入量。
可以通过修改指标设置 ConfigMap 来更改最小引入配置文件设置,如 使用 ConfigMap 自定义 Azure Monitor 中 Prometheus 指标的擦除中所述。
自定义场景
可以选择使用默认配置或自定义集合以满足特定要求。 下表列出了四种可能的收集方案以及实现每个方案的建议方法。
| Scenario | 方法 | 
|---|---|
| 仅引入每个默认目标的最小指标。 | 无需更改。 在不修改的情况下使用默认行为。 本文中列出的指标仅针对每个默认目标引入。 | 
| 除了最少的指标外,还为一个或多个默认目标引入其他几个指标。 | 保持启用最小数据摄入,并指定针对目标的适当保留列表。 请参阅 默认目标收集的自定义指标。 | 
| 仅引入默认目标的一组特定指标。 | 禁用最小采集,并在自定义抓取任务中指定适用于目标的保留列表。 请参阅 使用 ConfigMap 从 Kubernetes 群集中创建自定义的 Prometheus 抓取任务。 | 
| 收集所有为默认目标采集的指标。 | 禁用最小引入,并且不为该目标指定任何保留列表。 请参阅 默认目标收集的自定义指标 | 
默认抓取的目标
以下是 Azure Monitor 指标加载项默认可刮取的目标,以及启用这些指标的条件。 请参阅 “启用和禁用默认目标 ”以启用/禁用默认目标。
默认情况下,以下目标处于启用状态。
- cadvisor
- nodeexporter
- kubelet
- kube-state-metrics
- networkobservabilityRetina
启用控制平面指标(预览版)时,将启用以下目标。
- controlplane-apiserver
- controlplane-etcd
启用容器网络可观测性时,将启用以下目标。
- networkobservabilityHubble
- networkobservabilityCilium
默认情况下禁用以下目标。
- coredns
- kubeproxy
- apiserver
默认情况下禁用以下目标,并要求启用 Windows 指标集合(预览 版)。
- windows-exporter
- kube-proxy-windows
从默认目标收集的指标
默认情况下,会从每个默认目标收集以下指标。 所有其他指标通过重新标记规则被丢弃。 必须启用目标才能收集指标。
kubelet
- kubelet_volume_stats_used_bytes
- kubelet_node_name
- kubelet_running_pods
- kubelet_running_pod_count
- kubelet_running_containers
- kubelet_running_container_count
- volume_manager_total_volumes
- kubelet_node_config_error
- kubelet_runtime_operations_total
- kubelet_runtime_operations_errors_total
- 
              kubelet_runtime_operations_duration_secondskubelet_runtime_operations_duration_seconds_bucketkubelet_runtime_operations_duration_seconds_sumkubelet_runtime_operations_duration_seconds_count
- 
              kubelet_pod_start_duration_secondskubelet_pod_start_duration_seconds_bucketkubelet_pod_start_duration_seconds_sumkubelet_pod_start_duration_seconds_count
- 
              kubelet_pod_worker_duration_secondskubelet_pod_worker_duration_seconds_bucketkubelet_pod_worker_duration_seconds_sumkubelet_pod_worker_duration_seconds_count
- 
              storage_operation_duration_secondsstorage_operation_duration_seconds_bucketstorage_operation_duration_seconds_sumstorage_operation_duration_seconds_count
- storage_operation_errors_total
- 
              kubelet_cgroup_manager_duration_secondskubelet_cgroup_manager_duration_seconds_bucketkubelet_cgroup_manager_duration_seconds_sumkubelet_cgroup_manager_duration_seconds_count
- 
              kubelet_pleg_relist_duration_secondskubelet_pleg_relist_duration_seconds_bucketkubelet_pleg_relist_duration_sumkubelet_pleg_relist_duration_seconds_count
- 
              kubelet_pleg_relist_interval_secondskubelet_pleg_relist_interval_seconds_bucketkubelet_pleg_relist_interval_seconds_sumkubelet_pleg_relist_interval_seconds_count
- rest_client_requests_total
- 
              rest_client_request_duration_secondsrest_client_request_duration_seconds_bucketrest_client_request_duration_seconds_sumrest_client_request_duration_seconds_count
- process_resident_memory_bytes
- process_cpu_seconds_total
- go_goroutines
- kubelet_volume_stats_capacity_bytes
- kubelet_volume_stats_available_bytes
- kubelet_volume_stats_inodes_used
- kubelet_volume_stats_inodes
- kubernetes_build_info"
coredns
- coredns_build_info
- coredns_panics_total
- coredns_dns_responses_total
- coredns_forward_responses_total
- 
              coredns_dns_request_duration_secondscoredns_dns_request_duration_seconds_bucketcoredns_dns_request_duration_seconds_sumcoredns_dns_request_duration_seconds_count
- 
              coredns_forward_request_duration_secondscoredns_forward_request_duration_seconds_bucketcoredns_forward_request_duration_seconds_sumcoredns_forward_request_duration_seconds_count
- coredns_dns_requests_total
- coredns_forward_requests_total
- coredns_cache_hits_total
- coredns_cache_misses_total
- coredns_cache_entries
- coredns_plugin_enabled
- 
              coredns_dns_request_size_bytescoredns_dns_request_size_bytes_bucketcoredns_dns_request_size_bytes_sumcoredns_dns_request_size_bytes_count
- 
              coredns_dns_response_size_bytescoredns_dns_response_size_bytes_bucketcoredns_dns_response_size_bytes_sumcoredns_dns_response_size_bytes_count
- 
              coredns_dns_response_size_bytescoredns_dns_response_size_bytes_bucketcoredns_dns_response_size_bytes_sumcoredns_dns_response_size_bytes_count
- process_resident_memory_bytes
- process_cpu_seconds_total
- go_goroutines
- kubernetes_build_info"
cadvisor
- container_spec_cpu_period
- container_spec_cpu_quota
- container_cpu_usage_seconds_total
- container_memory_rss
- container_network_receive_bytes_total
- container_network_transmit_bytes_total
- container_network_receive_packets_total
- container_network_transmit_packets_total
- container_network_receive_packets_dropped_total
- container_network_transmit_packets_dropped_total
- container_fs_reads_total
- container_fs_writes_total
- container_fs_reads_bytes_total
- container_fs_writes_bytes_total
- container_memory_working_set_bytes
- container_memory_cache
- container_memory_swap
- container_cpu_cfs_throttled_periods_total
- container_cpu_cfs_periods_total
- kubernetes_build_info"
kubeproxy
- 
              kubeproxy_sync_proxy_rules_duration_secondskubeproxy_sync_proxy_rules_duration_seconds_bucketkubeproxy_sync_proxy_rules_duration_seconds_sumkubeproxy_sync_proxy_rules_duration_seconds_countkubeproxy_network_programming_duration_seconds
- 
              kubeproxy_network_programming_duration_secondskubeproxy_network_programming_duration_seconds_bucketkubeproxy_network_programming_duration_seconds_sumkubeproxy_network_programming_duration_seconds_countrest_client_requests_total
- 
              rest_client_request_duration_secondsrest_client_request_duration_seconds_bucketrest_client_request_duration_seconds_sumrest_client_request_duration_seconds_count
- process_resident_memory_bytes
- process_cpu_seconds_total
- go_goroutines
- kubernetes_build_info"
apiserver
- 
              apiserver_request_duration_secondsapiserver_request_duration_seconds_bucketapiserver_request_duration_seconds_sumapiserver_request_duration_seconds_count
- apiserver_request_total
- workqueue_adds_total``workqueue_depth
- 
              workqueue_queue_duration_secondsworkqueue_queue_duration_seconds_bucketworkqueue_queue_duration_seconds_sumworkqueue_queue_duration_seconds_count
- process_resident_memory_bytes
- process_cpu_seconds_total
- go_goroutines
- kubernetes_build_info"
kube-state
- kube_job_status_succeeded
- kube_job_spec_completions
- kube_daemonset_status_desired_number_scheduled
- kube_daemonset_status_number_ready
- kube_deployment_status_replicas_ready
- kube_pod_container_status_last_terminated_reason
- kube_pod_container_status_waiting_reason
- kube_pod_container_status_restarts_total
- kube_node_status_allocatable
- kube_pod_owner
- kube_pod_container_resource_requests
- kube_pod_status_phase
- kube_pod_container_resource_limits
- kube_replicaset_owner
- kube_resourcequota
- kube_namespace_status_phase
- kube_node_status_capacity
- kube_node_info
- kube_pod_info
- kube_deployment_spec_replicas
- kube_deployment_status_replicas_available
- kube_deployment_status_replicas_updated
- kube_statefulset_status_replicas_ready
- kube_statefulset_status_replicas
- kube_statefulset_status_replicas_updated
- kube_job_status_start_time
- kube_job_status_active
- kube_job_failed
- kube_horizontalpodautoscaler_status_desired_replicas
- kube_horizontalpodautoscaler_status_current_replicas
- kube_horizontalpodautoscaler_spec_min_replicas
- kube_horizontalpodautoscaler_spec_max_replicas
- kubernetes_build_info
- kube_node_status_condition
- kube_node_spec_taint
- kube_pod_container_info
- 
              kube_resource_labels(例如:kube_pod_labels,kube_deployment_labels)
- 
              kube_resource_annotations(例如 kube_pod_annotations, kube_deployment_annotations)
nodeexporter
- node_cpu_seconds_total
- node_memory_MemAvailable_bytes
- node_memory_Buffers_bytes
- node_memory_Cached_bytes
- node_memory_MemFree_bytes
- node_memory_Slab_bytes
- node_memory_MemTotal_bytes
- node_netstat_Tcp_RetransSegs
- node_netstat_Tcp_OutSegs
- node_netstat_TcpExt_TCPSynRetrans
- node_load1``node_load5
- node_load15
- node_disk_read_bytes_total
- node_disk_written_bytes_total
- node_disk_io_time_seconds_total
- node_filesystem_size_bytes
- node_filesystem_avail_bytes
- node_filesystem_readonly
- node_network_receive_bytes_total
- node_network_transmit_bytes_total
- node_vmstat_pgmajfault
- node_network_receive_drop_total
- node_network_transmit_drop_total
- node_disk_io_time_weighted_seconds_total
- node_exporter_build_info
- node_time_seconds
- node_uname_info"
windowsexporter
- windows_system_system_up_time
- windows_cpu_time_total
- windows_memory_available_bytes
- windows_os_visible_memory_bytes
- windows_memory_cache_bytes
- windows_memory_modified_page_list_bytes
- windows_memory_standby_cache_core_bytes
- windows_memory_standby_cache_normal_priority_bytes
- windows_memory_standby_cache_reserve_bytes
- windows_memory_swap_page_operations_total
- windows_logical_disk_read_seconds_total
- windows_logical_disk_write_seconds_total
- windows_logical_disk_size_bytes
- windows_logical_disk_free_bytes
- windows_net_bytes_total
- windows_net_packets_received_discarded_total
- windows_net_packets_outbound_discarded_total
- windows_container_available
- windows_container_cpu_usage_seconds_total
- windows_container_memory_usage_commit_bytes
- windows_container_memory_usage_private_working_set_bytes
- windows_container_network_receive_bytes_total
- windows_container_network_transmit_bytes_total
WindowsKubeProxy
- kubeproxy_sync_proxy_rules_duration_seconds
- kubeproxy_sync_proxy_rules_duration_seconds_bucket
- kubeproxy_sync_proxy_rules_duration_seconds_sum
- kubeproxy_sync_proxy_rules_duration_seconds_count
- rest_client_requests_total
- rest_client_request_duration_seconds
- rest_client_request_duration_seconds_bucket
- rest_client_request_duration_seconds_sum
- rest_client_request_duration_seconds_count
- process_resident_memory_bytes
- process_cpu_seconds_total
- go_goroutines
controlplane-apiserver
- apiserver_request_total
- apiserver_cache_list_fetched_objects_total
- apiserver_cache_list_returned_objects_total
- apiserver_flowcontrol_demand_seats_average
- apiserver_flowcontrol_current_limit_seats
- apiserver_request_sli_duration_seconds_bucket{le=+inf}
- apiserver_request_sli_duration_seconds_count
- apiserver_request_sli_duration_seconds_sum
- process_start_time_seconds
- apiserver_request_duration_seconds_bucket{le=+inf}
- apiserver_request_duration_seconds_count
- apiserver_request_duration_seconds_sum
- apiserver_storage_list_fetched_objects_total
- apiserver_storage_list_returned_objects_total
- apiserver_current_inflight_requests
注释
              apiserver_request_duration_seconds 和 apiserver_request_sli_duration_seconds 是具有高基数的直方图指标,默认情况下不会收集任何序列。 仅使用总和和计数来收集平均延迟。
控制平面-集群-自动扩缩器
- rest_client_requests_total
- cluster_autoscaler_last_activity
- cluster_autoscaler_cluster_safe_to_autoscale
- cluster_autoscaler_scale_down_in_cooldown
- cluster_autoscaler_scaled_up_nodes_total
- cluster_autoscaler_unneeded_nodes_count
- cluster_autoscaler_unschedulable_pods_count
- cluster_autoscaler_nodes_count
- cloudprovider_azure_api_request_errors
- cloudprovider_azure_api_request_duration_seconds_bucket
- cloudprovider_azure_api_request_duration_seconds_count
控制平面节点自动配置
- karpenter_pods_state
- karpenter_nodes_created_total
- karpenter_nodes_terminated_total
- karpenter_nodeclaims_disrupted_total
- karpenter_voluntary_disruption_eligible_nodes
- karpenter_voluntary_disruption_decisions_total
控制平面-kube调度器
- scheduler_pending_pods
- scheduler_unschedulable_pods
- scheduler_pod_scheduling_attempts
- scheduler_queue_incoming_pods_total
- scheduler_preemption_attempts_total
- scheduler_preemption_victims
- scheduler_scheduling_attempt_duration_seconds
- scheduler_schedule_attempts_total
- scheduler_pod_scheduling_duration_seconds
controlplane-kube-controller-manager
- rest_client_request_duration_seconds
- rest_client_requests_total
- workqueue_depth
controlplane-etcd
- etcd_server_has_leader
- rest_client_requests_total
- etcd_mvcc_db_total_size_in_bytes
- etcd_mvcc_db_total_size_in_use_in_bytes
- etcd_server_slow_read_indexes_total
- etcd_server_slow_apply_total
- etcd_network_client_grpc_sent_bytes_total
- etcd_server_heartbeat_send_failures_total
仪表板
将 Azure Monitor 工作区链接到 Azure 托管 Grafana 实例时,Azure Monitor 为 Prometheus 提供的托管服务会自动预配并配置以下默认仪表板。 它们在指定的 Azure Grafana 实例中的 Managed Prometheus 文件夹下预配。 这些是用于使用 Prometheus 和 Grafana 监视 Kubernetes 群集的标准开源社区仪表板。
- Kubernetes / Compute Resources / Cluster
- Kubernetes / Compute Resources / Namespace (Pods)
- Kubernetes / Compute Resources / Node (Pods)
- Kubernetes / Compute Resources / Pod
- Kubernetes / Compute Resources / Namespace (Workloads)
- Kubernetes / Compute Resources / Workload
- Kubernetes / Kubelet
- Node Exporter / USE Method / Node
- Node Exporter / Nodes
- Kubernetes / Compute Resources / Cluster (Windows)
- Kubernetes / Compute Resources / Namespace (Windows)
- Kubernetes / Compute Resources / Pod (Windows)
- Kubernetes / USE Method / Cluster (Windows)
- Kubernetes / USE Method / Node (Windows)
记录规则
将 Prometheus 指标配置为从 Azure Kubernetes 服务 (AKS) 群集中擦除时,Azure Monitor 托管服务会自动配置以下默认录制规则。 可在 此 GitHub 存储库中找到这些记录规则的源代码。 这些是上述仪表板中使用的标准开源录制规则。
- cluster:node_cpu:ratio_rate5m
- namespace_cpu:kube_pod_container_resource_requests:sum
- namespace_cpu:kube_pod_container_resource_limits:sum
- :node_memory_MemAvailable_bytes:sum
- namespace_memory:kube_pod_container_resource_requests:sum
- namespace_memory:kube_pod_container_resource_limits:sum
- namespace_workload_pod:kube_pod_owner:relabel
- node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate
- cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests
- cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits
- cluster:namespace:pod_memory:active:kube_pod_container_resource_requests
- cluster:namespace:pod_memory:active:kube_pod_container_resource_limits
- node_namespace_pod_container:container_memory_working_set_bytes
- node_namespace_pod_container:container_memory_rss
- node_namespace_pod_container:container_memory_cache
- node_namespace_pod_container:container_memory_swap
- instance:node_cpu_utilisation:rate5m
- instance:node_load1_per_cpu:ratio
- instance:node_memory_utilisation:ratio
- instance:node_vmstat_pgmajfault:rate5m
- instance:node_network_receive_bytes_excluding_lo:rate5m
- instance:node_network_transmit_bytes_excluding_lo:rate5m
- instance:node_network_receive_drop_excluding_lo:rate5m
- instance:node_network_transmit_drop_excluding_lo:rate5m
- instance_device:node_disk_io_time_seconds:rate5m
- instance_device:node_disk_io_time_weighted_seconds:rate5m
- instance:node_num_cpu:sum
- node:windows_node:sum
- node:windows_node_num_cpu:sum
- :windows_node_cpu_utilisation:avg5m
- node:windows_node_cpu_utilisation:avg5m
- :windows_node_memory_utilisation:
- :windows_node_memory_MemFreeCached_bytes:sum
- node:windows_node_memory_totalCached_bytes:sum
- :windows_node_memory_MemTotal_bytes:sum
- node:windows_node_memory_bytes_available:sum
- node:windows_node_memory_bytes_total:sum
- node:windows_node_memory_utilisation:ratio
- node:windows_node_memory_utilisation:
- node:windows_node_memory_swap_io_pages:irate
- :windows_node_disk_utilisation:avg_irate
- node:windows_node_disk_utilisation:avg_irate
- node:windows_node_filesystem_usage:
- node:windows_node_filesystem_avail:
- :windows_node_net_utilisation:sum_irate
- node:windows_node_net_utilisation:sum_irate
- :windows_node_net_saturation:sum_irate
- node:windows_node_net_saturation:sum_irate
- windows_pod_container_available
- windows_container_total_runtime
- windows_container_memory_usage
- windows_container_private_working_set_usage
- windows_container_network_received_bytes_total
- windows_container_network_transmitted_bytes_total
- kube_pod_windows_container_resource_memory_request
- kube_pod_windows_container_resource_memory_limit
- kube_pod_windows_container_resource_cpu_cores_request
- kube_pod_windows_container_resource_cpu_cores_limit
- namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate
Prometheus 可视化记录规则
将自动部署以下录制规则以支持 Prometheus 可视化效果。
- ux:cluster_pod_phase_count:sum
- ux:node_cpu_usage:sum_irate
- ux:node_memory_usage:sum
- ux:controller_pod_phase_count:sum
- ux:controller_container_count:sum
- ux:controller_workingset_memory:sum
- ux:controller_cpu_usage:sum_irate
- ux:controller_rss_memory:sum
- ux:controller_resource_limit:sum
- ux:controller_container_restarts:max
- ux:pod_container_count:sum
- ux:pod_cpu_usage:sum_irate
- ux:pod_workingset_memory:sum
- ux:pod_rss_memory:sum
- ux:pod_resource_limit:sum
- ux:pod_container_restarts:max
- ux:node_network_receive_drop_total:sum_irate
- ux:node_network_transmit_drop_total:sum_irate
为了支持 Windows,以下是必需的录制规则。 它们是自动部署的,但默认情况下未启用。 请参阅 启用和禁用规则组 以启用它们。
- ux:node_cpu_usage_windows:sum_irate
- ux:node_memory_usage_windows:sum
- ux:controller_cpu_usage_windows:sum_irate
- ux:controller_workingset_memory_windows:sum
- ux:pod_cpu_usage_windows:sum_irate
- ux:pod_workingset_memory_windows:sum