当您从 Kubernetes 群集中启用 Azure Monitor 中的 Prometheus 指标收集时,它会使用默认的目标、仪表板和录制规则配置。 本文介绍默认配置和可以选择根据特定要求自定义它的方案。
最小引入配置文件
最小引入配置文件 是当在群集的 Azure Monitor 中启用了 Prometheus 指标时默认启用的设置。 此设置通过将指标限制为仅默认仪表板使用的指标、默认录制规则和默认警报来减少引入的指标量。 本文列出了这些目标和指标。 如果禁用此设置,则会收集默认目标的所有可用指标,从而显著增加引入量。
可以通过修改指标设置 ConfigMap 来更改最小引入配置文件设置,如 使用 ConfigMap 自定义 Azure Monitor 中 Prometheus 指标的擦除中所述。
自定义场景
可以选择使用默认配置或自定义集合以满足特定要求。 下表列出了四种可能的收集方案以及实现每个方案的建议方法。
| Scenario | 方法 |
|---|---|
| 仅引入每个默认目标的最小指标。 | 无需更改。 在不修改的情况下使用默认行为。 本文中列出的指标仅针对每个默认目标引入。 |
| 除了最少的指标外,还为一个或多个默认目标引入其他几个指标。 | 保持启用最小数据摄入,并指定针对目标的适当保留列表。 请参阅 默认目标收集的自定义指标。 |
| 仅引入默认目标的一组特定指标。 | 禁用最小采集,并在自定义抓取任务中指定适用于目标的保留列表。 请参阅 使用 ConfigMap 从 Kubernetes 群集中创建自定义的 Prometheus 抓取任务。 |
| 收集所有为默认目标采集的指标。 | 禁用最小引入,并且不为该目标指定任何保留列表。 请参阅 默认目标收集的自定义指标 |
默认抓取的目标
以下是 Azure Monitor 指标加载项默认可刮取的目标,以及启用这些指标的条件。 请参阅 “启用和禁用默认目标 ”以启用/禁用默认目标。
默认情况下,以下目标处于启用状态。
cadvisornodeexporterkubeletkube-state-metricsnetworkobservabilityRetina
启用控制平面指标(预览版)时,将启用以下目标。
controlplane-apiservercontrolplane-etcd
启用容器网络可观测性时,将启用以下目标。
networkobservabilityHubblenetworkobservabilityCilium
默认情况下禁用以下目标。
corednskubeproxyapiserver
默认情况下禁用以下目标,并要求启用 Windows 指标集合(预览 版)。
windows-exporterkube-proxy-windows
从默认目标收集的指标
默认情况下,会从每个默认目标收集以下指标。 所有其他指标通过重新标记规则被丢弃。 必须启用目标才能收集指标。
kubelet
kubelet_volume_stats_used_byteskubelet_node_namekubelet_running_podskubelet_running_pod_countkubelet_running_containerskubelet_running_container_countvolume_manager_total_volumeskubelet_node_config_errorkubelet_runtime_operations_totalkubelet_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_bytesprocess_cpu_seconds_totalgo_goroutineskubelet_volume_stats_capacity_byteskubelet_volume_stats_available_byteskubelet_volume_stats_inodes_usedkubelet_volume_stats_inodeskubernetes_build_info"
coredns
coredns_build_infocoredns_panics_totalcoredns_dns_responses_totalcoredns_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_totalcoredns_forward_requests_totalcoredns_cache_hits_totalcoredns_cache_misses_totalcoredns_cache_entriescoredns_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_bytesprocess_cpu_seconds_totalgo_goroutineskubernetes_build_info"
cadvisor
container_spec_cpu_periodcontainer_spec_cpu_quotacontainer_cpu_usage_seconds_totalcontainer_memory_rsscontainer_network_receive_bytes_totalcontainer_network_transmit_bytes_totalcontainer_network_receive_packets_totalcontainer_network_transmit_packets_totalcontainer_network_receive_packets_dropped_totalcontainer_network_transmit_packets_dropped_totalcontainer_fs_reads_totalcontainer_fs_writes_totalcontainer_fs_reads_bytes_totalcontainer_fs_writes_bytes_totalcontainer_memory_working_set_bytescontainer_memory_cachecontainer_memory_swapcontainer_cpu_cfs_throttled_periods_totalcontainer_cpu_cfs_periods_totalkubernetes_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_bytesprocess_cpu_seconds_totalgo_goroutineskubernetes_build_info"
apiserver
-
apiserver_request_duration_secondsapiserver_request_duration_seconds_bucketapiserver_request_duration_seconds_sumapiserver_request_duration_seconds_count apiserver_request_totalworkqueue_adds_total``workqueue_depth-
workqueue_queue_duration_secondsworkqueue_queue_duration_seconds_bucketworkqueue_queue_duration_seconds_sumworkqueue_queue_duration_seconds_count process_resident_memory_bytesprocess_cpu_seconds_totalgo_goroutineskubernetes_build_info"
kube-state
kube_job_status_succeededkube_job_spec_completionskube_daemonset_status_desired_number_scheduledkube_daemonset_status_number_readykube_deployment_status_replicas_readykube_pod_container_status_last_terminated_reasonkube_pod_container_status_waiting_reasonkube_pod_container_status_restarts_totalkube_node_status_allocatablekube_pod_ownerkube_pod_container_resource_requestskube_pod_status_phasekube_pod_container_resource_limitskube_replicaset_ownerkube_resourcequotakube_namespace_status_phasekube_node_status_capacitykube_node_infokube_pod_infokube_deployment_spec_replicaskube_deployment_status_replicas_availablekube_deployment_status_replicas_updatedkube_statefulset_status_replicas_readykube_statefulset_status_replicaskube_statefulset_status_replicas_updatedkube_job_status_start_timekube_job_status_activekube_job_failedkube_horizontalpodautoscaler_status_desired_replicaskube_horizontalpodautoscaler_status_current_replicaskube_horizontalpodautoscaler_spec_min_replicaskube_horizontalpodautoscaler_spec_max_replicaskubernetes_build_infokube_node_status_conditionkube_node_spec_taintkube_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_totalnode_memory_MemAvailable_bytesnode_memory_Buffers_bytesnode_memory_Cached_bytesnode_memory_MemFree_bytesnode_memory_Slab_bytesnode_memory_MemTotal_bytesnode_netstat_Tcp_RetransSegsnode_netstat_Tcp_OutSegsnode_netstat_TcpExt_TCPSynRetransnode_load1``node_load5node_load15node_disk_read_bytes_totalnode_disk_written_bytes_totalnode_disk_io_time_seconds_totalnode_filesystem_size_bytesnode_filesystem_avail_bytesnode_filesystem_readonlynode_network_receive_bytes_totalnode_network_transmit_bytes_totalnode_vmstat_pgmajfaultnode_network_receive_drop_totalnode_network_transmit_drop_totalnode_disk_io_time_weighted_seconds_totalnode_exporter_build_infonode_time_secondsnode_uname_info"
windowsexporter
windows_system_system_up_timewindows_cpu_time_totalwindows_memory_available_byteswindows_os_visible_memory_byteswindows_memory_cache_byteswindows_memory_modified_page_list_byteswindows_memory_standby_cache_core_byteswindows_memory_standby_cache_normal_priority_byteswindows_memory_standby_cache_reserve_byteswindows_memory_swap_page_operations_totalwindows_logical_disk_read_seconds_totalwindows_logical_disk_write_seconds_totalwindows_logical_disk_size_byteswindows_logical_disk_free_byteswindows_net_bytes_totalwindows_net_packets_received_discarded_totalwindows_net_packets_outbound_discarded_totalwindows_container_availablewindows_container_cpu_usage_seconds_totalwindows_container_memory_usage_commit_byteswindows_container_memory_usage_private_working_set_byteswindows_container_network_receive_bytes_totalwindows_container_network_transmit_bytes_total
WindowsKubeProxy
kubeproxy_sync_proxy_rules_duration_secondskubeproxy_sync_proxy_rules_duration_seconds_bucketkubeproxy_sync_proxy_rules_duration_seconds_sumkubeproxy_sync_proxy_rules_duration_seconds_countrest_client_requests_totalrest_client_request_duration_secondsrest_client_request_duration_seconds_bucketrest_client_request_duration_seconds_sumrest_client_request_duration_seconds_countprocess_resident_memory_bytesprocess_cpu_seconds_totalgo_goroutines
controlplane-apiserver
apiserver_request_totalapiserver_cache_list_fetched_objects_totalapiserver_cache_list_returned_objects_totalapiserver_flowcontrol_demand_seats_averageapiserver_flowcontrol_current_limit_seatsapiserver_request_sli_duration_seconds_bucket{le=+inf}apiserver_request_sli_duration_seconds_countapiserver_request_sli_duration_seconds_sumprocess_start_time_secondsapiserver_request_duration_seconds_bucket{le=+inf}apiserver_request_duration_seconds_countapiserver_request_duration_seconds_sumapiserver_storage_list_fetched_objects_totalapiserver_storage_list_returned_objects_totalapiserver_current_inflight_requests
注释
apiserver_request_duration_seconds 和 apiserver_request_sli_duration_seconds 是具有高基数的直方图指标,默认情况下不会收集任何序列。 仅使用总和和计数来收集平均延迟。
控制平面-集群-自动扩缩器
rest_client_requests_totalcluster_autoscaler_last_activitycluster_autoscaler_cluster_safe_to_autoscalecluster_autoscaler_scale_down_in_cooldowncluster_autoscaler_scaled_up_nodes_totalcluster_autoscaler_unneeded_nodes_countcluster_autoscaler_unschedulable_pods_countcluster_autoscaler_nodes_countcloudprovider_azure_api_request_errorscloudprovider_azure_api_request_duration_seconds_bucketcloudprovider_azure_api_request_duration_seconds_count
控制平面节点自动配置
karpenter_pods_statekarpenter_nodes_created_totalkarpenter_nodes_terminated_totalkarpenter_nodeclaims_disrupted_totalkarpenter_voluntary_disruption_eligible_nodeskarpenter_voluntary_disruption_decisions_total
控制平面-kube调度器
scheduler_pending_podsscheduler_unschedulable_podsscheduler_pod_scheduling_attemptsscheduler_queue_incoming_pods_totalscheduler_preemption_attempts_totalscheduler_preemption_victimsscheduler_scheduling_attempt_duration_secondsscheduler_schedule_attempts_totalscheduler_pod_scheduling_duration_seconds
controlplane-kube-controller-manager
rest_client_request_duration_secondsrest_client_requests_totalworkqueue_depth
controlplane-etcd
etcd_server_has_leaderrest_client_requests_totaletcd_mvcc_db_total_size_in_bytesetcd_mvcc_db_total_size_in_use_in_bytesetcd_server_slow_read_indexes_totaletcd_server_slow_apply_totaletcd_network_client_grpc_sent_bytes_totaletcd_server_heartbeat_send_failures_total
仪表板
将 Azure Monitor 工作区链接到 Azure 托管 Grafana 实例时,Azure Monitor 为 Prometheus 提供的托管服务会自动预配并配置以下默认仪表板。 它们在指定的 Azure Grafana 实例中的 Managed Prometheus 文件夹下预配。 这些是用于使用 Prometheus 和 Grafana 监视 Kubernetes 群集的标准开源社区仪表板。
Kubernetes / Compute Resources / ClusterKubernetes / Compute Resources / Namespace (Pods)Kubernetes / Compute Resources / Node (Pods)Kubernetes / Compute Resources / PodKubernetes / Compute Resources / Namespace (Workloads)Kubernetes / Compute Resources / WorkloadKubernetes / KubeletNode Exporter / USE Method / NodeNode Exporter / NodesKubernetes / 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_rate5mnamespace_cpu:kube_pod_container_resource_requests:sumnamespace_cpu:kube_pod_container_resource_limits:sum:node_memory_MemAvailable_bytes:sumnamespace_memory:kube_pod_container_resource_requests:sumnamespace_memory:kube_pod_container_resource_limits:sumnamespace_workload_pod:kube_pod_owner:relabelnode_namespace_pod_container:container_cpu_usage_seconds_total:sum_iratecluster:namespace:pod_cpu:active:kube_pod_container_resource_requestscluster:namespace:pod_cpu:active:kube_pod_container_resource_limitscluster:namespace:pod_memory:active:kube_pod_container_resource_requestscluster:namespace:pod_memory:active:kube_pod_container_resource_limitsnode_namespace_pod_container:container_memory_working_set_bytesnode_namespace_pod_container:container_memory_rssnode_namespace_pod_container:container_memory_cachenode_namespace_pod_container:container_memory_swapinstance:node_cpu_utilisation:rate5minstance:node_load1_per_cpu:ratioinstance:node_memory_utilisation:ratioinstance:node_vmstat_pgmajfault:rate5minstance:node_network_receive_bytes_excluding_lo:rate5minstance:node_network_transmit_bytes_excluding_lo:rate5minstance:node_network_receive_drop_excluding_lo:rate5minstance:node_network_transmit_drop_excluding_lo:rate5minstance_device:node_disk_io_time_seconds:rate5minstance_device:node_disk_io_time_weighted_seconds:rate5minstance:node_num_cpu:sumnode:windows_node:sumnode:windows_node_num_cpu:sum:windows_node_cpu_utilisation:avg5mnode:windows_node_cpu_utilisation:avg5m:windows_node_memory_utilisation::windows_node_memory_MemFreeCached_bytes:sumnode:windows_node_memory_totalCached_bytes:sum:windows_node_memory_MemTotal_bytes:sumnode:windows_node_memory_bytes_available:sumnode:windows_node_memory_bytes_total:sumnode:windows_node_memory_utilisation:rationode:windows_node_memory_utilisation:node:windows_node_memory_swap_io_pages:irate:windows_node_disk_utilisation:avg_iratenode:windows_node_disk_utilisation:avg_iratenode:windows_node_filesystem_usage:node:windows_node_filesystem_avail::windows_node_net_utilisation:sum_iratenode:windows_node_net_utilisation:sum_irate:windows_node_net_saturation:sum_iratenode:windows_node_net_saturation:sum_iratewindows_pod_container_availablewindows_container_total_runtimewindows_container_memory_usagewindows_container_private_working_set_usagewindows_container_network_received_bytes_totalwindows_container_network_transmitted_bytes_totalkube_pod_windows_container_resource_memory_requestkube_pod_windows_container_resource_memory_limitkube_pod_windows_container_resource_cpu_cores_requestkube_pod_windows_container_resource_cpu_cores_limitnamespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate
Prometheus 可视化记录规则
将自动部署以下录制规则以支持 Prometheus 可视化效果。
ux:cluster_pod_phase_count:sumux:node_cpu_usage:sum_irateux:node_memory_usage:sumux:controller_pod_phase_count:sumux:controller_container_count:sumux:controller_workingset_memory:sumux:controller_cpu_usage:sum_irateux:controller_rss_memory:sumux:controller_resource_limit:sumux:controller_container_restarts:maxux:pod_container_count:sumux:pod_cpu_usage:sum_irateux:pod_workingset_memory:sumux:pod_rss_memory:sumux:pod_resource_limit:sumux:pod_container_restarts:maxux:node_network_receive_drop_total:sum_irateux:node_network_transmit_drop_total:sum_irate
为了支持 Windows,以下是必需的录制规则。 它们是自动部署的,但默认情况下未启用。 请参阅 启用和禁用规则组 以启用它们。
ux:node_cpu_usage_windows:sum_irateux:node_memory_usage_windows:sumux:controller_cpu_usage_windows:sum_irateux:controller_workingset_memory_windows:sumux:pod_cpu_usage_windows:sum_irateux:pod_workingset_memory_windows:sum