AWS CloudWatchは、AWSクラウドによって提供されるモニタリングサービスです。 AWSは、CPU使用率、ネットワーク入力、ネットワーク出力などのサーバーパラメーターのデフォルトのモニタリングを提供します。AWSCloudWatchは、ディスク使用率やメモリ(RAM)使用率などのカスタムモニタリングに使用できます。カスタム監視の場合、いくつかの手順に従って監視する必要があります。
同様に、AWSCloudWatchを使用してサーバーまたはアプリケーションのログを監視できます。これは明らかな理由でAWSのデフォルト機能ではないため、要件に従って設定できます。モニタリングのためにAWSCloudWatchに送信する必要のあるログはユーザーによって異なります。
AWSリソースに限定されません
AWS CloudWatchがAWSサービスであっても、EC2インスタンスにのみ使用できるという意味ではなく、他のクラウドプロバイダーのVMや物理ドライブ上のVMからアプリケーションまたはサーバーログを送信するように設定することもできます。 。
アプリケーションまたはサーバーのログをAWSCloudWatchに送信する方法
アプリケーションまたはサーバーのログをAWSCloudWatchに送信するには、CloudWatchエージェントをそれぞれのサーバーにインストールする必要があります。このブログの目標を達成するために、AWSEC2インスタンスを使用します。
ステップ
- AWSCloudWatchと通信するためにインスタンスにアタッチされる適切なロール
- AWSCloudWatchエージェントのインストール
- AWSCloudWatchエージェントの設定
- AWSCloudWatchポータルでのログのテスト
IAMの役割
アプリケーションまたはサーバーのログをAWSCloudWatchに送信するには、適切なパーミッションでEC2インスタンスにロールをアタッチする必要があります。このロールにより、AWSCloudWatchで変更を加えることができます。
以下のポリシーが含まれている必要があります。
- CreateLogStream
- DescriptionLogStream
- CreateLogGroup
- PutLogEvents
AWSIAMでロールを作成しましょう。
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 CloudWatchAgentを設定しましょう。
このステップでは、実行状態のEC2インスタンスが必要です。必要な方法でインスタンスに接続します。インスタンスに接続する方法は複数あります。 こちらで確認できます。
Amazon Linuxインスタンスをお持ちの場合は、以下の手順に従ってください。
インスタンスに初めてログインする場合は、必ず以下のupdateコマンドを実行してください。
以下の手順では、 AmazonLinuxマシンについて説明します。
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からのログファイルパスがAWSCloudWatchにアップロードされることを示しています。上記の設定では、 log_group_nameパラメータに記載されている名前でAWSCloudWatchにロググループが作成されます。また、 log_stream_nameに記載されている階層があります。バッファ時間については、 buffer_durationの値を変更できます。 buffer_durationのデフォルト値は5000msです。
変更を行ったら、以下のコマンドを実行してアプリケーションを再起動します。 awslogアプリケーションが再起動し、エージェントがAWSCloudWatchへのログのアップロードを開始します。
$ sudo service awslogsd start
AWS CloudWatchAgentをRHELまたはCentOSにインストールして設定するには、以下の手順に従います。
以下のコマンドを実行して、パッケージをダウンロードします。
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_stram_nameパラメーターで指定した値を検索します。
5.ログがサーバーからAWSCloudWatchにプッシュされていることがわかります。
結論
サーバーからAWSCloudWatchにプッシュされるように任意のログファイルを設定できます。これは、AWSクラウド上にないサーバー用に設定できます。つまり、Azure、GCP、その他のクラウドプロバイダー、またはオンプレミスサーバーでホストされている任意のサーバーからログをプッシュできます。