ヤマムギ

growing hard days.

*

EC2にSystems MangerからCloudWatchエージェントをインストール

   

CloudWatchエージェント

EC2の標準メトリクスでは収集できないメモリの情報などをカスタムメトリクスとして収集し、アプリケーションログをCloudWatch Logsへの収集をまとめて行ってくれるCloudWatchエージェントをインストールしました。

CloudWatch エージェントにより収集されるメトリクス

IAMロールの作成

EC2がCloudWatchにメトリクスやログを書き込めるようにすることももちろんですが、SSMからインストールするのでSSMに対しての権限も必要です。

公式の手順Amazon EC2 Linux インスタンスに SSM エージェント を手動でインストールするにそって進めてみます。

IAMロールを新規作成して、AmazonEC2RoleforSSMポリシーをアタッチしました。

AmazonEC2RoleforSSMポリシー

AmazonEC2RoleforSSMポリシーを見てみました。

SSM、CloudWatchLogs、メトリクス、だけでなく、S3に対しての権限も有効になっています。

EC2にSSMエージェントをインストール

インストールが終わってamazon-ssm-agentのステータスを見てみるとすでに起動しています。
自動起動も出来ているらしい。

CloudWatchAgentのインストール

EC2用に作成したIAMロールにCloudWatchAgentAdminPolicyをアタッチします。

CloudWatchAgentAdminPolicy

CloudWatchAgentAdminPolicyポリシーを見てみました。

AmazonEC2RoleforSSMポリシーと内容がかぶってるステートメントもあります。
ですが、”ec2:DescribeTags”と”ssm:GetParameter” , “ssm:PutParameter”はない(GetPrametersはある)のでアタッチします。

必要なものだけインラインポリシーにするのも一つの方法ですが、ポリシーがまるごといらないときにデタッチしやすいのでCloudWatchAgentAdminPolicyポリシーを使います。

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

Systems Manager Servicesの[コマンドの実行]からコマンドを実行します。

AWS-ConfigureAWSPackageを選択します。

  • 対象のEC2インスタンスを選択
  • Action: insatll
  • Name: AmazonCludWatchAgent
  • Version: latest

にしました。

成功しました。

CloudWatchエージェントの設定

EC2にSSHでログインして設定します。

amazon-cloudwatch-agent-config-wizardを実行しました。

Amazon Linux 2 なのでlinuxを選択しました。

EC2を選択しました。

メトリクスの収集をします。

CPUメトリクスも追加します。

追加可能な情報をメトリクスに追加します。

収集間隔を10秒ごとにしました。

より多くの情報を収集してみたかったのでタイプはアドバンスドにしました。

設定ファイルの内容が表示されたので、yesを選択しました。

すでにインストールしているCloudWatxh Logsエージェントがあるか聞かれたので、noを選択しました。
既存のCloudWatxh Logsエージェントがある場合はここでyesを選択することで設定をインポート出来るようです。

ログ収集するかを聞かれるのでyesを選択しました。

ここから先は1ファイルづつ対象を設定していきます。

ログ設定の内容が表示されましたので、yesを選択しました。

SSM パラメータストアに登録する名前は、デフォルトのAmazonCloudWatch-linuxにしました。

リージョンを選択します。
今回はバージニア北部です。

SSMパラメータストアに設定を書き込む認証をどれにするかを聞かれます。
IAMロールを設定することによって、EC2に設定されているアクセスキーを使用します。

成功しました。

ちなみに前述のポリシーでPutParameterがないと、「Error in putting config to parameter store AmazonCloudWatch-linux: AccessDeniedException: 」になります。

CloudWatch Logsエージェントの起動

Systems Managerのコマンド実行から起動します。
amazonCloudWatch-ManageAgentを選択します。

  • 対象のインスタンスを選択
  • Action: Configure
  • Mode: ec2
  • Option Configuration Source: ssm
  • Option Configuration Location: AmazonCloudWatch-linux(パラメータストアに登録した名前)
  • Optional Restart: yes

で実行しました。

結果は成功しました。

結果を確認

このあと、対象のEC2からAMIを作成して起動設定を作成して、AutoScalingで起動してます。

カスタムメトリクスにCWAgentがあります。

ちゃんととれてます。

ログもちゃんととれてます。

一つのAgentでカスタムメトリクスもログも収集できるので便利でした。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

Amazon Linux2のジャンボフレーム

ユーザーガイドのEC2 インスタンスのネットワークの最大送信単位 (MTU)を試 …

AWS CodePipeline クロスアカウントアクセスパイプライン

AWS CodePipelineでクロスアカウントアクセスのパイプライン作成手順 …

AWS Systems Manager Run CommandでEC2 Linuxのユーザーとカレントディレクトリを確認

AWS Systems Manager Run CommandからEC2 Lin …

AWS LambdaでChrome HeadlessドライバをAWS Lambda Layersから使う

この記事はSelenium/Appium Advent Calendar 201 …

AWS Systems Manager Session ManagerでLinuxインスタンスのRun Asサポートを有効にする

AWS Systems Manager Session Managerの設定画面 …

Rocket.ChatをAmazon EC2 Ubuntuサーバーで起動

こちらRocket.Chatを1行でAWS上に導入を参照させていただきました。 …

AWS WAFの個別ルールを設定する

Web ACLを選択して、[Add my own rules and rule …

CloudWatch Logs機密データ保護を設定しました

Amazon CloudWatch Logs を使用して機密データを保護するがリ …

Amazon VPCにオンプレミス検証環境想定プライベートDNSサーバー(BIND)をEC2で起動する

オンプレミス想定の検証で使うために、Amazon VPCにプライベート向けDNS …

IAM Access Analyzerの検出をEventBridgeルールで検知して通知する

やりたかったことは使用可能としているリージョンのIAM Access Analy …