지난번 글에서 EC2 인스턴스에 CloudWatch Agent 설치[Linux/Windows]를 진행했는데요. CloudWatch Agent를 설치하면 EC2 인스턴스의 인프라 지표를 CloudWatch를 통해 모니터링 할 수 있습니다.
이번에는 Linux EC2 인스턴스에서 사용자가 만들어 생성해낸 지표를 CloudWatch에서 확인 할 수 있도록 하는 방법에 대해서 알아보려고 합니다.
즉 CloudWatch의 Custom Metrics을 작성하는 방법에 대해 알아보겠습니다.
Amazon Linux 2가 설치 되어 있는 EC2 인스턴스를 가지고 진행하겠습니다.[이미 EC2 인스턴스는 생성이 되어 있다는 전제로 진행하겠습니다.]
1. IAM User 생성
CloudWatch를 조작할 수 있는 권한을 가진 IAM이 필요 합니다. IAM 권한을 가지고 세세하게 권한을 컨트롤 할 수 있습니다. 저희는 테스트 용으로 진행을 하기 때문에 CloudWatchFullAccess 권한을 부여하여 진행 하도록 하겠습니다.
IAM > 사용자 > 사용자 추가 버튼을 클릭하여 아래와 같이 사용자 이름을 작성하고 프래그래밍 방식 엑세스만 체크 합니다.
이번 테스트에서는 액세스 키 ID 및 비밀 엑세스 키만 필요하기 때문입니다.
IAM의 권한은 CloudWatch Custom을 테스트 할 것이기 때문에 CloudWatchFullAccess 권한을 주어 진행하겠습니다.
다음 눌러 IAM User를 생성하면 아래와 같은 화면이 나옵니다.
액세스 키 ID와 비밀 액세스 키를 적어 따로 보관하든지, .csv 다운로드 버튼을 클릭하여 따로 보관을 해두셔도 됩니다. 절대로, 이 값들은 공개되어서는 안됩니다. 이 값으로 권한에 맞는 작업을 진행할 수 있기 때문에 보안에 신경을 쓰면서 키를 관리해주셔야 합니다.
2. AWS CLI 설치
Amazon Linux 2 로 진행을 합니다. Amazon Linux2에는 기본적으로 AWS CLI 1버전이 설치되어 있습니다.
다음과 같은 명령어로 설치를 확인 할 수 있습니다.
aws --version
아마존 리눅스에는 버전 1이 자동으로 설치 되어 있습니다. AWS CLI는 버전 2가 최신 버전이며, 버전 2로 설치하여 테스트 진행하겠습니다.
OS 종류별 AWS CLI 2 버전 설치 가이드는 아래의 URL로 접속하여 확인 할 수 있습니다.
docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-linux.html#cliv2-linux-install
# Linux x86 (64-bit)
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
위의 명령어를 순서대로 입력하여 설치를 진행합니다.
설치 진행 후 aws --version 을 입력하면 이전의 버전과 그대로인 것이 확인됩니다. 터미널 접속을 종료하여 다시 재접속 해줍니다.
재접속 후 aws --version을 입력하면 버전이 변경되었음을 확인할 수 있습니다.
3. AWS Configure
AWS CLI 설치를 완료 했으면 AWS Configure 설정을 해줍니다.
AWS Configure 설정에 대해서 정확하게 모르신다면, 이전에 제가 작성한 아래의 글중에 AWS Configure 부분을 참고하시기 바랍니다.
4. Custom Metric 스크립트 작성
테스트 스크립트로 80 Port 상태에 대한 Custom Metric 지표 스크립트를 작성해 보겠습니다. Port는 ELB의 Port 체크로도 확인 할 수 있으나 테스트를 위하여 스크립트를 작성하여 Custome Metric을 생성하여 CloudWatch에서 설정하여 그래프로 보여 지는 것을 확인하겠습니다.
해당 EC2 인스턴스에 80에 대한 프로세스가 띄워져 있음을 전제로 진행합니다.
vi cw_custom.sh
#!/bin/bash
TCP_CONN_PORT_80=0
if (netstat -nlt | grep 80 | grep LISTEN > /dev/null ) ; then
TCP_CONN_PORT_80=1
else
TCP_CONN_PORT_80=0
fi
echo $TCP_CONN_PORT_80
aws cloudwatch put-metric-data --metric-name TCP_port_80_State --dimensions Instance=i-0ce58e466c9095914 --namespace "Custom" --value $TCP_CONN_PORT_80
EC2 인스턴스 내에서 sh 파일을 생성한 후 1회 실행을 합니다.
.sh 파일에 작성해 논 echo 명령어로 실행값이 무엇인지 확인 했습니다.
Custom Mertric에 대한 AWS 공식 Doc의 URL은 아래와 같습니다. 아래의 Doc를 활용하여 본인이 원하는 대로 Custome Metric을 생성할 수 있고 crontab을 설정하여 시간, 일 등으로 설정하여 주기적으로 Custom Metric을 CloudWatch로 보낼 수 있습니다.
aws.amazon.com/ko/premiumsupport/knowledge-center/cloudwatch-custom-metrics/
5. AWS CloudWatch 데이터 확인 및 Dashboard 설정
AWS 콘솔로 접속하여 CloudWatch > 지표를 선택하면 아래와 같이 위에서 설정했던 [--namespace "Custom"] 해당 설정값으로 인해 지표에 Custom 이라는 사용자 지정 네임스페이스가 보일 겁니다.
위와 같이 지표에서 값을 선택하여 그래프로 설정하여 본인이 보고 싶은 기간, 통계 등을 설정하여 그래프로 만들어 Dashboard를 설정하여 모니터링 할 수 있습니다.
간단하게 80 Port에 대한 Custom Metric을 다루어보았습니다. CloudWatch에서 제공하는 지표 외에 Port 상태 확인 등 자신에게 필요한 메트릭에 대해서 CloudWath put-metric-data를 이용하여 CloudWatch 지표로 보내어 활용 할 수 있습니다.
다음은 Grafana를 EC2 인스턴스에 설치하여 CloudWatch와 연동하여 누구든지 어디서든 쉽게 접근하여 본인이 설정한 Dashboard를 화긴 할 수 있도록 설정하는 법을 해보도록 하겠습니다.
감사합니다.
'AWS > Monitoring' 카테고리의 다른 글
AWS Monitoring[CloudWatch] - 1. CloudWatch Alarm을 Slack 연동하기 (5) | 2021.08.20 |
---|---|
AWS Monitoring - 5. CloudWatch Agent 자동설치[SSM - Linux OS] (0) | 2021.01.14 |
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 |
AWS Monitoring - 1. CloudWatch 대시보드 구성 (0) | 2020.08.06 |