다음을 통해 공유


Azure Monitor의 기본 Prometheus 메트릭 구성

이 문서에서는 AKS(Azure Kubernetes Service) 클러스터 또는 Azure Arc 지원 Kubernetes에서 스크래핑되도록 Prometheus 메트릭을 구성할 때 기본 대상, 대시보드 및 기록 규칙을 나열합니다.

최소 수집 프로필

Minimal ingestion profile 는 기본 대시보드에서 사용되는 메트릭만 기본 기록 규칙 및 기본 경고가 수집되므로 메트릭 수집 볼륨을 줄이는 데 도움이 되는 설정입니다. 추가 기능 기반 수집의 경우 Minimal ingestion profile 설정이 기본적으로 사용됩니다. 아래에 지정된 대로 더 많은 메트릭을 수집할 수 있도록 컬렉션을 수정할 수 있습니다.

스크래핑 빈도

모든 기본 대상 및 스크래핑에 대한 기본 스크래핑 빈도는 30초입니다.

기본적으로 스크랩된 대상

다음 대상은 기본적으로 사용/켜짐으로 되어 있습니다. 즉, 메트릭 추가 기능이 이러한 대상을 자동으로 긁어내므로, 이러한 대상을 스크래핑하기 위한 작업 구성을 제공할 필요가 없습니다.

  • cadvisor(job=cadvisor)
  • nodeexporter(job=node)
  • kubelet(job=kubelet)
  • kube-state-metrics(job=kube-state-metrics)
  • networkobservabilityRetina(job=networkobservabilityRetina)

컨트롤 플레인 메트릭(미리 보기) 기능을 사용하도록 설정하면 다음 대상이 사용/켜짐됩니다. 컨트롤 플레인 메트릭을 사용하여 전반적인 관찰 가능성을 최대화하고 AKS 클러스터에 대한 운영 우수성을 유지할 수 있습니다. 자세한 내용은 컨트롤 플레인 메트릭(미리 보기)을 참조하세요.

  • controlplane-apiserver(job=controlplane-apiserver)
  • controlplane-etcd(job=controlplane-etcd)

Container Network Observability는 고급 컨테이너 네트워킹 서비스 제품군의 기능으로, 이를 활성화하면 다음 대상이 사용/ON됩니다. 이 기능은 모든 Linux 워크로드와 호환되며, Cilium 또는 비 Cilium 기반 데이터 평면에 대해 Hubble과 원활하게 통합됩니다. 이렇게 하면 컨테이너 네트워킹 요구 사항을 유연하게 수행할 수 있습니다. 자세한 내용은 고급 컨테이너 네트워킹 서비스를 참조하세요.

  • networkobservabilityHubble(job=networkobservabilityHubble)
  • networkobservabilityCilium(job=networkobservabilityCilium)

컨테이너용으로 기본적으로 빌드되고 AKS와 기본적으로 통합되는 클라우드 기반 볼륨 관리, 배포 및 오케스트레이션 서비스인 Azure Container Storage를 사용하도록 설정하는 경우 다음 대상은 사용/ON 입니다. 자세한 내용은 Azure Container Storage를 참조하세요.

  • acstor-capacity-provisioner(job=acstor-capacity-provisioner)
  • acstor-metrics-exporter(job=acstor-metrics-exporter)

기본 대상에서 수집된 메트릭

다음 메트릭은 기본적으로 각 기본 대상에서 수집됩니다. 다른 모든 메트릭은 레이블 다시 지정 규칙을 통해 삭제됩니다.

cadvisor(job=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
  • container_memory_usage_bytes
  • kubernetes_build_info"

kubelet(job=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"

nodexporter(job=node)

  • 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"

kube-state-metrics (job=kube-state-metrics)

  • 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)

controlplane-apiserver (job=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_secondsapiserver_request_sli_duration_seconds는 히스토그램 메트릭으로 높은 카디널리티를 가지며, 모든 계열이 기본적으로 수집되지 않습니다(최소 수집 설정). 평균 대기 시간을 수집하는 데는 합계, 개수만 사용됩니다.

controlplane-etcd (job=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

networkobservabilityHubble (job=networkobservabilityHubble), and networkobservabilityCilium (job=networkobservabilityCilium)
이러한 대상에 의해 수집된 메트릭 목록은 Container Network Observability 메트릭을 참조하세요.

acstor-capacity-provisioner (job=acstor-capacity-provisioner) and acstor-metrics-exporter (job=acstor-metrics-exporter)
이러한 대상에서 수집한 메트릭 목록은 Azure Container Storage 메트릭을 참조하세요.

Windows용으로 스크랩된 기본 대상

다음 Windows 대상은 스크래핑하도록 구성되지만 스크래핑은 기본적으로 사용되지 않습니다(사용 안 함/끄기). 즉, 이러한 대상을 스크래핑하기 위한 스크래핑 작업 구성을 제공할 필요는 없지만 기본적으로 사용하지 않도록 설정/해제되어 있으며, 섹션에서 ama-metrics-settings-configmapdefault-scrape-settings-enabled 을 사용하여 이러한 대상에 대해 스크래핑을 켜거나 사용하도록 설정해야 합니다.

Windows 전용 대시보드에 필요한 메트릭을 긁어내는 Windows에 대해 두 가지 기본 작업을 실행할 수 있습니다.

  • windows-exporter(job=windows-exporter)
  • kube-proxy-windows(job=kube-proxy-windows)

비고

이 작업을 수행하려면 ama-metrics-settings-configmap 구성맵을 적용하거나 업데이트하고 모든 Windows 노드에 windows-exporter을 설치해야 합니다. 자세한 내용은 사용 문서를 참조하세요.

Windows용으로 스크래핑된 지표

Windows 내보내기 및 kube-proxy-windows를 사용하도록 설정하면 다음 메트릭이 수집됩니다.

windows-exporter (job=windows-exporter)

  • 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

kube-proxy-windows (job=kube-proxy-windows)

  • 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

현황판

다음 기본 대시보드는 Azure Monitor 작업 영역을 Azure Managed Grafana 인스턴스에 연결할 때 Prometheus용 Azure Monitor 관리 서비스에서 자동으로 프로비전되고 구성됩니다. 이러한 대시보드의 소스 코드는 이 GitHub 리포지토리에서 찾을 수 있습니다. 아래 대시보드는 Grafana의 폴더 아래에 Managed Prometheus 있는 지정된 Azure Grafana 인스턴스에 프로비전됩니다. 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)

기록 규칙

다음 기본 기록 규칙은 AKS(Azure Kubernetes Service) 클러스터에서 Prometheus 메트릭을 스크래핑하도록 구성할 때 Prometheus용 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 기반 Container Insights를 사용하는 경우 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 지원에는 다음 기록 규칙이 필요합니다. 이러한 규칙은 위의 규칙과 함께 배포되지만 기본적으로 사용하도록 설정되지는 않습니다. Azure Monitor 작업 영역에서 규칙 그룹을 사용하도록 설정하고 사용하지 않도록 설정하기 위한 지침을 따릅니다.

  • 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

다음 단계

Prometheus 메트릭의 스크래핑을 사용자 지정합니다.