Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
36
Help us understand the problem. What is going on with this article?
@koomaru

【AWS】カスタムメトリクスを使ったプロセス監視(Linux編)【CloudWatch】

More than 3 years have passed since last update.

はじめに

こんにちは。
CloudWatchでプロセスの監視を行おうとした時、デフォルトの設定だけではできずかなり困りました。
色々な方の記事を参考にプロセス監視設定をしたときのメモを残します。

(20160911 追記)
WIndows編も記載しました!
【AWS】 カスタムメトリクスを使ったプロセス監視(Windows編) 【Cloudwatch】

概要

今回の記載内容は、主に下記となります。
監視するプロセスは、[chrony] です。

  1. カスタムメトリクス用IAM作成
  2. CloudWatch用ツールダウンロード
  3. カスタムメトリクス作成

前提

・Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type - ami-b1b458b1
 Amazon Linuxを利用しない手順を記載します。
・コンソールにログインできるアカウント

①カスタムメトリクス用IAM作成

カスタムメトリクスをCloudWatchに送るには、PutMetricDataという権限をもったIAMのアクセスキーとシークレットアクセスキーが必要になります。
まず、その権限をもったIAMを作ります。

今回権限は下記のようにしました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "xxxxxxxxxxxxxx",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

作成したIAMでアクセスキー IDとシークレットアクセスキーを発行します。

②CloudWatch用ツール準備

CloudWatch用のツールを準備します。

・SSHでEC2に接続します。

・wgetコマンドが使えないので、wgetをインストール
sudo yum install wget

・CloudWatchコマンドツール用のフォルダ作成
mkdir bin

・CloudWatchコマンドツールのダウンロード
cd bin
wget http://ec2-downloads.s3.amazonaws.com/CloudWatch-2010-08-01.zip

・unzipも入ってなかった・・・

unzip CloudWatch-2010-08-01.zip
-bash: unzip: コマンドが見つかりません

・unzipのインストール
sudo yum install unzip

・改めて、zip解凍及びzipファイルの削除
sudo unzip CloudWatch-2010-08-01.zip
rm CloudWatch-2010-08-01.zip

・CloudWatchにアクセスするために、CloudWatch証明書情報のテンプレートをコピー
cd CloudWatch-1.0.20.0/
sudo cp credential-file-path.template credentials

・証明書情報情報の書き換え
 先ほど、作成した アクセスキーID と シークレットキー を入力

sudo vi credentials 
AWSAccessKeyId=<アクセスキー ID入力>
AWSSecretKey=<シークレットキー入力>

③カスタムメトリクス作成

ClooudWatchにカスタムメトリクスを送るシェルを作成します。

・CloudWatchコマンドツールを利用するには、javaが必要なので、インストール
sudo yum install java-1.7.0-openjdk

・シェル作成
chronydが動いている場合は、1を返します。
chronydが停止している場合は、0を返します。

custom_metrics.sh
#!/bin/bash

export AWS_CLOUDWATCH_HOME=/home/ec2-user/bin/CloudWatch-1.0.20.0
export AWS_CREDENTIAL_FILE=$AWS_CLOUDWATCH_HOME/credentials
export AWS_CLOUDWATCH_URL=https://monitoring.amazonaws.com
export PATH=$AWS_CLOUDWATCH_HOME/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/jre

InstanceId=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)

chrony=`ps cax | grep chronyd | wc -l`

if [ "$chrony" -gt "0" ]; then
 Processes=1
else
 Processes=0
fi

mon-put-data --metric-name "chrony Processes" --namespace "System/Linux" --dimensions "InstanceId=$InstanceId" --value "$Processes" --unit "Count" --region ap-northeast-1

・シェルに実行権限を付与
cronからも実行できるようになります。
sudo chmod 755 custom_metrics.sh

・シェルを実行
CloudWatchにカスタムメトリクスが送られます!
sh custom_metrics.sh

・[AWSコンソール] - [CloudWatch-メトリック] - [Linuxシステム>InstanceId]で動作確認
chronyが起動している場合 1を返しています。 #見にくくてごめんなさい...
スクリーンショット 2015-12-12 16.25.04.png

chronyが停止している場合 0を返しています。
スクリーンショット 2015-12-12 17.29.27.png

ちゃんと動作していますね。
定期的に実行したい場合は、先ほど作成したシェルをcronに登録してください。

また、カスタムメトリクスの値をトリガーにアラームの設定をすれば、
プロセスの監視を色々とカスタマイズできますね。

修正が必要な部分などありましたら、ご連絡お願いします!
それでは、失礼します!

参考サイト

http://stk-inc.co.jp/2013/01/aws-cloudwatch-ec2/
http://qiita.com/hilotter/items/5d5c7cddb5e580bd7aa5

36
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
36
Help us understand the problem. What is going on with this article?