카테고리 없음

AWS Prometheus에서 Azure AKS Pod 정보를 수집하는 방법

idea9329 2025. 2. 12. 18:15
반응형

 

AWS에서 운영하는 Prometheus가 Azure AKS (Azure Kubernetes Service) Pod 상태 및 메트릭을 수집하려면, 다음과 같은 방법을 사용해야 합니다.


1. Azure AKS에서 Prometheus Exporter 배포

AWS Prometheus는 Pull 방식을 사용하여 데이터를 가져오기 때문에, AKS 클러스터에서 Exporter를 설치하고 외부 접근이 가능하도록 설정해야 합니다.

1.1 kube-state-metrics 설치 (Pod 상태 정보 수집)

kube-state-metrics는 AKS의 Pod, Deployment, Service 등의 상태 정보를 제공하는 Exporter입니다.

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install kube-state-metrics prometheus-community/kube-state-metrics -n monitoring --create-namespace

1.2 Node Exporter 설치 (노드 및 시스템 메트릭 수집)

AKS의 노드 상태 및 CPU, 메모리, 디스크 정보를 Prometheus가 가져올 수 있도록 Node Exporter를 설치합니다.

helm install node-exporter prometheus-community/prometheus-node-exporter -n monitoring

2. Prometheus Exporter를 외부에서 접근 가능하도록 설정

기본적으로 Azure AKS의 서비스들은 내부 네트워크에서만 접근할 수 있기 때문에, LoadBalancer 또는 Ingress를 사용하여 외부 접근이 가능하도록 설정해야 합니다.

2.1 kube-state-metrics를 LoadBalancer로 노출

아래 설정을 적용하면 kube-state-metrics가 공인 IP를 가지게 되어 AWS Prometheus에서 접근할 수 있습니다.

apiVersion: v1
kind: Service
metadata:
  name: kube-state-metrics
  namespace: monitoring
spec:
  type: LoadBalancer
  ports:
    - port: 8080
      targetPort: 8080
      protocol: TCP
  selector:
    app.kubernetes.io/name: kube-state-metrics

적용 후, 아래 명령어를 실행하여 외부 IP를 확인합니다.

kubectl get svc -n monitoring kube-state-metrics

출력 예시:

NAME                  TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)
kube-state-metrics    LoadBalancer   10.0.20.15     52.172.15.10   8080:32456/TCP

👉 EXTERNAL-IP(52.172.15.10) 값을 사용하여 AWS Prometheus에서 데이터를 수집할 수 있습니다.


3. AWS Prometheus에서 AKS의 Exporter 데이터를 가져오기

AWS에서 운영하는 Prometheus에 Azure AKS의 Prometheus Exporter 정보를 등록해야 합니다.

3.1 Prometheus 설정 파일(prometheus.yml) 수정

AWS Prometheus가 Azure AKS에서 운영 중인 Exporter(kube-state-metrics, Node Exporter) 정보를 가져오도록 scrape_configs를 추가합니다.

scrape_configs:
  - job_name: 'aks-kube-state-metrics'
    metrics_path: /metrics
    static_configs:
      - targets: ['52.172.15.10:8080'] # AKS의 kube-state-metrics IP

  - job_name: 'aks-node-exporter'
    metrics_path: /metrics
    static_configs:
      - targets: ['52.172.16.20:9100'] # AKS의 Node Exporter IP

📌 targets에 들어가는 IP는 kubectl get svc에서 확인한 EXTERNAL-IP로 설정해야 합니다.


4. AWS와 Azure 간 네트워크 연결 설정

4.1 Azure에서 AWS 접근 허용

Azure AKS의 보안 그룹(Security Group) 또는 네트워크 정책을 설정하여 AWS Prometheus에서 Azure AKS로 접근할 수 있도록 허용해야 합니다.

az aks update -g myResourceGroup -n myAKSCluster --api-server-authorized-ip-ranges <AWS_PROMETHEUS_IP>

👉 AWS Prometheus의 공인 IP를 api-server-authorized-ip-ranges에 추가해야 합니다.

4.2 AWS에서 Azure 접근을 위한 VPC Peering 또는 VPN 설정

  • AWS ↔ Azure 간 네트워크 연결이 필요한 경우
    • VPC Peering: AWS와 Azure의 사설 네트워크를 연결
    • Site-to-Site VPN: AWS VPC와 Azure Virtual Network(VNet)를 안전하게 연결

5. Grafana에서 AWS Prometheus 데이터 시각화

AWS Prometheus에서 가져온 데이터를 Grafana에서 시각화할 수 있습니다.

5.1 AWS Prometheus 데이터 소스 추가

  1. Grafana에 로그인
  2. Data Sources  Add Data Source
  3. Prometheus 선택 후, http://<AWS-PROMETHEUS-ENDPOINT>:9090 입력

5.2 PromQL을 사용하여 AKS 메트릭 조회

  • AKS Pod 상태 조회
    kube_pod_status_phase{namespace="default"}
  • AKS 노드 CPU 사용량 조회
    node_cpu_seconds_total
  • AKS Pod별 메모리 사용량 조회
    container_memory_usage_bytes

🚀 최종 정리

 Azure AKS에 Prometheus Exporter(kube-state-metrics, Node Exporter) 배포
 Exporter를 LoadBalancer로 노출하여 AWS에서 접근 가능하도록 설정
 AWS Prometheus에서 prometheus.yml을 수정하여 Azure AKS 데이터를 수집
 AWS ↔ Azure 네트워크 설정(Security Group, VPC Peering, VPN) 필요 시 구성
 Grafana에서 AWS Prometheus 데이터를 시각화

이 방법을 따르면 AWS Prometheus가 Azure AKS의 Pod 및 노드 상태를 실시간으로 모니터링할 수 있습니다. 🚀

반응형