LoginSignup
4
10

More than 3 years have passed since last update.

CloudWatchでカスタムメトリクスを10分で取得する確実な1つの手順

Last updated at Posted at 2019-06-02

image.png

こんにちは。黒川です。

監視担当の先輩から

「いいか?とりあえず監視っていうのは CPU, メモリ, ディスク の使用率を見るんだ!まずはそれからだ!」

なんて言われた経験、ありますよね? (無いか。)

しかし、AWSではデフォルトのメトリクスに「メモリ, ディスク」が無いではありませんか。

令和になったことですし10分でできる設定方法を投稿してみようと思います。

✔︎EC2インスタンスで「メモリ、ディスク」の監視メトリクスをCloudWatchに送信します。

✔︎やること (全てAWSのサービスでやります)

  - IAMロール、IAMポリシー
  - EC2にperlのモジュールをyumでインストールする
  - AWS公式スクリプトをcurlコマンドでダウンロードする
  - AWS公式スクリプトをcronで1分毎に起動する

それではいってみましょう。

IAMロール、IAMポリシーを作成し、EC2にアタッチする

image.png

✔︎中級者向け

以下のポリシーを付与したIAMロールを監視するEC2にアタッチして下さい。
cloudwatch:PutMetricData
cloudwatch:GetMetricStatistics
cloudwatch:ListMetrics
ec2:DescribeTags

✔︎初級者向け

EC2が「メモリ、ディスク」のメトリクス情報をCloudWatchを送信するには「ログを送信する権限」が必要です。

IAMロールをざっくり解説すると
スクリーンショット 2019-05-30 0.23.33.png

・短期的な認証情報である
・例えばIAMロールに「S3に書き込める権限」をアタッチして使用する

 ※この「S3に書き込める権限」を「IAMポリシー」と読んだりする

スクリーンショット 2019-05-30 0.25.52.png

こんな風に、ロールをEC2にアタッチして使用します。

ポリシーの作成方法、ロールへのアタッチの仕方はAWS公式ドキュメント「チュートリアル: はじめてのカスタマー管理ポリシーの作成とアタッチ」を参照して下さい。

EC2にperlのモジュールをyumでインストールする

sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64

インターネットにアクセスできない場合はVPCのネットワークの設定を見直す必要があります。

・インターネットゲートウェイ
・ルートテーブル
・セキュリティーグループ

の設定を見直して下さい。

AWSのネットワーク知識をおさらいしたい方は「VPCとは何か?それはAWSに張り巡らされた1つの血管であった。 〜AWS Virtual Private Cloud 〜」を参照してみて下さい。

AWS公式スクリプトをcurlコマンドでダウンロードする

curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O
unzip CloudWatchMonitoringScripts-1.2.2.zip && \
rm CloudWatchMonitoringScripts-1.2.2.zip && \
cd aws-scripts-mon

以下コマンドを実行すればCloudWatchのメトリクス画面に「LinuxSystem」というNamespaceで出力されています。

./mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail --disk-path=/ --disk-space-util --disk-space-used --disk-space-avail

1分ごとにCloudWatchに送信されるようにCronを設定しましょう。

crontab -e 
*/1 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail --disk-path=/ --disk-space-util --disk-space-used --disk-space-avail --from-cron

引数の詳細によって、ディスクのパーティションごとを指定したり細かい調整が可能です。

詳細はAmazon EC2 Linux インスタンスのメモリとディスクのメトリクスのモニタリングを参照して下さい。

まとめ

image.png

今回の手順は公式サイトでもサポートされている手順ですし、手元の環境でも問題なくできたので、信頼性は高いかと思います。

ところで、デフォルトのメトリクスに「メモリ、ディスク」が無いのは明らかにAWSの落ち度があると言わざるを得ないのでは無いでしょうか。

「CloudWatchのリリース日まであと少し!ちょっとメモリとディスクは難しそうだからスクリプトで乗り切ろうぜ!」ってな感じでしょうか。(完全に想像です。)

CloudWatchとは何か? Youtubeで解説しているのでこちらも参照してみて下さい。「【AWS】CloudWatch メトリクスを中心に6つの観点から徹底解説!

ありがとうございました。

4
10
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
4
10