AWS의 EC2에서 운영하는 Prometheus 또는 AWS Managed Prometheus (AMP) 를 사용하여 Azure AKS의 Pod 로그를 직접 수집 및 모니터링하려면 다음과 같은 방법을 사용해야 합니다.
✅ 1. AKS에서 Prometheus Exporter 배포 (메트릭 수집)
AWS에서 Prometheus를 운영하는 경우, Azure AKS에서 Prometheus가 데이터를 가져올 수 있도록 Exporter를 배포해야 합니다.
🔹 1.1 kube-state-metrics 설치 (Pod 상태 정보 수집)
AKS의 Pod, Deployment, Service 등의 상태 정보를 가져오기 위해 kube-state-metrics를 설치합니다.
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, 메모리, 디스크 사용량 등을 수집하기 위해 Node Exporter를 설치합니다.
helm install node-exporter prometheus-community/prometheus-node-exporter -n monitoring
🔹 1.3 Prometheus용 Service 설정 (외부 접근 가능)
기본적으로 AKS 클러스터 내부에서만 접근이 가능하므로, AWS에서 접근할 수 있도록 LoadBalancer 또는 Ingress를 설정해야 합니다.
✅ 방법 1: LoadBalancer를 사용하여 Prometheus Exporter 노출
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에서 사용해야 합니다.
✅ 2. AWS EC2 Prometheus에서 Azure AKS의 메트릭 수집
이제 AWS에서 운영하는 Prometheus가 Azure AKS의 Exporter에서 메트릭을 가져오도록 설정합니다.
🔹 2.1 Prometheus 설정 파일 (prometheus.yml) 수정
EC2에서 운영 중인 Prometheus에서 Azure AKS에 대한 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
👉 위에서 확인한 EXTERNAL-IP를 targets에 추가하여 Azure의 AKS 데이터를 가져올 수 있도록 설정합니다.
🔹 2.2 Prometheus 설정 적용 및 실행
Prometheus를 재시작하여 변경 사항을 반영합니다.
systemctl restart prometheus
또는 Docker 컨테이너에서 실행 중이라면:
docker restart prometheus
✅ 3. AWS Managed Prometheus (AMP)에서 Azure AKS의 메트릭 수집
AWS EC2가 아닌 AWS Managed Prometheus (AMP) 를 사용하는 경우, Remote Write 기능을 사용해야 합니다.
🔹 3.1 AMP에서 Ingestion URL 확인
AWS 콘솔에서 AWS Managed Prometheus (AMP) → Workspaces 로 이동한 뒤 Ingestion URL을 확인합니다.
🔹 3.2 Prometheus 설정에 remote_write 추가
EC2에서 운영하는 Prometheus가 AWS Managed Prometheus(AMP)로 데이터를 보내도록 설정합니다.
remote_write:
- url: "https://aps-workspaces.<AWS_REGION>.amazonaws.com/api/v1/remote_write"
sigv4:
region: "<AWS_REGION>"
queue_config:
max_samples_per_send: 1000
max_shards: 200
capacity: 2500
👉 <AWS_REGION> 을 실제 사용하는 AWS 리전으로 변경해야 합니다.
Prometheus를 다시 실행하면 AWS Managed Prometheus(AMP)로 데이터가 전송됩니다.
✅ 4. AWS Prometheus에서 Azure AKS 로그 수집
Pod 로그까지 모니터링하려면 Loki 또는 CloudWatch를 활용해야 합니다.
🔹 4.1 Azure AKS의 Pod 로그를 AWS CloudWatch로 전송
AKS에서 Pod 로그를 AWS CloudWatch로 전송하면, AWS에서 분석 및 모니터링이 가능합니다.
1️⃣ AWS CloudWatch Logs Agent를 Azure AKS에 설치
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-cloudwatch-agent/main/cloudwatch-agent.yaml
👉 CloudWatch 에이전트를 설치하면 Pod 로그가 AWS CloudWatch에 저장됩니다.
2️⃣ CloudWatch Logs에서 Loki로 로그 전달
AWS에서 운영하는 Grafana Loki를 사용하여 CloudWatch의 로그를 Prometheus와 연동하여 조회할 수 있습니다.
loki:
sources:
aws_cloudwatch:
log_group_name: "/aws/eks/aks-cluster-name"
✅ 5. Grafana에서 AWS Prometheus & AKS Pod 데이터 시각화
🔹 5.1 Grafana에서 AWS Prometheus 데이터 소스 추가
- Grafana에 로그인
- Data Sources → Add Data Source
- Prometheus 선택 후, 다음 값 입력
- URL: http://<AWS_EC2_PROMETHEUS_IP>:9090
- 또는 https://aps-workspaces.<AWS_REGION>.amazonaws.com/api/v1/query
🔹 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 EC2 Prometheus 또는 AWS AMP에서 prometheus.yml을 수정하여 Azure AKS 데이터를 수집
✅ AWS CloudWatch로 Azure AKS Pod 로그 전송 후 Loki와 연동하여 로그 모니터링
✅ Grafana에서 AWS Prometheus 및 CloudWatch Logs 데이터를 시각화
이 방법을 사용하면 AWS에서 Azure AKS Pod 상태 및 로그를 실시간으로 모니터링할 수 있습니다. 🚀