逆引きマニュアル: AWS: CloudWatch エージェントをEC2に入れる方法

投稿日: 更新日:

古い手順

慣れないうちはこちらの方が楽な気がする。。。

CloudaWatchエージェントをインストール

詳細はこちら。

  1. sudo yum install awslogs
  2. 収集するログの設定: sudo vi /etc/awslogs/awslog.conf
    • デフォルトでは/var/log/messagesが入っている
  3. リージョンの設定: sudo vi /etc/awslogs/awscli.conf
    • region = ap-northeast-1
    • aws_access_key_id, aws_secret_access_key を設定
  4. sudo service awslogs start

新しい手順

AWS Systems Managerとの統合が売りだけど、まだ手順が枯れてない感じ。

CloudWatch エージェントを使用して Amazon EC2 インスタンスとオンプレミスサーバーからメトリクスとログを収集する - Amazon CloudWatch

CloudWatchエージェントのインストール

mkdir AmazonCloudWatchAgent
cd AmazonCloudWatchAgent
wget https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip
unzip AmazonCloudWatchAgent.zip
sudo ./install.sh

CloudWatchエージェントの認証情報を登録

sudo aws configure --profile AmazonCloudWatchAgent

設定ファイルを作成

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard 

以下の方法で入力すると、カスタムメトリクスがたくさんできるので注意

  • OSを選ぶ(Linux/Windows): 1
  • ホストのタイプ(EC2/オンプレミス): 1
  • CPUやメモリのモニタリングをするか?(はい/いいえ): 1
  • コア単位のCPUモニタリングをするか?(はい/いいえ): 1
  • EC2の情報を埋め込むか?(はい/いいえ): 1
  • 計測単位は?(1秒/10秒/30秒/60秒): 4
  • 設定は?(Basic/Standard/Advanced/None): 1(Basic)
    • これは意味が分かりませんでした。
  • 上の設定(JSONで出力される)で問題ないか?(はい/いいえ): 1
  • CloudWatch Log Agentの設定ファイルがあるか?(はい/いいえ): 2
    • 初回は「いいえ」になると思います。
  • 任意のログファイルをモニタリングするか?(はい/いいえ): 1
  • ログファイルのパス:
    • /var/log/messagesで良さそう?
  • ロググループ名: デフォルト
    • /var/log/messages のときは messages になる。
  • 追加でモニタリングするログはあるか?
  • 設定をSSMパラメータストアに入れるか?
  • 設定をどのような名前でストアに入れるか?
    • 何でもいいようですが、AmazonCloudWatch-で始まる方が良さそうです。
  • パラメータストアを保存するリージョンは?
    • 東京リージョンなのでap-northeast-1
  • AWSのアクセスキー

CloudWatchエージェントの起動

以下の手順ではなぜか起動しません(後述)。

PARAMETER_STORE=xxx
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:${PARAMETER_STORE} -s

起動できない問題とその回避方法

公式手順の通りにやっても以下のエラーが出ます。

Error in retrieving parameter store content: NoCredentialProviders: no valid providers in chain. Deprecated.
	For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Fail to fetch json config: NoCredentialProviders: no valid providers in chain. Deprecated.
	For verbose messaging see aws.Config.CredentialsChainVerboseErrors

Fail to fetch the config!

これは、以下の環境変数を設定することで回避できます。

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_REGION

マニュアル