Amazon EKS 및 Kubernetes 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치
이 단원에서는 Amazon EKS 또는 Kubernetes를 실행 중인 클러스터에서 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설정하는 방법을 설명합니다. 이렇게 에이전트를 설정하면 에이전트가 해당 클러스터에서 실행 중인 다음 워크로드에 대한 지표를 자동으로 스크레이프하고 가져옵니다.
-
AWS App Mesh
-
NGINX
-
Memcached
-
Java/JMX
-
HAProxy
-
Fluent Bit
추가 Prometheus 워크로드 및 소스를 스크레이프하고 가져오도록 에이전트를 구성할 수도 있습니다.
다음 단계에 따라 Prometheus 지표 수집용 CloudWatch 에이전트를 설치하기 전에 먼저, Amazon EKS에서 클러스터가 실행 중이거나 Amazon EC2 인스턴스에서 Kubernetes 클러스터가 실행 중이어야 합니다.
VPC 보안 그룹 요구 사항
Prometheus 워크로드의 보안 그룹 수신 규칙은 프라이빗 IP로 Prometheus 지표를 스크레이프하기 위해 CloudWatch 에이전트에 대한 Prometheus 포트를 열어야 합니다.
CloudWatch 에이전트의 보안 그룹 송신 규칙은 CloudWatch 에이전트가 프라이빗 IP로 Prometheus 워크로드의 포트에 연결할 수 있도록 허용해야 합니다.
주제
Amazon EKS 및 Kubernetes 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치
이 단원에서는 Amazon EKS 또는 Kubernetes를 실행 중인 클러스터에서 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설정하는 방법을 설명합니다. 이렇게 에이전트를 설정하면 에이전트가 해당 클러스터에서 실행 중인 다음 워크로드에 대한 지표를 자동으로 스크레이프하고 가져옵니다.
-
AWS App Mesh
-
NGINX
-
Memcached
-
Java/JMX
-
HAProxy
-
Fluent Bit
추가 Prometheus 워크로드 및 소스를 스크레이프하고 가져오도록 에이전트를 구성할 수도 있습니다.
다음 단계에 따라 Prometheus 지표 수집용 CloudWatch 에이전트를 설치하기 전에 먼저, Amazon EKS에서 클러스터가 실행 중이거나 Amazon EC2 인스턴스에서 Kubernetes 클러스터가 실행 중이어야 합니다.
VPC 보안 그룹 요구 사항
Prometheus 워크로드의 보안 그룹 수신 규칙은 프라이빗 IP로 Prometheus 지표를 스크레이프하기 위해 CloudWatch 에이전트에 대한 Prometheus 포트를 열어야 합니다.
CloudWatch 에이전트의 보안 그룹 송신 규칙은 CloudWatch 에이전트가 프라이빗 IP로 Prometheus 워크로드의 포트에 연결할 수 있도록 허용해야 합니다.
IAM 역할 설정
첫 번째 단계는 클러스터에 필요한 IAM 역할을 설정하는 것입니다. 다음과 같은 두 가지 방법으로 설정할 수 있습니다.
-
‘서비스 역할’이라고도 하는 서비스 계정의 IAM 역할을 설정합니다. 이 방법은 EC2 시작 유형과 Fargate 시작 유형 모두에 적용됩니다.
-
클러스터에 사용되는 IAM 역할에 IAM 정책을 추가합니다. 이는 EC2 시작 유형에만 적용됩니다.
서비스 역할 설정(EC2 시작 유형 및 Fargate 시작 유형)
서비스 역할을 설정하려면 다음 명령을 입력합니다. MyCluster
를 클러스터 이름으로 바꿉니다.
eksctl create iamserviceaccount \ --name cwagent-prometheus \ --namespace amazon-cloudwatch \ --cluster
MyCluster
\ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
클러스터의 IAM 역할에 정책 추가(EC2 시작 유형만 해당)
Prometheus 지원을 위해 클러스터에서 IAM 정책을 설정하려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창에서 Instances(인스턴스)를 선택합니다.
-
클러스터에 대한 IAM 역할 이름의 접두사를 찾아야 합니다. 이렇게 하려면 클러스터에 있는 인스턴스 이름 옆의 확인란을 선택하고 작업, 인스턴스 설정, IAM 역할 연결/바꾸기를 선택합니다. 그런 다음,
eksctl-dev303-workshop-nodegroup
과 같은 IAM 역할의 접두사를 복사합니다. https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 역할을 선택합니다.
-
검색 상자를 사용하여 이 절차의 앞부분에서 복사한 접두사를 찾은 다음 해당 역할을 선택합니다.
-
정책 연결을 선택합니다.
-
검색 상자를 사용하여 CloudWatchAgentServerPolicy를 찾습니다. CloudWatchAgentServerPolicy 옆의 확인란을 선택하고 정책 연결을 선택합니다.
Prometheus 지표를 수집하기 위한 CloudWatch 에이전트 설치
지표를 수집하려면 클러스터에 CloudWatch 에이전트를 설치해야 합니다. Amazon EKS 클러스터와 Kubernetes 클러스터의 에이전트 설치 방법은 다릅니다.
Prometheus가 지원되는 CloudWatch 에이전트의 이전 버전 삭제
클러스터에 Prometheus가 지원되는 CloudWatch 에이전트 버전을 이미 설치한 경우 다음 명령을 입력하여 해당 버전을 삭제해야 합니다. 이는 Prometheus가 지원되는 이전 버전의 에이전트에만 필요합니다. Prometheus가 지원되지 않는 Container Insights를 사용하는 CloudWatch 에이전트는 삭제할 필요가 없습니다.
kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
EC2 시작 유형의 Amazon EKS 클러스터에 CloudWatch 에이전트 설치
Amazon EKS 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면 다음 단계를 따릅니다.
Amazon EKS 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면
-
다음 명령을 입력하여
amazon-cloudwatch
네임스페이스가 이미 생성되었는지 확인합니다.kubectl get namespace
-
amazon-cloudwatch
가 결과에 표시되지 않으면 다음 명령을 입력하여 생성합니다.kubectl create namespace amazon-cloudwatch
-
기본 구성으로 에이전트를 배포하고 에이전트가 설치된 AWS 리전으로 데이터를 전송하도록 하려면 다음 명령을 입력합니다.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
에이전트가 대신 다른 리전으로 데이터를 전송하도록 하려면 다음 단계를 따르세요.
-
다음 명령을 입력하여 에이전트에 대한 YAML 파일을 다운로드합니다.
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
-
텍스트 편집기로 파일을 열고 파일의
cwagentconfig.json
블록을 검색합니다. -
강조 표시된 선을 추가하여 원하는 리전을 지정합니다.
cwagentconfig.json: | {
"agent": { "region": "us-east-2" },
"logs": { ... -
파일을 저장하고, 업데이트된 파일을 사용하여 에이전트를 배포합니다.
kubectl apply -f prometheus-eks.yaml
-
Fargate 시작 유형의 Amazon EKS 클러스터에 CloudWatch 에이전트 설치
Fargate 시작 유형의 Amazon EKS 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면 다음 단계를 따릅니다.
Fargate 시작 유형의 Amazon EKS 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면
-
다음 명령을 입력하여 CloudWatch 에이전트의 Fargate 프로파일을 생성하여 클러스터 내에서 실행될 수 있도록 합니다.
MyCluster
를 클러스터 이름으로 바꿉니다.eksctl create fargateprofile --cluster
MyCluster
\ --name amazon-cloudwatch \ --namespace amazon-cloudwatch -
CloudWatch 에이전트를 설치하려면 다음 명령을 입력합니다.
MyCluster
를 클러스터 이름으로 바꿉니다. 이 이름은 에이전트가 수집한 로그 이벤트를 저장하는 로그 그룹 이름에 사용되며, 에이전트에서 수집한 지표에 대한 측정기준으로도 사용됩니다.region
을 지표를 전송할 리전의 이름으로 바꿉니다. 예:us-west-1
.curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml | sed "s/{{cluster_name}}/
MyCluster
/;s/{{region_name}}/region
/" | kubectl apply -f -
Kubernetes 클러스터에 CloudWatch 에이전트 설치
Kubernetes를 실행하는 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면 다음 명령을 입력합니다.
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" | kubectl apply -f -
MyCluster
를 클러스터 이름으로 바꿉니다. 이 이름은 에이전트가 수집한 로그 이벤트를 저장하는 로그 그룹 이름에 사용되며, 에이전트에서 수집한 지표에 대한 측정기준으로도 사용됩니다.
리전
을 지표를 전송할 AWS 리전의 이름으로 바꿉니다. 예: us-west-1
.
에이전트가 실행 중인지 확인
Amazon EKS 클러스터와 Kubernetes 클러스터 모두에서 다음 명령을 입력하여 에이전트가 실행 중인지 확인할 수 있습니다.
kubectl get pod -l "app=cwagent-prometheus" -n amazon-cloudwatch
결과에 Running
상태의 단일 CloudWatch 에이전트 포드가 포함되어 있다면 에이전트가 실행 중이며 Prometheus 지표를 수집하고 있는 것입니다. 기본적으로 CloudWatch 에이전트는 1분마다 App Mesh, NGINX, Memcached, Java/JMX, HAProxy에 대한 지표를 수집합니다. 지표에 대한 자세한 내용은 CloudWatch 에이전트가 수집하는 Prometheus 지표 단원을 참조하세요. CloudWatch에서 Prometheus 지표를 확인하는 방법에 대한 지침은 Prometheus 지표 보기 단원을 참조하세요.
또한 다른 Prometheus Exporter에서 지표를 수집하도록 CloudWatch 에이전트를 구성할 수도 있습니다. 자세한 내용은 추가 Prometheus 소스 스크레이핑 및 해당 지표 가져오기 단원을 참조하십시오.