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