[AWS] SSM으로 CloudWatch Agent 설치

1. System Manager를 사용하여 CloudWatch Agent 설치

AWS System Manager(SSM)는 관리형 노드들을 제어하기 위해 사용하는 서비스이다.

이 글에서는 SSM을 사용하여 인스턴스에 CloudWatch Agent를 설치해본다.

1) EC2 역할 생성

인스턴스가 CloudWatch Agent와 SSM을 사용할 수 있도록 역할을 부여한다.

CloudWatchAgentServerPolicyAmazonSSMManagedInstanceCore 정책을 사용한다.

image

2) SSM Agent 구동 확인

Amazon Linux 2에는 SSM Agent가 기본적으로 설치된다.

[root@backend ec2-user]# systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
   Loaded: loaded (/usr/lib/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2022-02-14 10:36:07 KST; 13min ago
 Main PID: 2227 (amazon-ssm-agen)
   CGroup: /system.slice/amazon-ssm-agent.service
           ├─2227 /usr/bin/amazon-ssm-agent
           └─2393 /usr/bin/ssm-agent-worker

다른 운영체제라면 다음 링크를 참조하여 SSM Agent를 수동설치한다.

https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/sysman-manual-agent-install.html

3) SSM 사용하여 CloudWatch Agent 다운로드

System Manager -> 노드관리->명령실행 -> 명령 실행 으로 이동한다.

명령 문서는 AWS-ConfigureAWSPackage 을 선택한다.

image

명령 파라미터는 다음과 같다.

Action : Install

Installation Type : Uninstall and resinstall

Name : AmazonCloudWatchAgent

Version: latest

image

해당 명령을 실행할 대상을 선택한다. 인스턴스 태그를 통해 지정하거나 수동으로 선택할 수도 있다.

image

image

명령을 실행하고, CloudWatch Agent가 설치되었는지 확인한다.

image

[root@ip-10-0-0-10 ec2-user]# systemctl status amazon-cloudwatch-agent.service
● amazon-cloudwatch-agent.service - Amazon CloudWatch Agent
   Loaded: loaded (/etc/systemd/system/amazon-cloudwatch-agent.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

현재 인스턴스에 CloudWatch Agent가 설치는 됐지만 실행은 안된 상태이다.

config.json을 통해 원하는 지표를 CloudWatch로 보내도록 설정 후 실행하는 과정이 필요하다.

4) Parameter Store에 config.json 저장

System Manager -> 애플리케이션 관리 -> Parameter Store -> 파라미터 생성 으로 이동한다.

파라미터 이름과 CloudWatch config.json 파일 내용을 입력한다.

#config.json 예시
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "cwagent"
    },
    "metrics": {
        "append_dimensions": {
            "InstanceId": "${aws:InstanceId}"
        },
        "metrics_collected": {
            "disk": {
                "measurement": [
                    {
                        "name": "disk_used_percent",
                        "rename": "DiskSpaceUtilization",
                        "unit": "Percent"
                    }
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    {
                        "name": "mem_used_percent",
                        "rename": "MemoryUtilization",
                        "unit": "Percent"
                    }
                ],
                "metrics_collection_interval": 60
            }
        },
        "namespace": "CWAgent/Linux"
    }
}

image

5) SSM을 사용하여 CloudWatch 실행

System Manager -> 노드관리 -> 명령 실행 -> 명령 실행 으로 이동한다.

명령 문서는 AmazonCloudWatch-ManageAgent 를 선택한다.

image

명령 파라미터는 다음과 같다.

Action : configure

Mode : ec2

Optional Configuration Source : ssm

Optional Configuration Location : 파라미터 스토어에 저장한 파라미터 이름

Optional Open Telemetry Collector Configuration Source : ssm

Optional Restart : yes

image

인스턴스를 지정하고 명령을 실행한다.

image

2. 결과 확인

CloudWatch -> 지표 -> 모든 지표 로 이동하여 config.json에서 설정한 Custom Namespace 가 생성되었는지 확인한다.

image

카테고리:

업데이트:

댓글남기기