이전 2. CloudWatch Agent 설치[Memory/Disk 수집][Linux OS] 글에서 서버에 접속(SSH) 하여 수동으로 CloudWatch Agent 설치하는 방법에 대해서 글을 작성했습니다.
이번글에서는 AWS SSM(AWS System Manager)를 이용하여 자동으로 Linux OS에 CloudWatch Agent를 설치하는 방법에 대해서 작성하려고 합니다.
우선, 자동설치를 하기 위해서는 SSM 에이전트가 설치가 되어 있어야 합니다.
SSM 에이전트는 다음 EC2 인스턴스 및 Amazon Machine Images(AMIs)에 기본적으로 설치됩니다.
- Amazon Linux
- Amazon Linux 2
- Amazon Linux 2 ECS-Optimized AMIs
- Ubuntu Server 16.04, 18.04, and 20.04
이외의 Linux 들은 수동으로 SSM 에이전트 설치가 진행되어야 합니다. 수동 설치는 아래의 URL을 참조하여 설치하면 됩니다.
docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/sysman-manual-agent-install.html
다음으로 SSM에 접근하여 조작할 수 있는 IAM 계정이 필요합니다. 그리고 이전글에서 생성한 IAM 역할 CloudWatchAgentServerPolicy를 자동으로 CloudWatch Agent 설치할 대상 EC2 인스턴스에 연결을 해줍니다. 위에 생성 및 IAM 연결 방법은 이전 글을 참고하시면 됩니다.
AWS Console에 접속 후 > AWS System Manager > 애플리케이션 관리 > Parameter Store > 파라미터 생성을 클릭합니다.
아래와 같이 정보를 작성합니다.
값은 agnet의 config.json 값을 한줄로 요약하여 작성한 내용입니다.
{"agent":{"metrics_collection_interval":60,"region":"ap-northeast-2",
"logfile":"/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log",
"debug":false},"metrics":{"namespace":"CWAgent/Linux",
"metrics_collected":{"disk":{"measurement":["used_percent"],
"metrics_collection_interval":60,"resources":["/"]},
"mem":{"measurement":["mem_used_percent"],"metrics_collection_interval":60}},
"append_dimensions":{"InstanceId":"${aws:InstanceId}"}}}
AWS System Manager > 노드 관리 > Run Command > 명령 실행으로 가서 AWS-ConfigureAWSPackage를 선택합니다.
명령 파라미터 항목에서 Name을 작성합니다. 저는 AmazonCloudWatchAgent 라고 설정하였습니다.
적용할 인스턴스 대상을 선택합니다. 인스턴스 태그로 지정도 가능합니다. 저는 한대만 테스트로 진행하기 때문에 수동으로 인스턴스 선택으로 진행하겠습니다. 대상에 인스턴스가 노출 되지 않을경우 연결 된 IAM에 Role을 추가해주어야 합니다. SSM과 관련된 IAM Role을 연결해 주어야 합니다. 저는 빠른 테스트를 위해 AmazonSSMFullAccess를 추가 하여 연결해주었습니다.
디폴트 설정은 건드리지 않고 완료를 클릭하게 되면 아래와 같이 진행이 됩니다.
1분 정도 기다리고 새로고침을 클릭하면 성공 상태가 나옵니다. 실패 시 에러 내용이 나오니 내용을 읽고 처리를 진행하면 됩니다.
Run Command가 성공한 인스턴스에 위에서 작성해서 파라미터 스토어에 설정한 CloudWatch Agent 설정 config.json을 적용하도록 하겠습니다.
Run Command > 명령 실행을 클릭하여 설정을 진행합니다.
AmazonCloudWatch로 검색하여 -ManageAgent를 선택합니다.
명령 파라미터에 파라미터 스토어에서 저장했던 파라미터 이름을 입력합니다.
대상에서 해당 인스턴스를 선택하여 진행합니다.
설정이 완료 되었으니 수집이 되는지 CloudWatch>지표로 가서 확인을 합니다.
CloudWatch > 지표를 클릭하면 사용자 지정 네임스페이스가 나옵니다. 위에서 config 설정에 namespace를 CWAgent/Linux로 설정했기 때문에 CWAgent/Linux 네임스페이스가 보입니다.
CWAgent/Linux를 클릭하면 2지표가 있는대 위와 같이 분리되어 있습니다.
메모리 지표를 클릭하고 보고 싶은 형태로 설정을 하면 아래와 같이 메모리가 수집되는 것을 볼 수 있습니다.
해당 TEST를 진행할 때 의도적으로 TEST EC2 인스턴스를 Private 영역에 생성을 하였다.
보통의 EC2 인스턴스 Server는 Private에 배치가 많이 되기 때문이다.
자동 설정의 확실한 장점은 수동으로 설치 시 Bastion 서버를 Public 영역에 생성해서 Private으로 터널링을 이용해서 접속해서 수동으로 설치를 진행해야 하는 반면, SSM을 이용한 CloudWatch 자동 설정은 그런 서버를 생성해서 설치를 하는게 아닌 IAM의 권한에 따라 설정을 할 수 있어 훨씬 편하고 신경쓸 점이 적어진다는 것이다.
보통 구축 진행 할 때 CloudWatch Agent를 설치하고 AMI를 생성하여 그 이미지를 활용하여 서버를 구성하고 하기 때문에 구축 때는 활용할 수 있는 방법이 줄어들지 몰라도 구성이 끝난 후 새로 구성하는 서버등에 설치할 때는 매우 유용할 것으로 보인다.
구축 시보다는 운영 시에 활용도가 높을 것이라 판단된다.
SSM Agent가 자동으로 설치된 OS가 Amazon Linux, Amazon Linux 2, Ubuntu 16.04, 18.04, 20.04 정도지만 충분히 활용을 할 수 있을 것이라 생각이 된다. 꽤 유용한 테스트 임은 확실하다.
AWS 공식 사이트 외 참고 사이트
감사합니다.
'AWS > Monitoring' 카테고리의 다른 글
AWS Monitoring[CloudWatch] - 2. Slack Message 변경하기 (2) | 2021.09.07 |
---|---|
AWS Monitoring[CloudWatch] - 1. CloudWatch Alarm을 Slack 연동하기 (5) | 2021.08.20 |
AWS Monitoring - 4. CloudWatch Custom Metrics (0) | 2020.10.20 |
AWS Monitoring - 3. CloudWatch Agent 설치[Memory/Disk 수집][Windows] (0) | 2020.10.14 |
AWS Monitoring - 2. CloudWatch Agent 설치[Memory/Disk 수집][Linux OS] (0) | 2020.10.09 |