こんにちは。
プラットフォーム技術部の齊藤(沙)です。

システムを構築し運用するときに切っても切っても切り離せないのが監視ですね。
監視レベルに差はあるものの、システムを運用する上で監視はなくてはならないものでしょう。

そこで、今回は2017年12月にリリースされた Amazon CloudWatch Agentについてご紹介します。

これは今までAmazon CloudWatchへ監視データやログファイルを送信するためにあった様々なツールを統一したものです。

クラウドでもオンプレミスでも、LinuxでもWindowsでも実行でき、メトリクスとログファイルを取り扱えます。

Amazon CloudWatch Agentにより収集されるメトリクスについては、こちらに詳細が載っています。

今回はオンプレミスサーバーの代わりに自分のPC上の仮想マシン(VM)へAmazon CloudWatch Agentを導入し、AWSで監視する設定をご紹介します。

利用するAWSサービス

以下のAWSサービスを利用します。

Amazon CloudWatchAmazon CloudWatch(以下、CloudWatch)
AWSリソースと、AWS で実行されているアプリケーションをリアルタイムでモニタリングするサービス
AWS Systems ManagerAWS Systems Manager(以下、SSM)
AWS で利用しているインフラストラクチャを可視化し、制御するためのサービス
AWS Identity and Access ManagementAWS Identity and Access Management(以下、IAM)
AWS リソースへのアクセスを安全に制御するためのウェブサービス

導入方法

VMをCloudWatchで監視出来るまでの道のりは以下の通りです。(前提:OSはCentOS7/AWS CLIをVMに導入済み)
今回はSSMでVMを管理出来る状態も見たいので、SSMを利用した手順としています。

  1. CloudWatch Agentに必要なIAMユーザー作成
  2. SSMにVMを登録
  3. CloudWatch Agentを設定
  4. CloudWatch Agentを実行

AWSコンソールでの作業とVMでの作業が混在するため、各手順の最初に◆マーク◆で作業環境を記載しています。

CloudWatch Agentに必要なIAMユーザー作成

◆AWSコンソール上での作業◆
CloudWatch AgentがCloudWatchにメトリクスを書き込むために必要なIAMユーザーを作成します。また今回はSSMを使用してCloudWatch Agentをインストール・設定するため、必要なポリシーは以下の2つとなります。

以降の作業でユーザーを利用するため、作成後にはアクセスキーIDとシークレットアクセスキーをメモしておいてくださいね。

  • CloudWatchAgentServerPolicy
  • AmazonEC2RoleforSSM

IAM Management Console のナビゲーションペインからユーザーを選択し、以下の設定値でIAMユーザーを作成してください。

— IAMユーザー作成・・各設定値 —
パラメータ設定値備考
ユーザー名watchtest1必須
ユーザー名には半角英数字のほかに _+=,.@- のいずれかを使用できます
アクセスの種類プログラムによるアクセス必須、アクセスキー IDシークレットアクセスキーを有効にします
アクセス許可の設定既存のポリシーを直接アタッチ
上記2個のポリシーを選択
必須

補足

必須ではないですが、同一のCloudWatch Agent設定ファイルをSSMのParameter Storeに保存して複数サーバーから利用出来るようにするには別のIAMユーザーが必要になります。必要なポリシーは以下の2つです。同一の設定ファイルを利用する機会は多いと思うので、今回はこのIAMユーザーも作成します。

  • CloudWatchAgentAdminPolicy
  • AmazonEC2RoleforSSM

IAM Management Console のナビゲーションペインからユーザーを選択し、以下の設定値でIAMユーザーを作成してください。

— IAMユーザー作成(任意)・・各設定値 —
パラメータ設定値備考
ユーザー名watchtest2必須
ユーザー名には半角英数字のほかに _+=,.@- のいずれかを使用できます
アクセスの種類プログラムによるアクセス必須、アクセスキー IDシークレットアクセスキーを有効にします
アクセス許可の設定既存のポリシーを直接アタッチ
上記2個のポリシーを選択
必須

SSMへVMを登録

早速CloudWatch AgentをVMにダウンロードしたいのですが、その時に使用するSSMのSystems Manager Run Command はSSMにVMを登録しないと利用出来ません。ここではSSMのセットアップについて説明します。

サービスロールを作成

VMとSSMが通信するために、SSMに対して権限を付与します。

◆VMでの作業◆
以下の信頼ポリシー (この例では SSMService-Trust.json) のテキストファイルを作成します。ファイル拡張子 (.json) を付けてこのファイルを保存します。ファイルの配置場所の指定はありません。

ちなみに、上記のVersionとはAWS側が指定している日付ですので、このファイルを作成した日付などへ変更すると次のコマンド実行時に以下のようなエラーになってしまいます。

「An error occurred (MalformedPolicyDocument) when calling the CreateRole operation: The policy must contain a valid version string」

次に、上で作成したファイル(SSMService-Trust.json)を配置したディレクトリ上で以下のコマンドを実行し、サービスロール(SSMServiceRole)を作成します。

最後に、以下のコマンドを実行してSSMからVMへコマンドを実行出来るようにします。

VMのアクティベーションを作成

このアクティベーションを利用することにより、オンプレミス・VMを問わずあらゆるサーバーを簡単に登録して、SSM で管理出来るようになります。

◆VMでの作業◆
以下のコマンドを実行してアクティベーションを作成します。

— アクティベーション作成・・オプションについて–
オプション説明
default-instance-nameマネージドインスタンスのデフォルト名
iam-role1つ前の手順で作成したサービスロール名を選択
registration-limitAWS に登録するサーバーと VM の合計数を指定
デフォルトは 1
expiration-dateアクティベーションの有効期限
作成日から30日以内を指定(30日より長い期限だとエラーになります)
デフォルトは1日
regionSSMをサポートしているリージョンを指定する
リンク先のRegion列を指定
デフォルトはus-west-2(米国西部オレゴン)

正常に実行されるとアクティベーションコードとアクティベーション ID が出力されるので、それらはメモしておきます。

AWSコンソール上でも以下のように認識されています。

アクティベーションの作成

SSMへVMを登録

AWSリージョンからSSM エージェントをダウンロードしてVMにインストールします。それにより、SSMにそのVMがマネージドインスタンスだと認識されます。

◆VMでの作業◆
以下のコマンドを実行します。
“activation-code” ”activation-id” は、アクティベーション作成時にメモした文字列に置き換えます。

コマンド実行後、「RegistrationKey does not exist」や「Error occurred fetching the seelog config file path:~」と最初に出力されますが少し待つと「Successfully registered the instance with AWS SSM using Managed instance-id:****」となり、終了します。

正常に登録されると、VMのIPアドレス・コンピューター名(ホスト名)が認識され、「Pingの状態」がオンラインとなります。

これにてようやく、SSMへのVM登録が完了です。

SSMにVMがマネージドインスタンスだと認識させる。

CloudWatch Agentを設定

CloudWatch Agentインストールと設定について説明します。

CloudWatch Agentインストール

◆AWSコンソール上での作業◆
SSMのナビゲーションペインから「ランコマンド」、「コマンドを実行」を選択します。他、設定値は以下を参照下さい。

— CloudWatch Agentインストール・・各設定値 —
パラメータ設定値備考
コマンドのドキュメントAWS-ConfigureAWSPackage
Actioninstall
NameAmazonCloudWatchAgent
Versionlatestデフォルトは最新版をインストール
ターゲットインスタンスの手動選択前の手順で作成したマネージドインスタンスを指定していることを確認する
今回は「MyServers」

正常終了すると以下のように、「ステータス」が成功となります。

コマンドの実行

CloudWatch Agentを設定

◆VMでの作業◆
始めに、以下コマンドで AmazonCloudWatchAgent プロファイルを作成します。コマンド実行時に、アクセスキーIDを求められるため”CloudWatch Agentに必要なIAMユーザー作成”にて作成した一つ目のIAMユーザー(今回はwatchtest1)のアクセスキーIDとシークレットキーを指定してください。プロキシ・認証情報・リージョン情報が必要であれば、/opt/aws/amazon-cloudwatch-agent/etc/common-config.tomlを編集します。(ここでは割愛します。)

続いて、設定ファイルを作成します。ウィザードと設定ファイル手動作成の二種類方法があるが、今回はウィザードについて説明します。ウィザードでは、一連の質問に答えることで簡単に設定ファイルが作成されます。ウィザード実行コマンドと質問内容は以下の通りです。質問に対する回答もデフォルト値が示されており、選択しやすくなっています。

正常終了すると、以下が表示されます。

設定ウィザードで作成したAmazonCloudWatch-linuxは、SSMのナビゲーションペインからパラメータストアを選択すると以下のように確認出来ます。

パラメータの作成

今回はデフォルト(Basic)で監視対象になっていない、「確率されたTCP接続の数」を監視出来るように設定ファイルを変更しましょう。

上記のキャプチャ画面からAmazonCloudWatch-linuxを選択し、編集を押下すると直接編集出来ます。
以下を設定ファイルに追加し変更の保存を押下すると、直ぐに反映されます。

— 各パラメータについて —
パラメータ意味
netstat収集する TCP 接続状態と UDP 接続メトリクスを指定
measurement収集する netstat メトリクスの配列を指定 複数指定可能
metrics_collection_intervalnetstat メトリクスを収集する頻度を指定

CloudWatch Agentを実行

◆AWSコンソール上での作業◆
CloudWatch Agentをインストールした時と同様に、SSMのナビゲーションペインから「ランコマンド」、「コマンドを実行」を選択します。他、設定値は以下を参照下さい。

— CloudWatch Agent実行・・各設定値 —
パラメータ設定値備考
コマンドのドキュメントAmazonCloudWatch-ManageAgent
Actionconfigure設定
ModeonPremise今回はVMのため
Optional Configuration Sourcessm設定ファイルの保存
Optional Configuration Location
AmazonCloudWatch-linux手前の手順にて、SSMのParameter Storeへ保存する設定ファイル名に指定した文字列を記載
ターゲットインスタンスの手動選択CloudWatch Agentをインストールしたサーバーを選択
今回は「MyServers」

CloudWatch 結果

上記導入手順完了し、CloudWatchにてダッシュボードを作成すると以下のようにデータを取得出来ていることを確認出来ました。

CloudWatchにて作成したダッシュボード

まとめ

ここまでで、AWS Systems ManagerにVMを登録しランコマンドを使用して、Amazon CloudWatch Agentをセットアップ・監視出来るところまで確認しました。

1台のみの監視設定をやってみましたが、複数台のサーバーを監視する場合もパラメータストアを利用して簡単に設定出来そうですね。

次回はCloudWatch Logの利用方法についても検証していきたいです。

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter で「株式会社アークシステム」をフォローしよう!

AWS Systems ManagerとCloudWatchでオンプレミスサーバーを監視しよう!https://devlog.arksystems.co.jp/wp-content/uploads/2018/06/a11b4bb3ba448d1fa402ac3dc62cc91f.jpghttps://devlog.arksystems.co.jp/wp-content/uploads/2018/06/a11b4bb3ba448d1fa402ac3dc62cc91f-150x150.jpgsachi-saitoプラットフォーム技術部クラウド利用技術AWS,システム監視,Amazon CloudWatch,AWS Systems Manager,IAMこんにちは。 プラットフォーム技術部の齊藤(沙)です。 システムを構築し運用するときに切っても切っても切り離せないのが監視ですね。 監視レベルに差はあるものの、システムを運用する上で監視はなくてはならないものでしょう。 そこで、今回は2017年12月にリリースされた Amazon CloudWatch Agentについてご紹介します。 これは今までAmazon CloudWatchへ監視データやログファイルを送信するためにあった様々なツールを統一したものです。 クラウドでもオンプレミスでも、LinuxでもWindowsでも実行でき、メトリクスとログファイルを取り扱えます。 Amazon CloudWatch Agentにより収集されるメトリクスについては、こちらに詳細が載っています。 今回はオンプレミスサーバーの代わりに自分のPC上の仮想マシン(VM)へAmazon CloudWatch Agentを導入し、AWSで監視する設定をご紹介します。 利用するAWSサービス 以下のAWSサービスを利用します。Amazon CloudWatch(以下、CloudWatch) AWSリソースと、AWS で実行されているアプリケーションをリアルタイムでモニタリングするサービス AWS Systems Manager(以下、SSM) AWS で利用しているインフラストラクチャを可視化し、制御するためのサービス AWS Identity and Access Management(以下、IAM) AWS リソースへのアクセスを安全に制御するためのウェブサービス導入方法 VMをCloudWatchで監視出来るまでの道のりは以下の通りです。(前提:OSはCentOS7/AWS CLIをVMに導入済み) 今回はSSMでVMを管理出来る状態も見たいので、SSMを利用した手順としています。CloudWatch Agentに必要なIAMユーザー作成 SSMにVMを登録 CloudWatch Agentを設定 CloudWatch Agentを実行AWSコンソールでの作業とVMでの作業が混在するため、各手順の最初に◆マーク◆で作業環境を記載しています。 CloudWatch Agentに必要なIAMユーザー作成 ◆AWSコンソール上での作業◆ CloudWatch AgentがCloudWatchにメトリクスを書き込むために必要なIAMユーザーを作成します。また今回はSSMを使用してCloudWatch Agentをインストール・設定するため、必要なポリシーは以下の2つとなります。 以降の作業でユーザーを利用するため、作成後にはアクセスキーIDとシークレットアクセスキーをメモしておいてくださいね。CloudWatchAgentServerPolicy AmazonEC2RoleforSSMIAM Management Console のナビゲーションペインからユーザーを選択し、以下の設定値でIAMユーザーを作成してください。-- IAMユーザー作成・・各設定値 --パラメータ 設定値 備考ユーザー名 watchtest1 必須 ユーザー名には半角英数字のほかに _+=,.@- のいずれかを使用できますアクセスの種類 プログラムによるアクセス 必須、アクセスキー IDとシークレットアクセスキーを有効にしますアクセス許可の設定 既存のポリシーを直接アタッチ 上記2個のポリシーを選択 必須補足 必須ではないですが、同一のCloudWatch Agent設定ファイルをSSMのParameter Storeに保存して複数サーバーから利用出来るようにするには別のIAMユーザーが必要になります。必要なポリシーは以下の2つです。同一の設定ファイルを利用する機会は多いと思うので、今回はこのIAMユーザーも作成します。CloudWatchAgentAdminPolicy AmazonEC2RoleforSSMIAM Management Console のナビゲーションペインからユーザーを選択し、以下の設定値でIAMユーザーを作成してください。-- IAMユーザー作成(任意)・・各設定値 --パラメータ 設定値 備考ユーザー名 watchtest2 必須 ユーザー名には半角英数字のほかに _+=,.@- のいずれかを使用できますアクセスの種類 プログラムによるアクセス 必須、アクセスキー IDとシークレットアクセスキーを有効にしますアクセス許可の設定 既存のポリシーを直接アタッチ 上記2個のポリシーを選択 必須SSMへVMを登録 早速CloudWatch AgentをVMにダウンロードしたいのですが、その時に使用するSSMのSystems Manager Run Command はSSMにVMを登録しないと利用出来ません。ここではSSMのセットアップについて説明します。 サービスロールを作成 VMとSSMが通信するために、SSMに対して権限を付与します。 ◆VMでの作業◆ 以下の信頼ポリシー...ARK Solution Development Division Developers Blog.