GNU/Linux >> Linux の 問題 >  >> Linux

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

AWS CloudWatchは、AWSクラウドによって提供されるモニタリングサービスです。 AWSは、CPU使用率、ネットワーク入力、ネットワーク出力などのサーバーパラメーターのデフォルトのモニタリングを提供します。AWSCloudWatchは、ディスク使用率やメモリ(RAM)使用率などのカスタムモニタリングに使用できます。カスタム監視の場合、いくつかの手順に従って監視する必要があります。

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

AWSリソースに限定されません

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

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

アプリケーションまたはサーバーのログをAWSCloudWatchに送信するには、CloudWatchエージェントをそれぞれのサーバーにインストールする必要があります。このブログの目標を達成するために、AWSEC2インスタンスを使用します。

ステップ
  1. AWSCloudWatchと通信するためにインスタンスにアタッチされる適切なロール
  2. AWSCloudWatchエージェントのインストール
  3. AWSCloudWatchエージェントの設定
  4. 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、その他のクラウドプロバイダー、またはオンプレミスサーバーでホストされている任意のサーバーからログをプッシュできます。


Linux
  1. Linuxでアプリケーションの起動時間を改善する方法

  2. LinuxでMimeタイプのアプリケーションを見つける方法は?

  3. SSMTPを使用してLinuxターミナルから電子メールを送信する方法

  1. LinuxにSpotifyアプリケーションをインストールする方法

  2. Linuxでjournalctlを使用してログを分析する方法

  3. aws の Amazon Linux AMI で node.js アプリケーションを自動的に開始するにはどうすればよいですか?

  1. Linuxターミナルでログに記録されたユーザーにメッセージを送信する方法

  2. Linux で Mac OS X アプリケーションに署名する方法は?

  3. AWS Linux に Fish Shell をインストールする方法