728x90
반응형
본 문서는 Amazon Linux 에서 custom metric 을 활성화 하는 방법에 대해 기술한다.
기본적인 메커니즘은 아래와 같다.
1. IAM 계정을 Programmatic access 계정 생성
2. AWS에서 제작한 mon-put-instance-data.pl 파일과 Linux crontab 을 통해 리소스의 값을 CloudWatch 로 전송한다.
3. 기록된 CloudWatch metric을 확인한다.
[root@ip-10-100-0-98 ~]# sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https <-- Amazon Linux 2014.03 이상 버전을 사용 중인 경우 perl 모듈을 추가로 설치하여야 한다.
=========================================================================================================================================================================
Package Arch Version Repository Size
=========================================================================================================================================================================
Installing:
perl-DateTime x86_64 2:1.04-5.9.amzn1 amzn-main 117 k
perl-LWP-Protocol-https noarch 6.04-2.7.amzn1 amzn-main 11 k
perl-Switch noarch 2.16-7.5.amzn1 amzn-main 23 k
perl-Sys-Syslog x86_64 0.33-3.6.amzn1 amzn-main 43 k
Installing for dependencies:
perl-Business-ISBN noarch 2.06-2.7.amzn1 amzn-main 25 k
perl-Business-ISBN-Data noarch 20120719.001-2.7.amzn1 amzn-main 26 k
perl-Class-Load noarch 0.20-3.6.amzn1 amzn-main 27 k
perl-Class-Singleton noarch 1.4-14.7.amzn1 amzn-main 18 k
perl-Compress-Raw-Bzip2 x86_64 2.061-3.11.amzn1 amzn-main 33 k
perl-Compress-Raw-Zlib x86_64 1:2.061-4.1.amzn1 amzn-main 61 k
perl-Data-Dumper x86_64 2.145-3.5.amzn1 amzn-main 49 k
perl-Data-OptList noarch 0.107-9.7.amzn1 amzn-main 23 k
perl-DateTime-Locale noarch 0.45-6.5.amzn1 amzn-main 1.9 M
perl-DateTime-TimeZone noarch 1.63-2.9.amzn1 amzn-main 892 k
perl-Encode-Locale noarch 1.03-5.8.amzn1 amzn-main 16 k
perl-File-Listing noarch 6.04-7.11.amzn1 amzn-main 13 k
perl-HTML-Parser x86_64 3.71-4.7.amzn1 amzn-main 119 k
perl-HTML-Tagset noarch 3.20-15.7.amzn1 amzn-main 18 k
perl-HTTP-Cookies noarch 6.01-5.12.amzn1 amzn-main 27 k
perl-HTTP-Daemon noarch 6.01-5.11.amzn1 amzn-main 21 k
perl-HTTP-Date noarch 6.02-8.8.amzn1 amzn-main 14 k
perl-HTTP-Message noarch 6.06-6.10.amzn1 amzn-main 84 k
perl-HTTP-Negotiate noarch 6.01-5.12.amzn1 amzn-main 17 k
perl-IO-Compress noarch 2.061-2.12.amzn1 amzn-main 298 k
perl-IO-HTML noarch 1.00-2.5.amzn1 amzn-main 24 k
perl-IO-Socket-IP noarch 0.21-4.5.amzn1 amzn-main 38 k
perl-IO-Socket-SSL noarch 1.94-3.13.amzn1 amzn-main 118 k
perl-LWP-MediaTypes noarch 6.02-2.9.amzn1 amzn-main 25 k
perl-List-MoreUtils x86_64 0.33-9.9.amzn1 amzn-main 66 k
perl-Module-Implementation noarch 0.06-6.6.amzn1 amzn-main 17 k
perl-Module-Runtime noarch 0.013-4.5.amzn1 amzn-main 19 k
perl-Mozilla-CA noarch 20110914-2.6.amzn1 amzn-main 9.0 k
perl-Net-HTTP noarch 6.06-2.11.amzn1 amzn-main 29 k
perl-Net-LibIDN x86_64 0.12-15.6.amzn1 amzn-main 29 k
perl-Net-SSLeay x86_64 1.65-2.10.amzn1 amzn-main 361 k
perl-Package-DeprecationManager noarch 0.13-7.6.amzn1 amzn-main 19 k
perl-Package-Stash noarch 0.34-2.6.amzn1 amzn-main 35 k
perl-Package-Stash-XS x86_64 0.26-3.7.amzn1 amzn-main 32 k
perl-Params-Util x86_64 1.07-6.8.amzn1 amzn-main 38 k
perl-Params-Validate x86_64 1.08-4.10.amzn1 amzn-main 72 k
perl-Sub-Install noarch 0.926-6.8.amzn1 amzn-main 22 k
perl-TimeDate noarch 1:2.30-2.7.amzn1 amzn-main 53 k
perl-Try-Tiny noarch 0.12-2.5.amzn1 amzn-main 24 k
perl-URI noarch 1.60-9.8.amzn1 amzn-main 109 k
perl-WWW-RobotRules noarch 6.02-5.12.amzn1 amzn-main 18 k
perl-libwww-perl noarch 6.05-2.17.amzn1 amzn-main 215 k
Transaction Summary
=========================================================================================================================================================================
Install 4 Packages (+42 Dependent packages)
Total download size: 5.2 M
Installed size: 18 M
Is this ok [y/d/N]: y
Downloading packages:
Complete!
참고 CentOS 7버전의 경우 설치하는 파일이 틀리다.
# sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA -y
[root@ip-10-100-0-98 ~]# cd /usr/local/src/ <-- CloudWatch Monitoring script 를 저장할 위치에 이동한다.
[root@ip-10-100-0-98 src]# curl http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip -O <-- 모니터링 스크립트 설치
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 24089 100 24089 0 0 40845 0 --:--:-- --:--:-- --:--:-- 40898
[root@ip-10-100-0-98 src]# ls -al
....
-rw-r--r-- 1 root root 24089 Jul 4 08:39 CloudWatchMonitoringScripts-1.2.1.zip
...
[root@ip-10-100-0-98 src]# unzip CloudWatchMonitoringScripts-1.2.1.zip <-- 압축 해제
Archive: CloudWatchMonitoringScripts-1.2.1.zip
extracting: aws-scripts-mon/awscreds.template
inflating: aws-scripts-mon/AwsSignatureV4.pm
inflating: aws-scripts-mon/CloudWatchClient.pm
inflating: aws-scripts-mon/LICENSE.txt
inflating: aws-scripts-mon/mon-get-instance-stats.pl
inflating: aws-scripts-mon/mon-put-instance-data.pl
inflating: aws-scripts-mon/NOTICE.txt
[root@ip-10-100-0-98 src]# rm ./CloudWatchMonitoringScripts-1.2.1.zip <-- .zip 삭제, /usr/loca/src 에 남겨두려면 삭제 하지 않아도 무방함
rm: remove regular file ‘./CloudWatchMonitoringScripts-1.2.1.zip’? y
[root@ip-10-100-0-98 src]# mv ./aws-scripts-mon/ /root/ <-- 압축해제한 디렉터리를 /root 디렉터리 하위로 이동
[root@ip-10-100-0-98 src]# cd /root/aws-scripts-mon/
스크립트 파일 구성
- CloudWatchClient.pm – 다른 스크립트에서 Amazon CloudWatch 호출을 간소화하는 공유 Perl 모듈입니다.
- mon-put-instance-data.pl – Amazon EC2 인스턴스에 대한 시스템 메트릭(메모리, 스왑, 디스크 사용률)에 대한 시스템 측정치를 수집하여 Amazon CloudWatch에 전송합니다.
- mon-get-instance-stats.pl – Queries Amazon CloudWatch에 쿼리하여 이 스크립트가 실행된 EC2 인스턴스에 대한 최신 사용률 통계를 표시합니다.
- awscreds.template – 액세스 키 ID 및 보안 액세스 키를 저장하는 AWS 자격 증명의 파일 템플릿입니다.
- LICENSE.txt – Apache 2.0 라이선스가 들어 있는 텍스트 파일입니다.
- NOTICE.txt – 저작권 통지입니다.
[root@ip-10-100-0-98 aws-scripts-mo]# cp awscreds.template awscreds.conf <-- AccessKeyID, SecretKy 적용을 위해 템플릿 복사
[root@ip-10-100-0-98 aws-scripts-mo]# vi ./awscreds.conf <-- 키를 정의
AWSAccessKeyId=.....
AWSSecretKey=......
위 AccessKeyID 와 Secretket 의 경우 AWS CloudWatchFullAccess 권한이 있는 계정의 키 값을 입력해 준다.
* 사실 권한을 더 작게 줄 수도 있는데.....ㅠㅠ
[root@ip-172-31-31-177 aws-scripts-mon]# ./mon-put-instance-data.pl --mem-util --verify --verbose <-- Cloudwatch에 데이터를 넣지 않고, 간단한 테스트를 수행
MemoryUtilization: 8.62159133358237 (Percent)
Using AWS credentials file <./awscreds.conf>
Endpoint: https://monitoring.ap-northeast-1.amazonaws.com
Payload: {"MetricData":[{"Timestamp":1499065590,"Dimensions":[{"Value":"i-005d4065b54f21a5d","Name":"InstanceId"}],"Value":8.62159133358237,"Unit":"Percent","MetricName":"MemoryUtilization"}],"Namespace":"System/Linux","__type":"com.amazonaws.cloudwatch.v2010_08_01#PutMetricDataInput"}
Verification completed successfully. No actual metrics sent to CloudWatch.
[root@ip-172-31-31-177 aws-scripts-mon]#
[root@ip-172-31-31-177 aws-scripts-mon]# ./mon-put-instance-data.pl --mem-util --mem-used-incl-cache-buff --mem-used --mem-avail <-- 사용 가능한 ㅁ든 메모리 측정치를 수집한 다음 CloudWatch에 전송
Successfully reported metrics to CloudWatch. Reference Id: 2f8c7b6a-5fbe-11e7-9db5-55cf07411f21
[root@ip-172-31-31-177 aws-scripts-mon]#
[root@ip-172-31-31-177 src]# crontab -e <-- crontab 에 지정하여 5분 단위로 메모리와 디스크 데이터를 Cloudwatch로 전송
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail --disk-space-util --disk-path=/ --from-cron
만약 / 디바이스 외에 다른 디바이스까지 수집하려면 --disk-path=[PATH] 옵션을 추가해주면 된다.
mon-put-instance-data.pl 의 여러 옵션값을 통해 각종 데이터를 CloudWatch에 전송할 수 있다.
기타 Custom metric의 옵션은 아래의 AWS 공식 manual 에서 확인할 수 있다.
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/mon-scripts.html
Custome metric, Linux memory, Linux Disk, 커스텀 메트릭, AWS, AWS EC2
728x90
반응형
'시스템 > Amazon WEB Service' 카테고리의 다른 글
AWS re:Invent 2021 100% 즐겼고,다가올 re:Invent 2022 200% 기대하기. (0) | 2021.12.10 |
---|---|
[AWS] Active Directory 서비스 접근 및 관리 방법 (0) | 2018.09.11 |
[AWS] WorkSpace 네트워크 속도 관련 내용 (0) | 2018.09.10 |
[EC2] Windows administrator 패스워드 초기화(크랙) 하기 (0) | 2018.09.09 |