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インスタンスを使用して目標を達成します。
手順
- AWS CloudWatchと通信するためにインスタンスに適切なロールをアタッチする
- AWS CloudWatchエージェントのインストール
- AWS CloudWatchエージェントの設定
- AWS CloudWatchポータルでのログのテスト
IAMロール
アプリケーションまたはサーバーログをAWS CloudWatchに送信するには、適切な権限を持つロールをEC2インスタンスにアタッチする必要があります。このロールは、AWS CloudWatchでの変更を許可します。
以下のポリシーを含む必要があります。
- CreateLogStream
- DescribeLogStream
- CreateLogGroup
- PutLogEvents
AWS IAMでロールを作成しましょう。
AWSコンソールのサービスリストからIAMセクションに移動します。まだAWSアカウントをお持ちでない場合は、こちらから作成してください。

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 startRHELまたは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設定されたセットアップの確認
AWSアカウントに再度ログインします。
サービスリストでCloudWatchを検索します。
左側のメニューからロググループオプションを選択します。
設定で指定したlog_stream_nameパラメータの値を検索します。
サーバーからAWS CloudWatchにログがプッシュされているのが確認できます。
結論
サーバーからAWS CloudWatchにプッシュされる任意のログファイルを設定できます。これはAWSクラウド上にないサーバーに対しても設定できます。つまり、Azure、GCP、または他のクラウドプロバイダー上にホストされているサーバーや、オンプレミスサーバーからログをプッシュすることができます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。