2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudWatch エージェントを使用してログを収集する

Last updated at Posted at 2024-12-20

この記事はEDOCODE Advent Calendar 2024、12月21日(土)の記事です。

1つ前の記事は、エンジニアのAnneさんによるExploring the consistency of characters generated with AI-image generator toolsでした。
また、グループ親会社であるWanoのAdvent Calendarもありますので、そちらもどうぞ!

はじめに

EDOCODEのエンジニアのKaoriです。Pmallチームに所属しています。Pmallの新規開発にあたって監視でCloudWatch を使うことになりました。そこでサーバー上のログをCloudWatchエージェントを使用してCloudWatch のロググループに飛ばし、一部そのログからアラート設定を行なったので備忘録としてその方法を記載します。

CloudWatch エージェントの設定

CloudWatch エージェントをインストールして設定ファイルを作成します。

CloudWatch エージェントのインストール

CloudWatch エージェントは以下のコマンドでインストールできます。

sudo yum install amazon-cloudwatch-agent

参考: https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html

設定ファイル作成

CloudWatch エージェントをサーバーで実行する前に、CloudWatch エージェント設定ファイルを 1 つ以上作成する必要があります。エージェント設定ファイルは、agentmetricslogstraces 4 つのセクションを持つ JSON ファイルです。このファイルを作成するには、ウィザードを使用するか、一から自分で作成します。また、ウィザードを使用して最初に設定ファイルを作成してから、手動で変更することもできます。

ウィザードを使用する場合は、以下のコマンドで起動できます。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

質問に答えて、サーバーの設定ファイルをカスタマイズできるので簡単に設定ファイルを作成することができます。

作成されたファイルはこのような感じです。

{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "hoge"
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/hoge/hoge.log*",
                        "log_group_class": "STANDARD",
                        "log_group_name": "/var/log/hoge/hoge",
                        "log_stream_name": "{instance_id}",
                        "retention_in_days": -1
                    },
                ]
            }
        }
    },
    "metrics": {
        "aggregation_dimensions": [
            [
                "InstanceId"
            ]
        ],
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            },
            "statsd": {
                "metrics_aggregation_interval": 60,
                "metrics_collection_interval": 10,
                "service_address": ":****"
            }
        }
    },
    "traces": {
        "buffer_size_mb": 3,
        "concurrency": 8,
        "insecure": false,
        "region_override": "ap-northeast-1",
        "traces_collected": {
            "xray": {
                "bind_address": "000.0.0.0:0000",
                "tcp_proxy": {
                    "bind_address": "000.0.0.0:0000"
                }
            }
        }
    }
}

logs の collect_list を追加して、取得したいログファイルを複数設定できます。

file_path

CloudWatch Logs にアップロードするログファイルのパスを指定します。ワイルドカードを使用することもできます。(例: /var/log/system.log*)

log_group_class

新しいロググループに使用するロググループクラスを指定します。有効な値は、STANDARD および INFREQUENT_ACCESS です。

log_group_name

CloudWatch Logs でロググループ名として何を使用するかを指定します。

log_strem_name

CloudWatch Logs でログストリーム名として何を使用するかを指定します。変数として {instance_id}、{hostname}、{local_hostname}、{ip_address} を使用することができます。

retention_in_days

指定されたロググループにログイベントを保持する日数を指定します。CloudWatch エージェントウィザードは、このフィールドのデフォルト値として -1 を使用します。これは、エージェント設定ファイルを作成する場合で、ログ保持の値を指定しない場合に使用されます。ウィザードが設定するこの -1 の値によって、ロググループ内のイベントが期限切れにならないよう指定されます。ただし、この値を手動で -1 に編集しても効果はありません。

CloudWatch エージェントを起動

以下のコマンドを使用しCloudWatch エージェントを起動します。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path

configuration-file-path は、エージェント設定ファイルへのパスに置き換えます。このファイルの名前は、ウィザードで作成した場合は config.json になり、手動で作成した場合は amazon-cloudwatch-agent.json になる場合があります。

アラームの設定

該当のロググループからメトリクスフィルターを選択し、ナビゲーションに沿ってメトリクスフィルターを作成します。

スクリーンショット 2024-12-19 17.02.55.png

作成したメトリクスフィルターを選択し、ナビゲーションに沿ってアラームを作成します。

スクリーンショット 2024-12-19 17.10.56.png

最後に

AWS を触ることがほとんど初めてだったので分からないことが多く勉強になりました。ひとまずログ設定からアラーム設定まですることができてよかったです。監視設定のお役に立てれば幸いです。


明後日、12月23日(月)は、エンジニアのSaloniさんによる記事です。

私たちWanoグループでは人材募集をしています。興味のある方は、下記のリンクからぜひ募集中の求人をご確認ください!
JOBS | Wano Group

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?