CloudWatch 에이전트를 사용하는 일반적인 시나리오 - Amazon CloudWatch

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

CloudWatch 에이전트를 사용하는 일반적인 시나리오

다음 단원에서는 CloudWatch 에이전트를 사용할 때의 몇 가지 일반적인 구성 및 사용자 지정 작업을 완료하는 방법을 설명합니다.

다른 사용자로 CloudWatch 에이전트 실행

Linux 서버에서 CloudWatch는 기본적으로 루트 사용자로 실행됩니다. 다른 사용자로 에이전트를 실행하려면 CloudWatch 에이전트 구성 파일의 agent 섹션에 있는 run_as_user 파라미터를 사용합니다. 이 옵션은 Linux 서버에서만 사용할 수 있습니다.

이미 루트 사용자로 에이전트를 실행 중인데 다른 사용자를 사용하도록 변경하려면 다음 절차 중 하나를 사용하십시오.

Linux를 실행하는 EC2 인스턴스에서 다른 사용자로 CloudWatch 에이전트를 실행하려면

  1. 새 CloudWatch 에이전트 패키지를 다운로드하여 설치합니다. 자세한 정보는 S3 다운로드 링크를 사용하여 CloudWatch 에이전트 패키지 다운로드 단원을 참조하십시오.

  2. 새 Linux 사용자를 생성하거나 RPM 또는 DEB 파일이 생성한 기본 사용자 cwagent를 사용합니다.

  3. 다음 중 한 가지 방법으로 이 사용자에 대한 자격 증명을 제공합니다.

    • /home/root/.aws/credentials 파일이 있으면 CloudWatch 에이전트를 실행하는 데 사용할 사용자의 자격 증명 파일을 생성해야 합니다. 이 자격 증명 파일은 /home/username/.aws/credentials. 그런 다음 shared_credential_file 매개변수 common-config.toml 를 자격 증명 파일 의 경로 이름에 연결합니다. 자세한 정보는 (선택 사항) 프록시 또는 리전 정보에 대한 일반 구성 수정 단원을 참조하십시오.

    • /home/root/.aws/credentials 파일이 없으면 다음 중 하나를 수행할 수 있습니다.

      • CloudWatch 에이전트를 실행하는 데 사용할 사용자의 자격 증명 파일을 생성합니다. 이 자격 증명 파일은 /home/username/.aws/credentials. 그런 다음 shared_credential_file 매개변수 common-config.toml 를 자격 증명 파일 의 경로 이름에 연결합니다. 자세한 정보는 (선택 사항) 프록시 또는 리전 정보에 대한 일반 구성 수정 단원을 참조하십시오.

      • 자격 증명 파일을 만드는 대신 인스턴스에 IAM 역할을 연결합니다. 에이전트는 이 역할을 자격 증명 공급자로 사용합니다.

  4. CloudWatch 에이전트 구성 파일에서 agent 섹션에 다음 행을 추가합니다.

    "run_as_user": "username"

    필요에 따라 구성 파일을 추가로 수정합니다. 자세한 내용은 CloudWatch 에이전트 구성 파일 생성 단원을 참조하십시오.

  5. 사용자에게 필요한 권한을 부여합니다. 사용자는 수집할 로그 파일에 대한 읽기(r) 권한이 있어야 하며 로그 파일 경로의 모든 디렉터리에 대해 실행(x) 권한이 있어야 합니다.

  6. 방금 수정한 구성 파일로 에이전트를 시작합니다.

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path

Linux를 실행하는 온프레미스 서버에서 다른 사용자로 CloudWatch 에이전트를 실행하려면

  1. 새 CloudWatch 에이전트 패키지를 다운로드하여 설치합니다. 자세한 정보는 S3 다운로드 링크를 사용하여 CloudWatch 에이전트 패키지 다운로드 단원을 참조하십시오.

  2. 새 Linux 사용자를 생성하거나 RPM 또는 DEB 파일이 생성한 기본 사용자 cwagent를 사용합니다.

  3. 이 사용자의 자격 증명을 사용자가 액세스할 수 있는 경로(예: /home/username/.aws/credentials)에 저장합니다.

  4. common-config.toml에 있는 shared_credential_file 파라미터 값을 자격 증명 파일의 경로 이름으로 설정합니다. 자세한 정보는 (선택 사항) 프록시 또는 리전 정보에 대한 일반 구성 수정 단원을 참조하십시오.

  5. CloudWatch 에이전트 구성 파일에서 agent 섹션에 다음 행을 추가합니다.

    "run_as_user": "username"

    필요에 따라 구성 파일을 추가로 수정합니다. 자세한 내용은 CloudWatch 에이전트 구성 파일 생성 단원을 참조하십시오.

  6. 사용자에게 필요한 권한을 부여합니다. 사용자는 수집할 로그 파일에 대한 읽기(r) 권한이 있어야 하며 로그 파일 경로의 모든 디렉터리에 대해 실행(x) 권한이 있어야 합니다.

  7. 방금 수정한 구성 파일로 에이전트를 시작합니다.

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path

CloudWatch 에이전트에 의해 수집되는 지표에 사용자 지정 차원 추가

에이전트에 의해 수집되는 지표에 태그와 같은 사용자 지정 차원을 추가하려면 해당 지표를 나열하는 에이전트 구성 파일의 섹션에 append_dimensions 필드를 추가하십시오.

예를 들어, 구성 파일의 다음 예제 섹션에서는 Prod의 값이 포함된 stackName라는 사용자 지정 차원을 에이전트에 의해 수집된 cpudisk 지표에 추가합니다.

"cpu":{ "resources":[ "*" ], "measurement":[ "cpu_usage_guest", "cpu_usage_nice", "cpu_usage_idle" ], "totalcpu":false, "append_dimensions":{ "stackName":"Prod" } }, "disk":{ "resources":[ "/", "/tmp" ], "measurement":[ "total", "used" ], "append_dimensions":{ "stackName":"Prod" } }

에이전트 구성 파일을 변경할 때마다 에이전트를 다시 시작하여 변경 사항을 적용해야 합니다.

여러 CloudWatch 에이전트 구성 파일

여러 개의 구성 파일을 사용하도록 CloudWatch 에이전트를 설정할 수 있습니다. 예를 들어 인프라의 모든 서버에서 항상 수집하려는 일련의 지표와 로그를 수집하는 공통 구성 파일을 사용할 수 있습니다. 그런 다음 특정 애플리케이션이나 특정 상황에서 지표를 수집하는 추가 구성 파일을 사용할 수 있습니다.

이렇게 설정하려면 먼저 사용하려는 구성 파일을 생성합니다. 동일한 서버에서 함께 사용할 구성 파일은 파일 이름이 서로 달라야 합니다. 구성 파일을 서버나 Parameter Store에 저장할 수 있습니다.

fetch-config 옵션을 사용하여 CloudWatch 에이전트를 시작하고 첫 번째 구성 파일을 지정합니다. 실행 중인 에이전트에 두 번째 구성 파일을 추가하려면, 동일한 명령에 append-config 옵션을 사용합니다. 구성 파일에 나열된 모든 지표와 로그가 수집됩니다. 다음 Linux 명령 예제는 파일로 저장된 구성을 사용하는 이 시나리오를 보여줍니다. 첫 행은 infrastructure.json 구성 파일을 사용하여 에이전트를 시작하고, 둘째 행은 app.json 구성 파일을 추가합니다.

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/tmp/infrastructure.json
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -m ec2 -s -c file:/tmp/app.json

다음 예제 구성 파일은 이 기능의 사용을 보여줍니다. 첫 번째 구성 파일은 인프라의 모든 서버에 사용되며, 두 번째 구성 파일은 특정 애플리케이션의 로그만 수집하며, 해당 애플리케이션을 실행하는 서버에 추가됩니다.

infrastructure.json

{ "metrics": { "metrics_collected": { "cpu": { "resources": [ "*" ], "measurement": [ "usage_active" ], "totalcpu": true }, "mem": { "measurement": [ "used_percent" ] } } }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "log_group_name": "amazon-cloudwatch-agent.log" }, { "file_path": "/var/log/messages", "log_group_name": "/var/log/messages" } ] } } } }

app.json

{ "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/app/app.log*", "log_group_name": "/app/app.log" } ] } } }

구성에 추가된 모든 구성 파일은 파일 이름이 서로 달라야 하며 초기 구성 파일의 이름과도 달라야 합니다. 파일 이름이 동일한 구성 파일이 있는 append-config를 에이전트에서 이미 사용 중인 구성 파일로 사용할 경우 추가 명령은 첫 번째 구성 파일에 추가되는 것이 아니라 해당 파일의 정보를 덮어씁니다. 파일 이름이 동일한 두 개의 구성 파일이 서로 다른 파일 경로에 있는 경우에도 마찬가지입니다.

앞의 예는 두 개의 구성 파일을 사용하는 것을 보여주지만, 에이전트 구성에 추가할 수 있는 구성 파일의 수는 제한되지 않습니다. 서버에 있는 구성 파일과 Parameter Store에 있는 구성을 함께 사용할 수도 있습니다.

CloudWatch 에이전트에 의해 수집되는 지표 집계 또는 롤업

에이전트에 의해 수집되는 지표를 집계하거나 롤업하려면 에이전트 구성 파일의 해당 지표에 대한 섹션에 aggregation_dimensions 필드를 추가하십시오.

예를 들어, 다음 구성 파일 조각은 AutoScalingGroupName 차원에서 지표를 롤업합니다. 각 Auto Scaling 그룹의 모든 인스턴스의 지표가 집계되고 전체적으로 표시될 수 있습니다.

"metrics": { "cpu":{...} "disk":{...} "aggregation_dimensions" : [["AutoScalingGroupName"]] }

Auto Scaling 그룹 이름에서 롤업할 뿐 아니라 InstanceIdInstanceType 차원 각각의 조합을 따라서도 롤업하려는 경우 다음을 추가합니다.

"metrics": { "cpu":{...} "disk":{...} "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"]] }

대신 지표를 하나의 모음에 롤업하려면 []를 사용합니다.

"metrics": { "cpu":{...} "disk":{...} "aggregation_dimensions" : [[]] }

에이전트 구성 파일을 변경할 때마다 에이전트를 다시 시작하여 변경 사항을 적용해야 합니다.

CloudWatch 에이전트로 고분해능 지표 수집

metrics_collection_interval 필드는 수집되는 지표의 시간 간격을 초 단위로 지정합니다. 이 필드에 60 미만의 값을 지정하면 지표가 고분해능 지표로 수집됩니다.

예를 들어, 모든 지표가 고해상도 지표이며 10초마다 수집되어야 하는 경우 agent 섹션의 metrics_collection_interval에서 글로벌 지표 수집 간격 값으로 10을 지정합니다.

"agent": { "metrics_collection_interval": 10 }

또는 다음 예에서는 cpu 지표는 1초마다 수집되도록 설정하고 다른 모든 지표는 1분마다 수집되도록 설정합니다.

"agent":{ "metrics_collection_interval": 60 }, "metrics":{ "metrics_collected":{ "cpu":{ "resources":[ "*" ], "measurement":[ "cpu_usage_guest" ], "totalcpu":false, "metrics_collection_interval": 1 }, "disk":{ "resources":[ "/", "/tmp" ], "measurement":[ "total", "used" ] } } }

에이전트 구성 파일을 변경할 때마다 에이전트를 다시 시작하여 변경 사항을 적용해야 합니다.

다른 계정에 지표 및 로그 전송

CloudWatch 에이전트가 지표와 로그 중 하나 또는 둘 다 다른 계정에 전송하도록 하려면 전송 서버의 에이전트 구성 파일에 role_arn 파라미터를 지정하십시오. role_arn 값은 데이터를 대상 계정에 전송할 때 에이전트가 사용하는 대상 계정의 IAM 역할을 지정합니다. 지표 또는 로그를 대상 계정에 전달할 때는 이 역할을 통해 전송 계정이 대상 계정의 해당 역할을 맡을 수 있습니다.

또한 에이전트 구성 파일에 별도의 role_arn 문자열 두 개를 지정할 수 있는데, 하나는 지표를 보낼 때 사용할 문자열이고 다른 하나는 로그를 보낼 때 사용할 문자열입니다.

구성 파일의 agent 섹션 부분에 대한 다음의 예에서는 지표와 로그를 다른 계정에 보낼 때 CrossAccountAgentRole을 사용하도록 에이전트를 설정합니다.

{ "agent": { "credentials": { "role_arn": "arn:aws:iam::123456789012:role/CrossAccountAgentRole" } }, ..... }

또는 다음의 예에서는 지표와 로그를 전송하기 위해 사용할 전송 계정에 다른 역할을 설정합니다.

"metrics": { "credentials": { "role_arn": "RoleToSendMetrics" }, "metrics_collected": {....
"logs": { "credentials": { "role_arn": "RoleToSendLogs" }, ....

필요한 정책

에이전트 구성 파일에 role_arn를 지정할 때는 전송 및 대상 계정의 IAM 역할에 특정 정책도 포함되는지 확인해야 합니다. 전송 및 대상 계정의 역할은 모두 다음과 같아야 합니다. CloudWatchAgentServerPolicy. 이 정책을 역할에 할당하는 방법에 대한 자세한 내용은 다음을 참조하십시오. Amazon EC2 인스턴스에서 CloudWatch 에이전트와 함께 사용할 IAM 역할 생성.

전송 계정의 역할은 다음의 정책을 포함해야 합니다. 역할을 편집할 때 IAM 콘솔의 권한 탭에 이 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::target-account-ID:role/agent-role-in-target-account" ] } ] }

대상 계정의 역할에는 전송 계정에서 사용하는 IAM 역할을 인식하도록 다음 정책이 포함되어야 합니다. 역할을 편집할 때 IAM 콘솔의 신뢰 관계 탭에 이 정책을 추가합니다. 이 정책을 추가하는 대상 계정의 역할은 CloudWatch 에이전트와 함께 사용하기 위한 IAM 역할 및 사용자 생성에서 생성한 역할입니다. 이 역할은 전송 계정에서 사용한 정책의 agent-role-in-target-account에 지정된 역할입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::sending-account-ID:role/role-in-sender-account" ] }, "Action": "sts:AssumeRole" } ] }

통합 CloudWatch 에이전트와 이전 CloudWatch Logs 에이전트 간 타임스탬프 차이

CloudWatch 에이전트는 이전 CloudWatch Logs 에이전트와 비교할 때 타임스탬프 형식에 대한 다른 기호 집합을 지원합니다. 이러한 차이는 다음 표에 표시됩니다.

두 에이전트에서 지원하는 기호 통합 CloudWatch 에이전트에서만 지원하는 기호 기존 CloudWatch Logs 에이전트에서만 지원하는 기호

%A, %a, %b, %B, %d, %f, %H, %l, %m, %M, %p, %S, %y, %Y, %Z, %z

%-d, %-l, %-m, %-M, %-S

%c,%j, %U, %W, %w

새 CloudWatch 에이전트, 참조 CloudWatch 에이전트 구성 파일: 로그 섹션 에서 Amazon CloudWatch 사용 설명서. 에서 지원하는 기호에 대한 자세한 내용은 CloudWatch Logs 에이전트, 참조 에이전트 구성 파일 에서 Amazon CloudWatch Logs User Guide.