다음을 통해 공유


Azure Monitor에서 대규모로 Prometheus 메트릭 스크랩

Prometheus용 Azure Monitor 관리형 서비스에 대해 대규모로 메트릭을 수집할 때 예상할 수 있는 성능에 대한 지침입니다.

CPU 및 메모리

CPU 및 메모리 사용량은 각 샘플의 바이트 수 및 스크랩된 샘플 수와 상관 관계가 있습니다. 이러한 벤치마크는 스크랩 기본 대상, 스크랩된 사용자 지정 메트릭의 볼륨, 노드, Pod 및 컨테이너 수를 기반으로 합니다. 이러한 숫자는 메트릭당 시간 및 바이트 수에 따라 사용량이 크게 달라질 수 있으므로 참조로 사용됩니다.

Pod당 상한 볼륨 제한은 현재 샘플당 바이트 수에 따라 분당 약 300~350만 개의 샘플입니다. 이 제한 사항은 나중에 분할된 데이터베이스가 추가될 때 해결됩니다.

에이전트는 하나의 복제본과 메트릭을 스크래핑하기 위한 DaemonSet가 있는 배포로 구성됩니다. DaemonSet는 cAdvisor, kubelet 및 노드 내보내기 도구와 같은 노드 수준 대상을 스크랩합니다. 정적 구성을 사용하여 노드 수준에서 사용자 지정 대상을 스크래핑하도록 구성할 수도 있습니다. 복제본 세트는 서비스 검색을 활용하는 kube-state-metrics 또는 사용자 지정 스크랩 작업과 같은 다른 모든 항목을 스크래핑합니다.

복제본에 대한 소형 클러스터와 대형 클러스터 간 비교

대상 스크래핑 보낸 샘플/분 노드 수 Pod 개수 Prometheus-Collector CPU 사용량(코어) Prometheus-Collector 메모리 사용량(바이트)
기본 대상 11,344 3 40 12.9mc 148Mi
기본 대상 260,000 340 13000 1.10c 1.70GB
기본 대상
+ 사용자 지정 대상
356만 340 13000 5.13c 9.52GB

DaemonSet에 대한 소형 클러스터와 대형 클러스터 간 비교

대상 스크래핑 총 보낸 샘플/분 보낸 샘플/분/Pod 노드 수 Pod 개수 총 Prometheus-Collector CPU 사용량(코어) 총 Prometheus-Collector 메모리 사용량(바이트) Prometheus-Collector CPU 사용량/Pod(코어) Prometheus-Collector 메모리 사용량/Pod(바이트)
기본 대상 9,858 3,327 3 40 41.9mc 581Mi 14.7mc 189Mi
기본 대상 230만 14,400 340 13000 805mc 305.34GB 2.36mc 898Mi

더 많은 사용자 지정 메트릭의 경우 단일 Pod는 사용자 지정 메트릭의 볼륨에 따라 복제본 Pod와 동일하게 동작합니다.

더 많은 리소스가 있는 노드 풀에서 ama-metrics 복제본 Pod 예약

Pod당 많은 양의 메트릭을 사용하려면 필요한 CPU 및 메모리 사용량을 처리할 수 있을 만큼 큰 노드가 필요합니다. 리소스가 충분한 노드 또는 노드 풀에서 ama-metrics 복제본 Pod가 예약되지 않으면 OOMKilled를 계속 가져오고 CrashLoopBackoff로 이동될 수 있습니다. 이 문제를 해결하기 위해 클러스터에 더 높은 리소스(시스템 노드 풀 내)가 있는 노드 또는 노드 풀이 있고 해당 노드에서 복제본을 예약하려는 경우, 노드에 azuremonitor/metrics.replica.preferred=true 레이블을 추가할 수 있으며 복제본 Pod는 이 노드에서 예약됩니다. 또한 필요한 경우 더 큰 노드를 사용하여 추가 시스템 풀을 만들 수 있으며 해당 노드 또는 노드 풀에 동일한 레이블을 추가할 수 있습니다. 또한 레이블을 풀의 모든 노드에 적용할 수 있는 경우 동일한 풀의 새 노드도 예약에 사용할 수 있도록 레이블을 노드가 아닌 노드 풀에 추가하는 것이 좋습니다.

kubectl label nodes <node-name> azuremonitor/metrics.replica.preferred="true"

다음 단계