24時間365日フルマネージドホスティングサービスのデイーネット

  • HOME
  •  
  • 技術情報ブログ
  •  
  • CentOS7にCloudWatchエージェントを導入し、カスタムメトリクスを収集する

CentOS7にCloudWatchエージェントを導入し、カスタムメトリクスを収集する

どうも、相変わらずSKYRIMがアナザースカイな森屋です。

CloudWatchは監視サーバ不要で様々なAWSサービスの監視を行えるため、非常に強力なツールです。

しかし、例えばEC2インスタンスのメモリ使用率など、デフォルトでは収集できないデータ(メトリクス)が有るんですね。

こうしたメトリクスを収集する文脈において、しばしばカスタムメトリクスを収集すると言われます。

カスタムメトリクスを収集する方法としては、収集スクリプトを作ってCloudWatchに投げ込む方法と、今回取り扱う「CloudWatchエージェント」に収集してもらう方法がメジャーかと思います。

本記事の執筆にあたって使用した環境は、東京リージョンで稼働する「CentOS7 64bit」です。

とはいえ、他のリージョンやOSでも、ところどころ読み替える必要はありますが、使える記事になっていると思います。

大まかな流れ

公式手順はコチラです。

本記事では、公式手順をベースに必要な説明だけ抜粋してお届けします。

1.ロール類の調整(EC2からCloudWatchへのアクセス、AWS System Managerとの連携)

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

3.CloudWatchエージェントの設定と開始


1. ロール類の調整

↓の辺りのお話です。

CloudWatch エージェントで使用する IAM ロールおよびユーザーを作成する - Amazon CloudWatch

監視対象のEC2に割り当てるIAMロールを作成します。ざっと以下の権限が必要になります。

  • EC2からCloudWatchに情報を書き込むため
  • AWS Systems Managerで設定した内容を読む


ロールの作成

EC2が、CloudWatchやAWS System Managerに接続するため、ロールを割り当てます。

公式手順ではポリシーを新規作成していますが、実はAWS管理ポリシーが存在しています。

「CloudWatchAgentAdminPolicy」というポリシー名なので、今回はこれを使いましょう。

「CloudWatchAgentServerPolicy」というポリシーでも良いですが、本記事ではこの後にAWS System Managerへの書き込み権限を要するため前者を使います。

ちなみにAWS管理ポリシーとは、AWS側の様々な変更に合わせて、IAMポリシーの変更が必要になる場合、AWSが上手いこと調整してくれるポリシーのことです。 公式手順の様にJSONで書いちゃうと、自分で調整する必要があるため、AWS管理ポリシーは積極的に利用していきましょう。

では、ロールを作っていきましょう。

マネージメントコンソールにログインし、IAMのダッシュボードを開きます。

左ペインの[ロール]を選択し、[ロールの作成]を選択。

[AWSサービス] 内の [EC2] を選択し、[次のステップ: アクセス権限] を選択。

ロール作成①.PNG


フィルターに以下を入力し、それぞれにチェックを付け、[次のステップ: 確認] を選択。

AmazonEC2RoleforSSM , CloudWatchAgentAdminPolicy

ロール作成②.PNG


ロール名やロールの説明を適当に入力し、「信頼されたエンティティ」に設定したポリシーが有ることを確認後、[ロールの作成] を選択して完了。 私は、ロール名を「CloudWatchAgentAdminRole」としました。

ロール作成③.PNG


ロールを監視対象にアタッチ

作成した「CloudWatchAgentAdminRole」を、監視対象にアタッチします。

アタッチすると、監視対象がロールの持つアクセス権限を借りることができます。

「借りる」としたのは、ロールは付けて外してするものなので、「専用のロール」とすると違和感が有るためです。

EC2インスタンス画面で、監視対象にチェックを入れ [アクション]→[インスタンスの設定]→[IAMロールの割り当て/置換]を選択。

ロール割当①.PNG


「IAMロール」のプルダウンリストから、作成したロール名を選択し、[適用]を選択することで、アタッチ完了。

私の場合は、[CloudWatchAgentAdminRole] を選択。

ロール割当②.PNG

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

↓の辺りのお話です。

開始方法: CloudWatch エージェントを最初のインスタンスにインストールする - Amazon CloudWatch

インストール方法として、

  • AWS Systems Managerからインストールする
  • コマンドラインでインストールする

の二通りが有ります。今回は、先に書いた通り前者のパターンで進めます。

まずはSSM Agentをインストール

ページが少し移りまして、↓の辺りのお話です。

Amazon EC2 Linux インスタンスに SSM エージェント を手動でインストールする - AWS Systems Manager

監視対象にて、以下の手順を実施して下さい。

# mkdir /tmp/ssm
# yum install https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm
    ※URL中のリージョンは環境に合わせて変えて下さい
# systemctl status amazon-ssm-agent
    ※起動していることを確認。してなかったら起動
# systemctl is-enabled amazon-ssm-agent
    ※enabledであることを確認。違ったら設定


AWS System Manager経由のCloudWatchエージェントのインストール

ページが戻りまして、↓の「Run Command を使用して CloudWatch エージェントパッケージをダウンロードする」の辺りからのお話です。

開始方法: CloudWatch エージェントを最初のインスタンスにインストールする - Amazon CloudWatch

正直「コマンドラインを使用して CloudWatch エージェントを~」の方が早いですが、せっかくなのでAWSサービス使っていきましょう。

AWS Systems Managerの[Run Command] を選択し、[コマンドを実行] を選択します。

コマンド実行①.PNG


検索フィールドで、[ドキュメント名のプレフィックス] [等しい] [AWS-ConfigureAWSPackage] という具合に入力し、表示された「AWS-ConfigureAWSPackage」にチェックを入れます。

コマンド実行②.PNG


ターゲットは[インスタンスの手動選択] を選択の上で監視対象インスタンスにチェックを入れます。

コマンドのパラメータでは、以下を設定します。

Action : Install
Name : AmazonCloudWatchAgent
Version : latest

その他の設定項目は今回は無視し、[実行] を選択すると、インストールが実行されます。

コマンドの実行結果等が確認できるページに飛びますが、更新する前は「ターゲットと出力」のステータスは進行中になっていると思います。

監視対象インスタンスにチェックを入れて、[出力の表示] を選択してみましょう。

コマンド実行③.PNG


成功した様ですね。この状態ではまだ使えないので、設定と開始を行っていきましょう。

コマンド実行④.PNG


3. CloudWatchエージェントの設定と開始

↓の辺りのお話です。

ウィザードを使用して CloudWatch エージェント設定ファイルを作成する - Amazon CloudWatch

エージェントが収集するメトリクスは、設定ファイルに基づいています。

作成・編集は自らJSON形式の設定ファイルを作成するか、もしくは設定ウィザードを監視対象のPC上で行う必要があります。

今回は設定ウィザードを利用しますが、「作成した設定をAWS Systems Managerのパラメータストアに保管する」という機能があります。

このために、「CloudWatchAgentAdminPolicy」が必要だったわけですね。

パラメータストア上に設定ファイルを保管することで、他のサーバを監視する際に使い回せます。

言い換えると、二台目以降においては、このポリシーは不要です。

代わりに「CloudWatchAgentServerPolicy」を割り当てた方がセキュアです。

設定ウィザードで設定ファイルを作成

ウィザードの実行は簡単です。監視対象での作業に移ります。

既に監視対象に設置されている、以下のプログラムを実行するのみです。 実行すると、いろいろ質問されるので、適宜答えます。

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

執筆時点、質問は以下の通りでした。

1. 監視対象のOSはLinux?Windows? → linux
2. 監視対象はEC2?もしくはオンプレミス? → EC2
3. CPUとかメモリとか、ホストのメトリクスを収集する? → したい
4. CPUのメトリクスはコア毎に収集する?CloudWatchの追加料金が発生するけど。 → t2.microで作ったので要らない
5. 利用可能なディメンションを追加する? → 追加する
6. メトリクスは何秒単位で収集する?全部のメトリクスに適用されるけど、個別にしたかったらJSON編集してね。 → 60秒
7. 事前定義されたメトリクスセットの中から、どのレベルを収集しますか? → ベーシック。ただ入れたいだけだったので、メモリだけでも取れたら良いなと
   ※AWSドキュメントの「CloudWatch エージェントの事前定義されたメトリクスセット」または以下のスクショ参照
8. 表示した設定ファイルで大丈夫? → 大丈夫
9. インポートしたいCloudWatch Log Agentの設定ファイルは有る? → 無い
10. 何かのログ監視したい? → はい(ログファイルのパスを聞かれるので、ここでは[/var/log/messages]を指定。次はロググループ名を聞かれるが、デフォルトのmessagesを回答)
11. 他に監視したいログファイルは有る? → 無い
12. 表示した設定ファイルを確認した上で、これをSSMパラメータストアに保管したい? → したい
13. 保管する場合のパラメータストア名は何が良い? → AmazonCloudWatch-CentOS7
14. どこのリージョンに保管する? → ap-northeast-1
15. パラメータストアに転送するとき、どっちのクレデンシャルを使えば良い? → デフォルトの1を回答


※事前定義されたメトリクスセット

事前定義メトリクス一覧.PNG


全ての回答後、以下が表示されたら成功です。

Successfully put config to parameter store AmazonCloudWatch-CentOS7.
Program exits now.


CloudWatchエージェントの開始

マネジメントコンソールでの作業に戻ります。

AWS Systems Managerの[Run Command] を選択し、[コマンドの実行] を選択します。(先ほどインストール時のコマンドが表示されてますが、無視して下さい)

検索フィールドで、[ドキュメント名のプレフィックス] [等しい] [AmazonCloudWatch-ManageAgent] という具合に入力し、表示された「AmazonCloudWatch-ManageAgent」にチェックを入れます。

ターゲットは[インスタンスの手動選択] を選択の上で監視対象インスタンスにチェックを入れます。

コマンドのパラメータでは、以下を設定します。

    Action : configure
    Mode : ec2
    Optional Configuration Source : ssm
    Optional Configuration Location : AmazonCloudWatch-CentOS7   (ウィザードで指定した設定ファイル名を入力)
    Optional Restart : yes

その他の設定項目は今回は無視し、[実行] を選択すると、設定の適用とCloudWatchエージェントの開始が実行されます。

コマンドの実行結果等が確認できるページに飛びますが、更新する前は「ターゲットと出力」のステータスは進行中になっていると思います。

監視対象インスタンスにチェックを入れて、[出力の表示] を選択してみましょう。

成功していたら、無事CloudWatchエージェントによる、様々なメトリクスの取得が開始されていることでしょう!

CloudWatchのコンソールにて、[メトリクス] → [全てのメトリクス] → [CWAgent] と進めば、あとは好きなメトリクスを選択して確認して下さい。

CloudWatch画面.PNG


まとめ

PSVRの値下げが発表されたので、みなさんも買ってSKYRIMの世界に移住しましょう!

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar