AWS CloudWatch · 1 min read · Dec 02, 2025

LinuxアプリケーションログをAWS CloudWatchに送信する方法

AWS CloudWatchは、AWSクラウドが提供する監視サービスです。AWSは、CPU使用率、ネットワークイン、ネットワークアウトなどのサーバーパラメータに対してデフォルトの監視を提供します。AWS CloudWatchは、ディスク使用率やメモリ(RAM)使用率などのカスタム監視にも使用できます。カスタム監視を行うには、監視するための手順をいくつか実行する必要があります。

同様に、AWS CloudWatchはサーバーやアプリケーションのログを監視するためにも使用できます。これは明らかな理由からAWSのデフォルト機能ではないため、要件に応じて設定できます。AWS CloudWatchに監視のために送信するログはユーザーによって異なります。

AWSリソースに限定されない

AWS CloudWatchはAWSサービスですが、EC2インスタンスのみに使用されるわけではなく、他のクラウドプロバイダーのVMや物理ドライブ上のVMからアプリケーションやサーバーログを送信するように設定することもできます。

アプリケーションまたはサーバーログをAWS CloudWatchに送信する方法

アプリケーションまたはサーバーログをAWS CloudWatchに送信するには、該当するサーバーにCloudWatchエージェントをインストールする必要があります。このブログでは、AWS EC2インスタンスを使用して目標を達成します。

手順

  1. AWS CloudWatchと通信するためにインスタンスに適切なロールをアタッチする
  2. AWS CloudWatchエージェントのインストール
  3. AWS CloudWatchエージェントの設定
  4. AWS CloudWatchポータルでのログのテスト

IAMロール

アプリケーションまたはサーバーログをAWS CloudWatchに送信するには、適切な権限を持つロールをEC2インスタンスにアタッチする必要があります。このロールは、AWS CloudWatchでの変更を許可します。

以下のポリシーを含む必要があります。

  • CreateLogStream
  • DescribeLogStream
  • CreateLogGroup
  • PutLogEvents

AWS IAMでロールを作成しましょう。

AWSコンソールのサービスリストからIAMセクションに移動します。まだAWSアカウントをお持ちでない場合は、こちらから作成してください。

サービスリストからIAMを選択

IAMダッシュボードで、ポリシーに移動し、次にポリシーの作成を選択します。

「ポリシーの作成」ページで、「JSON」タブを選択し、デフォルトのポリシーを削除して以下のJSONポリシーを貼り付けます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ]
    }
  ]
}

ポリシーは以下のようになります。完了したら、ページの下部にある「ポリシーのレビュー」ボタンをクリックします。

次のページでは、ポリシーに名前を付ける必要があります。

完了したら、ページの下部にある「ポリシーの作成」ボタンをクリックします。

ポリシーを作成すると、IAMロールページにリダイレクトされます。必要なポリシーがすでに作成されているので、インスタンスにアタッチされるロールを作成します。

「ロールの作成」ページで、「EC2」を選択します。これはEC2インスタンスにロールをアタッチするためです。

ページの左下にある「次へ: 権限」ボタンをクリックします。

次のページでは、ロールにポリシーをアタッチするように求められます。前のステップで提供したポリシーの名前を検索します。見つかったら、リストからポリシーを選択します。

完了したら、ページの下部にある「次へ: タグ」ボタンをクリックします。

次のページでは、ロールにタグを付けるように求められます。これはオプションのステップなので、私はロールにタグを付けずにこのステップをスキップします。

次に進むと、ロールに名前を付けるように求められます。

ロールは数秒で作成されます。

インフラ側の必要なセットアップが完了したので、EC2インスタンス上でAWS CloudWatchエージェントを設定しましょう。

このステップでは、実行中のEC2インスタンスが必要です。接続したい方法でインスタンスに接続します。インスタンスに接続する方法はいくつかあります。こちらで確認できます。

Amazon Linuxインスタンスがある場合は、以下の手順に従ってください。

インスタンスに初めてログインする場合は、以下の更新コマンドを実行してください。

以下の手順はAmazon Linuxマシンに従ってください。

sudo yum update -y

更新が完了したら、以下のコマンドを実行してawslogsパッケージをインストールします。

sudo yum install -y awslogs

パッケージがインストールされたら、/etc/awslogs/awscli.confファイルでリージョンを変更できます。

AWS CloudWatchに送信したいログを設定するために、/etc/awslogs/awslogs.confファイルを開き、以下の行を確認します。**

[/var/log/messages]  
datetime_format = %b %d %H:%M:%S  
file = /var/log/messages  
buffer_duration = 5000  
log_stream_name = {instance_id}  
initial_position = start_of_file  
log_group_name = Amazon-Linux-2

上記の設定は、システムのログファイルパス/var/log/messagesがAWS CloudWatchにアップロードされることを示しています。上記の設定により、log_group_nameパラメータに指定された名前のロググループがAWS CloudWatchに作成されます。また、log_stream_nameに指定された階層も持ちます。バッファ時間については、buffer_durationの値を変更できます。buffer_durationのデフォルト値は5000msです。

変更が完了したら、以下のコマンドを実行してアプリケーションを再起動します。これにより、awslogアプリケーションが再起動し、エージェントがAWS CloudWatchにログをアップロードし始めます。

$ sudo service awslogsd start

RHELまたはCentOSにAWS CloudWatchエージェントをインストールして設定するには、以下の手順に従ってください。

以下のコマンドを実行してパッケージをダウンロードします。

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O

現在の場所にawslogs-agent-setup.pyという名前のファイルが見つかります。ダウンロードしたファイルはPythonスクリプトなので、次のステップのためにマシンにPythonがインストールされている必要があります。Pythonパッケージがインストールされていることを確認し、以下のコマンドを実行します。以下のコマンドでリージョンを指定する必要があります。後で設定で変更することもできます。

python ./awslogs-agent-setup.py --region ap-south-1

上記のコマンドを実行すると、いくつかの入力を求められます。要件に応じて同じ内容を記入してください。

上記のスクリプトは、設定ファイル/var/awslogs/etc/awslogs.confを生成します。スクリプトで提供した詳細は設定ファイルに保存されます。

必要に応じて設定ファイルを変更することもできます。

すべての変更が完了したら、以下のコマンドを実行してエージェントを再起動します。

# systemctl start awslogs

設定されたセットアップの確認

  1. AWSアカウントに再度ログインします。

  2. サービスリストでCloudWatchを検索します。

  3. 左側のメニューからロググループオプションを選択します。

  4. 設定で指定したlog_stream_nameパラメータの値を検索します。

  5. サーバーからAWS CloudWatchにログがプッシュされているのが確認できます。

結論

サーバーからAWS CloudWatchにプッシュされる任意のログファイルを設定できます。これはAWSクラウド上にないサーバーに対しても設定できます。つまり、Azure、GCP、または他のクラウドプロバイダー上にホストされているサーバーや、オンプレミスサーバーからログをプッシュすることができます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。