LoginSignup
2
1

More than 5 years have passed since last update.

特定プロセスの物理メモリ量を可視化する一撃必殺ワンライナー (AWS CloudWatch)

Last updated at Posted at 2018-10-03

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プロセスが全てでてきます。
image.png

今回はRlpMaintenanceというプロセスの物理メモリを表示するサンプルとなっておりますので、
この結果を↓で一行にしています。

grep RlpMaintenance 

image.png

その後、このプロセスが複数立ち上がっていたときのため、↓で集計しています。

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

echo $mem を実行すると、RlpMaintenanceというプロセスの物理メモリを表示することができます。
image.png

instance_id=$(curl -s -w '\n' http://169.254.169.254/latest/meta-data/instance-id);

こちらは、稼働しているEC2のインスタンスIDを取得するコマンドになります。
一般的によく利用されてるものですね。

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

上記で定義した2つの変数を利用して、cloudwatchにput-metric-dataします。

Cloudwatchでみてみると

こうなります。

image.png

汎用化

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が利用できることが前提です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1