AWS CloudWatch LogsエージェントでAmazon EC2上のNginxのaccess.log , error.log , php-fpm error.log , Linuxのmessages , secureログを収集する
目次
参考ページ
クイックスタート: 実行中の EC2 インスタンスに CloudWatch Logs エージェントをインストールして設定する – Amazon CloudWatch ログ
EC2用のIAMロールを作成する
※既にEC2に設定しているIAMロールがありましたので次のポリシーを追加しました。
新たに作成する場合は下記のポリシーを設定したIAMロールをEC2に設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] } |
EC2に CloudWatch Logsをインストールする
EC2にSSHログインシて作業します。
1 2 3 |
$ sudo yum update -y $ sudo yum install -y awslogs |
CloudWatch Logsを設定する
リージョンを設定します。
1 2 |
$ sudo vim /etc/awslogs/awscli.conf |
1 2 |
region = ap-northeast-1 |
取得したいログファイルの設定をします。
1 2 |
$ sudo vim /etc/awslogs/awslogs.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
[general] state_file = /var/awslogs/state/agent-state [MessagesLog] file = /var/log/messages log_group_name = MessagesLog log_stream_name = {instance_id} datetime_format = %b %d %H:%M:%S [SecureLog] file = /var/log/secure log_group_name = SecureLog log_stream_name = {instance_id} datetime_format = %b %d %H:%M:%S [NginxAccessLog] file = /var/log/nginx/access.log log_group_name = NginxAccessLog log_stream_name = {instance_id} datetime_format = %d/%b/%Y:%H:%M:%S %z [NginxErrorLog] file = /var/log/nginx/error.log log_group_name = NginxErrorLog log_stream_name = {instance_id} datetime_format = %Y/%m/%d %H:%M:%S [PhpFpmErrorLog] file = /var/log/php-fpm/error.log log_group_name = PhpFpmErrorLog log_stream_name = {instance_id} datetime_format = %d-%b-%Y %H:%M:%S [PhpFpmWwwErrorLog] file = /var/log/php-fpm/www-error.log log_group_name = PhpFpmWwwErrorLog log_stream_name = {instance_id} datetime_format = %d-%b-%Y %H:%M:%S |
datetime_formatについて
2017-08-12 05:04:03,618 – cwlogs.push.reader – WARNING – 2458 – Thread-4 – Fall back to current time: {‘timestamp’: 1502481843618, ‘start_position’: 25765L, ‘end_position’: 26029L}, reason: timestamp could not be parsed from message.
適切な設定をしないと上記のような警告ログが出力されてタイムスタンプが正常に反映されません。
それぞれのログファイルのタイムスタンプは確認したところ、下記のようになっていました。
ログファイル | タイムスタンプ | datetime_format |
---|---|---|
Nginx error.log | 2017/08/12 05:04:00 | %Y/%m/%d %H:%M:%S |
Nginx access.log | 12/Aug/2017:06:19:17 +0900 | %d/%b/%Y:%H:%M:%S %z |
php-fpm error.log | 12-Aug-2017 05:24:38 | %d-%b-%Y %H:%M:%S |
php-fpm www-error.log | 10-Aug-2017 23:40:46 UTC | %d-%b-%Y %H:%M:%S |
messages | Aug 12 06:13:36 | %b %d %H:%M:%S |
secure | Aug 11 04:03:33 | %b %d %H:%M:%S |
datetime_formatのフォーマット記号
記号 | 値 | 備考 |
---|---|---|
%a | Sun, Mon, …, Sat (en_US) | |
%A | Sunday, Monday, …, Saturday (en_US) | |
%w | 0, 1, …, 6 | 日~土までの数字 |
%d | 01, 02, …, 31 | 日 |
%b | Jan, Feb, …, Dec (en_US) | |
%B | January, February, …, December (en_US) | |
%m | 01, 02, …, 12 | 月 |
%y | 00, 01, …, 99 | 西暦下2桁 |
%Y | 1970, 1988, 2001, 2013 | |
%H | 00, 01, …, 23 | 24時間表記の時間 |
%I | 01, 02, …, 12 | 12時間表記の時間 |
%p | AM, PM (en_US) | |
%M | 00, 01, …, 59 | 分 |
%S | 00, 01, …, 59 | 秒 |
%f | 000000, 000001, …, 999999 | マイクロ秒 |
%z | (empty), +0000, -0400, +1030 | 標準時との差 |
%j | 001, 002, …, 365 | 年における日 |
%U | 00, 01, …, 53 | 年における週連番(最初の日曜日から0) |
%W | 00, 01, …, 53 | 年における週連番(最初の月曜日から0) |
サービス起動
1 2 3 |
$ sudo service awslogs start $ sudo chkconfig awslogs on |
AWS CloudWatchのログを確認
ログが出来てます。
Nginxのaccess.logを見るとそれなりに攻撃されているのが分かりました。
対策は別記事で。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
AWS KMSマルチリージョンキーを確認しました
2021年6月にKMS マルチリージョンキーがリリースされました。 マルチリージ …
-
ヤマムギ vol.7 AWSアカウント作成 & 最初の設定ハンズオン 手順
ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …
-
S3 VPCエンドポイント設定前と設定後を確認
S3のVPCエンドポイントを設定した際に、S3バケットのAPIエンドポイントへの …
-
AWS LambdaでS3 Select
RDSスナップショットをS3にエクスポートした、Parquetフォーマットのデー …
-
AWS Client VPNのクライアント接続ハンドラを試してみました
AWS Client VPNを設定しましたで証明書とかせっかく作ったので、いろい …
-
AWS Storage Gatewayボリュームゲートウェイを作成してWindowsから使用
ボリュームゲートウェイの作成 Storage Gateway作成メニューからボリ …
-
Amazon EC2(Amazon Linux 2)にRedmine3.4をインストール
久しぶりに新しい環境でRedmineを構築したくなり、せっかくなのでAmazon …
-
Amazon LinuxのNginx+RDS MySQLにレンタルWebサーバーからWordPressを移設する(失敗、手戻りそのまま記載版)
勉強のためブログサイトを長らくお世話になったロリポップさんから、AWSに移設する …
-
Amazon Chimeのチャットを使ってみました
Amazon Chimeはビデオミーティングや配信したりというサービスですが、チ …
-
AWS Lambda(Python)で生成した文字をAmazon Connectで音声を設定して発信する
Amazon Connectから発信する電話の音声を動的に設定します。 Lamb …