Azure Monitor의 기본 Prometheus 메트릭 구성
이 문서에서는 AKS 클러스터에 대한 AKS(Azure Kubernetes Service) 클러스터에서 스크래핑되도록 Prometheus 메트릭을 구성할 때 기본 대상, 대시보드 및 기록 규칙을 나열합니다.
최소 수집 프로필
Minimal ingestion profile
은 기본 대시보드, 기본 기록 규칙 및 기본 경고에서 사용되는 메트릭만 수집되므로 메트릭 수집 볼륨을 줄이는 데 도움이 되는 설정입니다. 추가 기능 기반 수집의 경우 Minimal ingestion profile
설정은 기본적으로 사용하도록 설정됩니다. 아래에 지정된 대로 더 많은 메트릭을 수집할 수 있도록 수집 기능을 수정할 수 있습니다.
스크래핑 빈도
모든 기본 대상 및 스크래핑에 대한 기본 스크래핑 빈도는 30초입니다.
기본적으로 스크랩된 대상
메트릭 추가 기능은 기본적으로 이러한 대상을 자동으로 스크랩하므로 다음 대상은 기본적으로 사용/ON으로 설정됩니다. 즉, 이러한 대상을 스크랩하기 위한 스크래핑 작업 구성을 제공할 필요가 없습니다.
cadvisor
(job=cadvisor
)nodeexporter
(job=node
)kubelet
(job=kubelet
)kube-state-metrics
(job=kube-state-metrics
)networkobservabilityRetina
(job=networkobservabilityRetina
)
컨트롤 플레인 메트릭(미리 보기) 기능을 사용하도록 설정하면 다음 대상이 사용/ON 됩니다. 컨트롤 플레인 메트릭을 사용하여 전반적인 관찰 가능성을 최대화하고 AKS 클러스터에 대한 운영 우수성을 유지할 수 있습니다. 자세한 내용은 컨트롤 플레인 메트릭(미리 보기)을 참조하세요.
controlplane-apiserver
(job=controlplane-apiserver
)controlplane-etcd
(job=controlplane-etcd
)
고급 컨테이너 네트워킹 서비스 제품군의 기능이며 Cilium 또는 비 Cilium 기반 데이터 평면 모두에 대해 Hubble과 원활하게 통합되는 모든 Linux 워크로드와 호환되는 Container Network Observability를 사용하도록 설정하는 경우 다음 대상 은 사용/ON 입니다. 이렇게 하면 컨테이너 네트워킹 요구 사항을 유연하게 수행할 수 있습니다. 자세한 내용은 고급 컨테이너 네트워킹 서비스를 참조 하세요.
networkobservabilityHubble
(job=networkobservabilityHubble
)networkobservabilityCilium
(job=networkobservabilityCilium
)
기본 대상에서 수집된 메트릭
다음 메트릭은 기본적으로 각 기본 대상에서 수집됩니다. 다른 모든 메트릭은 레이블 다시 지정 규칙을 통해 삭제됩니다.
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_seconds
kubelet_runtime_operations_duration_seconds_bucket
kubelet_runtime_operations_duration_seconds_sum
kubelet_runtime_operations_duration_seconds_count
kubelet_pod_start_duration_seconds
kubelet_pod_start_duration_seconds_bucket
kubelet_pod_start_duration_seconds_sum
kubelet_pod_start_duration_seconds_count
kubelet_pod_worker_duration_seconds
kubelet_pod_worker_duration_seconds_bucket
kubelet_pod_worker_duration_seconds_sum
kubelet_pod_worker_duration_seconds_count
storage_operation_duration_seconds
storage_operation_duration_seconds_bucket
storage_operation_duration_seconds_sum
storage_operation_duration_seconds_count
storage_operation_errors_total
kubelet_cgroup_manager_duration_seconds
kubelet_cgroup_manager_duration_seconds_bucket
kubelet_cgroup_manager_duration_seconds_sum
kubelet_cgroup_manager_duration_seconds_count
kubelet_pleg_relist_duration_seconds
kubelet_pleg_relist_duration_seconds_bucket
kubelet_pleg_relist_duration_sum
kubelet_pleg_relist_duration_seconds_count
kubelet_pleg_relist_interval_seconds
kubelet_pleg_relist_interval_seconds_bucket
kubelet_pleg_relist_interval_seconds_sum
kubelet_pleg_relist_interval_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
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
apiserver_request_sli_duration_seconds_count
apiserver_request_sli_duration_seconds_sum
process_start_time_seconds
apiserver_request_duration_seconds_bucket
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
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) 및 networkobservabilityCilium(job=networkobservabilityCilium)
이러한 대상에 의해 수집된 메트릭 목록은 Container Network Observability 메트릭을 참조 하세요.
Windows용으로 스크랩된 기본 대상
다음 Windows 대상은 스크랩하도록 구성되지만 기본적으로 스크랩이 사용되지 않습니다(사용 안 함/OFF). 즉, 이러한 대상을 스크랩하기 위한 스크랩 작업 구성을 제공할 필요는 없지만 기본적으로 사용 안 함/OFF 상태이므로 default-scrape-settings-enabled
섹션 아래의 ama-metrics-settings-configmap을 사용하여 이러한 대상에 대한 스크랩을 켜거나 사용하도록 설정해야 합니다.
Windows에 특정한 대시보드에 필요한 메트릭을 스크래핑하는 Windows에 대해 두 가지 기본 작업을 실행할 수 있습니다.
windows-exporter
(job=windows-exporter
)kube-proxy-windows
(job=kube-proxy-windows
)
참고 항목
이렇게 하려면 ama-metrics-settings-configmap
configmap을 적용하거나 업데이트하고 모든 Windows 노드에 windows-exporter
를 설치해야 합니다. 자세한 내용은 사용 문서를 참조하세요.
Windows용으로 스크래핑된 메트릭
windows-exporter 및 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 메트릭을 구성할 때 Azure Monitor Prometheus용 관리 서비스에 의해 자동으로 구성됩니다. 이러한 기록 규칙에 대한 소스 코드는 이 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 기반 컨테이너 인사이트를 사용하면 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