0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Systems Manager セッションマネージャーとCloudWatch Agent の設定手順(Amazon Linux 2023版)

Last updated at Posted at 2025-02-20

AWS Systems Managerのセッションマネージャーを使用してEC2インスタンスにログインする方法と、CloudWatch Agentを使用したログ収集の設定を説明します。この方法ではSSHやRDPを使用せずに、より安全にインスタンスにアクセスし、ログを一元管理できます。

ステップ1: IAMロールの作成

AWS Management Consoleでセッションマネージャーとログ送信用のIAMロールを作成します。

1.1 新しいロールの作成

  1. AWS Management Consoleにログインします
  2. IAM(Identity and Access Management) に移動します
  3. 左側のナビゲーションペインで「ロール」をクリックします
  4. 「ロールを作成」ボタンをクリックします
  5. 「信頼されたエンティティの種類を選択」で「AWS サービス」を選択します
  6. 「ユースケース」から「EC2」を選択します
  7. 「次へ」をクリックします

1.2 ポリシーの追加

  1. 「権限を追加」画面で、以下のポリシーを検索して追加します:

必須ポリシー:AmazonSSMManagedInstanceCore

  • 検索ボックスに「AmazonSSMManagedInstanceCore」と入力
  • 検索結果から該当するポリシーのチェックボックスをチェック
  • このポリシーはセッションマネージャーとSSMエージェント用です

必須ポリシー:CloudWatchAgentServerPolicy

  • 検索ボックスに「CloudWatchAgentServerPolicy」と入力
  • 検索結果から該当するポリシーのチェックボックスをチェック
  • このポリシーはCloudWatch Agentがログを送信するための権限です

確認画面の例:

以下のポリシーが追加されていることを確認してください:
☑ AmazonSSMManagedInstanceCore
☑ CloudWatchAgentServerPolicy

1.3 タグの追加(オプション)

  1. 「次へ」をクリックしてタグの追加画面に進みます
  2. 必要に応じてタグを追加します(例:Environment = Production)
  3. 「次へ」をクリックします

1.4 ロール情報の確認と作成

  1. ロール名を入力します(例:EC2-CloudWatch-SSM-Role
  2. ロールの説明を入力します(例:EC2 instances for CloudWatch and SSM
  3. 「信頼されたエンティティ」が以下のようになっていることを確認します:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  4. 「ロールを作成」をクリックします

1.5 既存のロールにポリシーを追加する場合

既にEC2インスタンスに割り当てられているロールがある場合は、そのロールにポリシーを追加することもできます。

  1. IAM コンソールの「ロール」から、対象のロール名をクリックします
  2. 「権限」タブを開きます
  3. 「ポリシーを追加」ボタンをクリックします
  4. 「既存のポリシーを直接アタッチ」を選択します
  5. 「CloudWatchAgentServerPolicy」を検索して選択します
  6. 「ポリシーを追加」をクリックします

追加後の確認:

アタッチされたポリシー:
- AmazonSSMManagedInstanceCore
- CloudWatchAgentServerPolicy

ステップ2: EC2インスタンスにIAMロールを割り当てる

  1. EC2ダッシュボードに移動します
  2. インスタンスの一覧から、セッションマネージャーでログインしたいインスタンスを選択します
  3. 「アクション」→「セキュリティ」→「IAMロールを変更」を選択します
  4. 作成したIAMロール(例:EC2-CloudWatch-SSM-Role)を選択し、「IAMロールを更新」をクリックします

ステップ3: セッションマネージャーでの接続確認

  1. AWS Management ConsoleでSystems Managerに移動します
  2. 左側のナビゲーションペインから「セッションマネージャー」を選択します
  3. 「セッションの開始」ボタンをクリックします
  4. 接続したいEC2インスタンスを選択します
  5. 「接続」をクリックします
  6. 新しいタブでターミナルが表示され、インスタンスに接続されます

注: Amazon Linux 2023にはSSMエージェントがプリインストールされているため、追加のインストール作業は不要です。

ステップ4: CloudWatch Agentのインストールと設定

Amazon Linux 2023ではCloudWatch Agentを使用することを推奨します。

4.1 CloudWatch Agentのダウンロードとインストール

# パッケージの更新
sudo yum update -y

# CloudWatch Agentのダウンロード
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm

# インストール
sudo rpm -U ./amazon-cloudwatch-agent.rpm

4.2 CloudWatch Agent設定ファイルの作成

CloudWatch Agentの設定方法は2つあります。

方法A: 対話形式のウィザードを使用(推奨)

CloudWatch Agentの設定ウィザードを使用して、対話的に設定ファイルを生成できます。

# 設定ウィザードの実行
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

ウィザードでは以下のような項目について聞かれます:

  1. On which OS are you planning to use the agent?3 (Linux) を選択
  2. Are you going to use EC2 Instance Profile credentials or IAM User credentials?1 (EC2 Instance Profile) を選択
  3. Do you want to monitor any host metrics?yes を選択
  4. Do you want to monitor CPU metrics?yes
  5. Do you want to monitor mem metrics?yes
  6. Do you want to monitor disk metrics?yes
  7. Do you want to monitor netstat metrics?no
  8. Do you want to add custom metrics to monitor?no
  9. Do you want to monitor any log files?yes
  10. Log file path/var/log/messages/var/log/secure などを追加
  11. Log group name/aws/ec2/system-logs などを入力
  12. Log stream name{instance_id} を入力

ウィザード完了後、設定ファイルが以下の場所に生成されます:

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

生成された設定ファイルを確認します:

sudo cat /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

方法B: 手動で設定ファイルを作成

手動で設定ファイルを作成する場合は、以下の手順に従います。

sudo mkdir -p /opt/aws/amazon-cloudwatch-agent/etc/

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json を作成します:

{
  "agent": {
    "run_as_user": "root"
  },
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "/var/log/messages",
            "log_group_name": "/aws/ec2/system-logs",
            "log_stream_name": "{instance_id}",
            "timezone": "Local"
          },
          {
            "file_path": "/var/log/secure",
            "log_group_name": "/aws/ec2/secure-logs",
            "log_stream_name": "{instance_id}",
            "timezone": "Local"
          }
        ]
      }
    }
  },
  "metrics": {
    "namespace": "CWAgent",
    "metrics_collected": {
      "cpu": {
        "measurement": [
          {
            "name": "cpu_usage_idle",
            "rename": "CPU_IDLE",
            "unit": "Percent"
          },
          {
            "name": "cpu_usage_iowait",
            "rename": "CPU_IOWAIT",
            "unit": "Percent"
          }
        ],
        "totalcpu": false,
        "metrics_collection_interval": 60
      },
      "mem": {
        "measurement": [
          {
            "name": "mem_used_percent",
            "rename": "MEM_USED",
            "unit": "Percent"
          }
        ],
        "metrics_collection_interval": 60
      },
      "disk": {
        "measurement": [
          {
            "name": "used_percent",
            "rename": "DISK_USED",
            "unit": "Percent"
          }
        ],
        "metrics_collection_interval": 60,
        "resources": [
          "/"
        ]
      }
    }
  }
}

4.3 CloudWatch Agentの起動と有効化

# CloudWatch Agentの起動
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config \
  -m ec2 \
  -s \
  -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

# ステータス確認
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a query \
  -m ec2

4.4 CloudWatch Agentの自動起動設定

# systemdサービスの有効化
sudo systemctl enable amazon-cloudwatch-agent
sudo systemctl start amazon-cloudwatch-agent

# ステータス確認
sudo systemctl status amazon-cloudwatch-agent

ステップ5: CloudWatch Logsの確認

  1. AWS Management ConsoleでCloudWatchに移動します
  2. 左側のナビゲーションペインから「ログ」→「ロググループ」を選択します
  3. 設定したロググループ(例:/aws/ec2/system-logs)が表示されていることを確認します
  4. ロググループをクリックして、ログストリームを確認します
  5. ログストリームをクリックして、収集されたログを確認します

トラブルシューティング

CloudWatch Agentが起動しない場合

# ログの確認
sudo cat /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

# 設定ファイルの妥当性確認
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a validate-config \
  -m ec2 \
  -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

# 再起動
sudo systemctl restart amazon-cloudwatch-agent

ログファイルにアクセスできない場合

CloudWatch Agentがログファイルの読み取り権限を持たない場合があります。推奨される解決策は、CloudWatch Agentを root ユーザーとして実行することです。

設定ファイルの agent セクションに run_as_user"root" に設定します:

{
  "agent": {
    "run_as_user": "root"
  },
  ...
}

この設定により、CloudWatch Agentは root 権限で実行され、すべてのログファイルにアクセスできます。これは最も簡単で確実な方法です。

設定を変更した後は、以下のコマンドで再起動してください:

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config \
  -m ec2 \
  -s \
  -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

sudo systemctl restart amazon-cloudwatch-agent

ログが表示されない場合

  1. IAMロールに CloudWatchAgentServerPolicy が割り当てられているか確認します
  2. CloudWatch Agentが実行中か確認します:sudo systemctl status amazon-cloudwatch-agent
  3. ログファイルのパスが正しいか確認します
  4. セキュリティグループでアウトバウンドがブロックされていないか確認します

まとめ

これで、Amazon Linux 2023上でセッションマネージャーを使用したログインと、CloudWatch Agentを使用したログ収集の設定が完了しました。この方法はSSHよりもセキュアで、ログ管理も容易です。必要に応じてさらなる設定やアラーム設定を行ってください。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?