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の世界に移住しましょう!

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA