특정 프로세스의 물리적 메모리 양을 시각화하는 일격 필살 원라이너(AWS CloudWatch)

3114 단어 CloudWatchAWS

EC2 전체가 아니라 특정 프로세스의 메모리 양, 시각화하고 싶지 않습니까?



하고 싶습니다.

샘플



cron
*/5 * * * * mem=$(ps -C java -O rss | grep RlpMaintenance | gawk '{ count ++; sum += $2 }; END {count --; print sum/1024 ;};');instance_id=$(curl -s -w '\n' http://169.254.169.254/latest/meta-data/instance-id);aws cloudwatch put-metric-data --namespace RlpMaintenance --metric-name RlpMaintenanceMemory --dimension InstanceId=$instance_id --value $mem --unit "Megabytes"

설명



한 라이너를 분할하고 설명합니다.

*/5 * * * *



그냥 cron 식입니다. 좋아하는 사용자 정의.
이대로 사용하면 5분 간격입니다.

mem=$(ps -C java -O rss | grep RlpMaintenance | gawk '{ count ++; sum += $2 }; END {count --; print sum/1024 ;};');



mem이라는 변수를 정의합니다.
더 세분화하고 설명합니다.

ps -C java -O rss

이 샘플에서는 java 프로세스를 대상으로 합니다.
이 부분만 발행하면 ↓와 같은 느낌으로 일어나고 있는 java 프로세스가 모두 나옵니다.


이번에는 RlpMaintenance라는 프로세스의 물리적 메모리를 표시하는 샘플이므로,
이 결과를 ↓로 한 줄로 하고 있습니다.

grep RlpMaintenance



그 후, 이 프로세스가 복수 일어나고 있었을 때를 위해, ↓로 집계하고 있습니다.

gawk '{ count++; sum += $2 }; END {count --; print sum/1024 ;};');

echo $mem을 실행하면 RlpMaintenance라는 프로세스의 실제 메모리를 볼 수 있습니다.


instance_id=$(curl -s -w '\n' htp //169.254.169.254 );



여기는 실행 중인 EC2의 인스턴스 ID를 가져오는 명령입니다.
일반적으로 자주 이용되고 있는 것이군요.

aws cloudwatch put-metric-data --namespace RlpMaintenance --metric-name RlpMaintenanceMemory --dimension InstanceId=$instance_id --value $mem --unit "Megabytes"



위에서 정의한 두 가지 변수를 사용하여 cloudwatch에 put-metric-data합니다.

Cloudwatch에서 살펴보면



이렇게 됩니다.



일반화



cron
*/5 * * * * mem=$(ps -C <プロセス名> -O rss | grep <プロセスを特定する文字列> | gawk '{ count ++; sum += $2 }; END {count --; print sum/1024 ;};');instance_id=$(curl -s -w '\n' http://169.254.169.254/latest/meta-data/instance-id);aws cloudwatch put-metric-data --namespace <カスタム名前空間名> --metric-name <メトリクス名> --dimension InstanceId=$instance_id --value $mem --unit "Megabytes"


<프로세스 이름> <프로세스를 식별하는 문자열> <사용자 지정 네임스페이스 이름> <메트릭 이름>
을 커스터마이즈 하면, 무엇이라도 사용할 수 있을까 생각합니다.

※EC2에 Cloudwatch를 이용할 수 있는 롤을 붙이는,
AWS CLI를 사용할 수 있다고 가정합니다.

좋은 웹페이지 즐겨찾기