0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloud Watch Logsで出力されたログを確認する方法

Last updated at Posted at 2024-01-16

Cloud Watch Logsで出力されたログを確認する方法

インスタンスのApacheのアクセスログ、エラーログを収集したいなあ、いい方法ないかなと思ったときに
Cloud Watch Logsで簡単に取得できることを知ったの記事として残しておきます。

そもそもCloudWatch Logsとは?

CloudWatch LogsはAWSが提供しているログ監視サービスであり、主な機能は以下の通りです。

・インスタンスやサービスログの蓄積ログのモニタリング
・ログのフィルタリング
・ログデータのアーカイブ
・ログデータの分析(CloudWatch Logs Insights)
・ログのアラート化

これにより、基本的なログ監視サービスとしての機能を備えています。また、AWSサービスとの連携が容易であり、例えばCloudTrailなどのマネージドサービスログも数ステップで取得可能です。
同様に、蓄積したログをKinesisに投入してストリーミング処理するなどの応用的な活用も可能です。

前提条件

CloudWatch Logs を利用するには、以下の条件を満たす必要があります。

・AWS アカウントを作成している
・IAM ユーザーに CloudWatch Logs のアクセス権限を付与している

1.インスタンス(EC2)のログ収集

基本的なインスタンスからのログ取得方法を紹介します。
ここではAWS内にインスタンスが設置されているとして話を進めます。
以下はインスタンスの基本情報です。

・インスタンスタイプ:任意
・OS:Amazon Linux 2
・導入ミドルウェア:Apache

今回の例ではWebサーバとしてPublicIPアドレスを持ち、インターネット接続可能な状態と仮定します。
ただし、AWSの抽象化サービスはVPC(仮想ネットワーク)の外に存在しているため、閉域接続のサーバログ取得にはAWS PrivateLinkが必要です。
PrivateLinkはVPCにインターフェイスVPCエンドポイントを作成することで利用でき、セキュアでスケーラブルな方法でCloudWatchを接続できます。

2.IAM ロールの作成

CloudWatch Logs は、EC2 インスタンスからログを収集するために、IAM ロールを使用します。IAM ロールとは、AWS リソースにアクセスするための権限を付与するオブジェクトです。

  • IAM ロールを作成するには、以下の手順で行います。
    1.IAM コンソールを開きます。
    2.「ロール」タブをクリックします。
    3.「ロールの作成」をクリックします。
    4.「ロールのタイプ」で「AWS サービス」を選択します。
    5.「サービス」で「CloudWatch Logs」を選択します。
    6.「ロールの名称」にロールの名前を入力します。
    7.「ポリシー」で「CloudWatch Logs エージェントアクセス権限ポリシー」を選択します。
    8.「ロールの作成」をクリックします。
    9.IAM ロールの作成が完了したら、ロールの ARN をメモしておきます。

3.ロググループの作成

ロググループは、ログを論理的に分類するための単位です。

  • ロググループを作成するには、以下の手順で行います。
    1.CloudWatch Logs コンソールを開きます。
    2.「ロググループ」タブをクリックします。
    3.「ロググループの作成」をクリックします。
    4.「ロググループ名」にロググループの名前(TestSV_Apache)を入力します。
    5.「ロググループの説明」にロググループの説明を入力します。
    6.「ロググループの作成」をクリックします。
    7.ロググループの作成が完了したら、ロググループの ARN をメモしておきます。

4.ログストリームの作成

ログストリームは、ロググループ内のログを論理的に分類するための単位です。

  • ログストリームを作成するには、以下の手順で行います。
    1.CloudWatch Logs コンソールを開きます。
    2.「ロググループ」タブをクリックします。
    3.作成したロググループをクリックします。
    4.「ログストリームの作成」をクリックします。
    5.「ログストリーム名」にログストリームの名前(TestSV_Apache)を入力します。
    6.「ログストリームの説明」にログストリームの説明を入力します。
    7.「ログストリームの作成」をクリックします。
    8.ログストリームの作成が完了したら、ログストリームの ARN をメモしておきます。

5.ログ収集エージェントのインストール

ログ収集エージェントは、EC2 インスタンスからログを収集するためのソフトウェアです。

  • ログ収集エージェントをインストールするには、EC2 インスタンスに SSH 接続して行います。
    1.EC2 インスタンスに SSH 接続します。
    2.以下のコマンドを実行して、CloudWatch Logs Agent のインストールパッケージをダウンロードします。
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/latest/amazon-cloudwatch-agent.rpm

3.以下のコマンドを実行して、インストールパッケージをインストールします。

sudo yum install amazon-cloudwatch-agent.rpm

6.設定ファイルの作成

  • 以下のコマンドを実行して、ログ収集エージェントの設定ファイルを作成します。
sudo vi /etc/amazon/cloudwatch-agent/config.json

7.CloudWatch Logs エージェントの設定

CloudWatch Logs エージェントの設定は、/etc/awslogs/awslogs.conf ファイルで行います。
このファイルの設定例を以下に示します。

[Apache_AccessLog]
log_group_name = TestSV_Apache
log_stream_name = {instance_id}_accesslog
file = /var/log/apache2/access.log
datetime_format = %a %b %d %H:%M:%S %Y
initial_position = start_of_file
buffer_duration = 5000

[Apache_ErrorLog]
log_group_name = TestSV_Apache
log_stream_name = {instance_id}_errorlog
file = /var/log/apache2/error.log
datetime_format = %a %b %d %H:%M:%S %Y
initial_position = start_of_file
buffer_duration = 5000
  • ロググループ名
    ロググループ名は、CloudWatch Logs 上にロググループとして表示される名前になります。わかりやすい名称をつけるとよいでしょう。先に CloudWatch Logs にて作成し指定することもできます。

  • ログストリーム名
    ログストリーム名は、CloudWatch Logs に送信されるログの固有の名前になります。デフォルトでは、ロググループ名とインスタンス ID が連結されます。

  • ファイル
    ログを収集するファイルのパスを指定します。末尾にワイルドカードを使うこともできます。

  • 日付フォーマット
    ログからタイムスタンプを取得する日付フォーマットを指定できます。特に指定がなければデフォルトで結構です。

  • 初期位置
    ログファイルの読み込み開始位置を指定することができます。start_of_file(最初から全て)、またはend_of_file(新規のみ)を指定します。

  • バッファ期間
    ログイベントのバッチ期間を指定します。最小値は 5000ms で、デフォルト値は 5000ms です。特に指定がなければこのままで結構です。

前述の設定例では、Apache のアクセスログとエラーログを、TestSV_Apache というロググループに集約しています。

この設定では、ロググループ名とログストリーム名を同じにすることで、アクセスログとエラーログを同じロググループに集約しています。
また、日付フォーマットは、Apache のログファイルのフォーマットに合わせています。

  • ログ収集エージェントの設定の注意点
    ロググループ名は、CloudWatch Logs 上で一意となるようにする必要があります。
    ログストリーム名は、ロググループ内で一意となるようにする必要があります。
    ファイルパスは、ログファイルが存在するパスを指定する必要があります。
    日付フォーマットは、ログファイルのフォーマットと一致するようにする必要があります。
    ログ収集エージェントの設定が完了したら、ログ収集の確認を行います。CloudWatch Logs コンソールで、作成したロググループをクリックして、ログストリームにログが表示されていることを確認してください。

ログ収集の確認

ログ収集が正常に行われていることを確認するには、以下の手順を実行します。

  1. CloudWatch Logs コンソールで、作成したロググループをクリックします。
  2. 「ログストリーム」タブをクリックします。
  3. ログストリームにログが表示されていることを確認します。
    ログ収集が正常に行われていれば、Apache のアクセスログとエラーログが表示されます。

まとめ

CloudWatch Logs エージェントの設定方法について、Apache ログを例に解説しました。

CloudWatch Logs エージェントは、EC2 インスタンスからログを CloudWatch Logs に送信するための便利なツールです。
この記事を参考に、ぜひ CloudWatch Logs エージェントを活用して、EC2 インスタンスのログ収集を行ってみてください。

応用編

CloudWatch Logs エージェントは、ログの送信先として、CloudWatch Logs 以外にも、Amazon S3、Amazon Kinesis Data Firehose、Amazon Elasticsearch Service などを指定できます。
また、ログの収集条件や、ログの送信方法などをカスタマイズすることもできます。

以下の例は、CloudWatch Logs エージェントを応用した活用方法です。

  • ログの集約
    複数の EC2 インスタンスから生成されるログを、1 つのロググループに集約して管理することができます。

  • ログの分析
    CloudWatch Logs Insights を使用して、ログを分析することができます。

  • ログの可視化
    Amazon CloudWatch Dashboard を使用して、ログを可視化することができます。

ご自身の環境や目的に合わせて、CloudWatch Logs エージェントを活用してみてください。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?