Kubernetes 클러스터에서 Azure Monitor에서 Prometheus 메트릭 컬렉션을 사용하도록 설정하면 대상, 대시보드 및 기록 규칙에 대한 기본 구성을 사용합니다. 이 문서에서는 기본 구성 및 특정 요구 사항에 맞게 사용자 지정하도록 선택할 수 있는 시나리오에 대해 설명합니다.
최소 수집 프로필
최소 수집 프로필 은 클러스터에 대한 Azure Monitor에서 Prometheus 메트릭을 사용하도록 설정할 때 기본적으로 사용하도록 설정되는 설정입니다. 이 설정은 기본 대시보드, 기본 기록 규칙 및 기본 경고에서 사용하는 메트릭으로만 제한하여 수집되는 메트릭의 양을 줄입니다. 이러한 대상 및 메트릭은 이 문서에 나와 있습니다. 이 설정을 사용하지 않도록 설정하면 기본 대상에 대해 사용 가능한 모든 메트릭이 수집되므로 수집 볼륨이 크게 증가할 수 있습니다.
ConfigMap을 사용하여 Azure Monitor에서 Prometheus 메트릭의 스크래핑 사용자 지정에 설명된 대로 ConfigMap 메트릭 설정을 수정하여 최소 수집 프로필 설정을 변경할 수 있습니다.
사용자 지정 시나리오
기본 구성을 사용하거나 특정 요구 사항에 맞게 컬렉션을 사용자 지정하도록 선택할 수 있습니다. 다음 표에서는 4가지 잠재적 컬렉션 시나리오와 각각을 달성하는 데 권장되는 방법을 나열합니다.
| Scenario | 메서드 |
|---|---|
| 각 기본 대상에 대한 최소 메트릭만 수집합니다. | 변경이 필요하지 않습니다. 수정 없이 기본 동작을 사용합니다. 이 문서에 나열된 메트릭만 각 기본 대상에 대해 수집됩니다. |
| 최소 메트릭 외에도 하나 이상의 기본 대상에 대한 몇 가지 다른 메트릭을 수집합니다. | 최소 수집 기능을 켜고 대상에 적합한 유지 목록을 지정합니다. 기본 대상에 의해 수집된 메트릭 사용자 지정을 참조하세요. |
| 기본 대상에 대한 특정 메트릭 집합만 수집합니다. | 최소 수집 기능을 비활성화하고 사용자 지정 스크래핑 작업에서 대상에 따라 적절한 유지 목록을 지정합니다. ConfigMap을 사용하여 Kubernetes 클러스터에서 사용자 지정 Prometheus 스크랩 작업 만들기를 참조하세요. |
| 기본 대상에 대해 스크랩된 모든 메트릭을 수집합니다. | 최소 수집을 사용하지 않도록 설정하고 해당 대상에 대한 유지 목록을 지정하지 마세요. 기본 대상에 의해 수집된 메트릭 사용자 지정을 참조하세요. |
기본적으로 스크랩된 대상
다음은 Azure Monitor 메트릭 추가 기능이 기본적으로 긁어낼 수 있는 대상과 사용하도록 설정된 조건입니다. 기본 대상을 사용하거나 사용하지 않도록 설정하려면 기본 대상 사용 및 사용 안 함을 참조하세요.
다음 대상은 기본적으로 사용하도록 설정됩니다.
cadvisornodeexporterkubeletkube-state-metricsnetworkobservabilityRetina
컨트롤 플레인 메트릭(미리 보기)이 활성화되면 다음 대상이 활성화됩니다.
controlplane-apiservercontrolplane-etcd
컨테이너 네트워크 관찰성을 사용하도록 설정하면 다음 대상이 활성화됩니다.
networkobservabilityHubblenetworkobservabilityCilium
Azure Container Storage를 사용하도록 설정하면 다음 대상이 활성화됩니다.
acstor-capacity-provisioneracstor-metrics-exporter
다음 대상은 기본적으로 사용하지 않도록 설정됩니다.
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"
윈도우즈엑스포터
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
네트워크 관측 가능성 Hubble
Cilium 네트워크 가시성
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는 카디널리티가 높으며 모든 시리즈가 기본적으로 수집되지 않는 히스토그램 메트릭입니다. 합계와 개수만 평균 대기 시간을 수집하는 데 사용됩니다.
controlplane-cluster-autoscaler
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
controlplane-kube-scheduler
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
acstor-capacity-provisioner(job=acstor-capacity-provisioner)
acstor-metrics-exporter(job=acstor-metrics-exporter)
현황판
다음 기본 대시보드는 Azure Monitor 작업 영역을 Azure Managed Grafana 인스턴스에 연결할 때 Prometheus용 Azure Monitor 관리 서비스에서 자동으로 프로비전되고 구성됩니다. 지정된 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)
기록 규칙
다음 기본 기록 규칙은 AKS(Azure Kubernetes Service) 클러스터에서 Prometheus 메트릭을 스크래핑하도록 구성할 때 Prometheus용 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