AWSのEC2上のApacheのアクセスログをCloudWatchで確認する

AWSのEC2上のApacheのアクセスログをCloudWatchで確認する

EC2上にApacheをインストールする方法は以下の通りです。

[ec2-user@ip-10-20-0-10 ~]$ sudo yum -y install httpd
[ec2-user@ip-10-20-0-10 ~]$ sudo service htttpd start

これでEC2のEIPにアクセスすると、Apacheのwelcomeページが表示されます。

目的は、EC2上のApacheのaccess.logをCloudWatch Logsを使用してCloudWatchのログ出力することです。

AWSのEC2上のApacheのアクセスログをCloudWatchで確認する

EC2からCloudWatchにアクセスするので、IAMロールに「CloudWatchFullAccess」を付与しておきます。

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

CloudWatch Logsエージェントをインストールします。

[ec2-user@ip-10-20-0-10 ~]$ sudo yum install -y awslogs

awscli.confのリージョン修正

/etc/awslogs/awscli.confファイルを修正します。

[ec2-user@ip-10-20-0-10 ~]$ sudo vi /etc/awslogs/awscli.conf

以下、例です。

[plugins]
cwlogs = cwlogs
[default]
region = ap-northeast-1 #リージョンを適宜変更する

awslogs.confの修正

/etc/awslogs/awslogs.confファイルを修正します。

以下、例です。ファイルの末尾に追記します。

[/apache/access_log]
log_group_name = /log/httpd # この名前がClowdWatchに表示される
log_stream_name = {hostname}
file = /var/log/httpd/access_log
datetime_format = [%a %b %d %H:%M:%S %Y]
initial_position = start_of_file
buffer_duration = 5000

設定ファイルを変更したら、サービスリスタートする必要があります。

[ec2-user@ip-10-20-0-10 ~]$ sudo service awslogs restart

EIPのIPアドレスでEC2のApacheにアクセスすると、CloudWatchにログが出力されていることが確認できると思います。

上記の設定では、ロググループは「/log/httpd」です。

AWSのEC2上のApacheのアクセスログをCloudWatchで確認する

アクセスログが表示されていることが確認できます。

initial_position = start_of_file

ファイルのどの位置からデータの読み出しを開始するかを「initial_position」に設定するので、デフォルト設定では指定したファイルのすべての内容が送信されます。

ちなみにCloudWatch Logsはfileに設定したファイル名にプッシュしていきます。

CloudWatch Logsエージェントのバージョンを確認する

バージョンを確認するには以下のコマンドで確認できます。

[ec2-user@ip-10-20-0-xx ~]$ yum info awslogs
Loaded plugins: priorities, update-motd, upgrade-helper
Installed Packages
Name : awslogs
Arch : noarch
Version : 1.1.4
Release : 1.12.amzn1
Size : 12 k
Repo : installed
From repo : amzn-updates
Summary : Scripts for CloudWatch Logs Daemon
URL : http://aws.amazon.com/cloudwatch
License : Amazon Software License
Description : Scripts to run Amazon CloudWatch Logs as a daemon.

[ec2-user@ip-10-20-0-xx ~]$

CloudWatch Logsエージェントの転送料金

どうも料金を調べていると、転送料金が高い?ようです。(私調べ)

ということでaccess_logの差分のみ転送できないかとか調べてみましたがどうも出来ないようです。

転送頻度がデフォルト5000ミリ秒なので、それをbuffer_durationで変更することは可能なようです。

ユーザーガイド

リファレンス

コメント

タイトルとURLをコピーしました