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を見るとそれなりに攻撃されているのが分かりました。
対策は別記事で。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
【PR】 「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS DeepLens開封の儀
去年(2019年)7月にamazon.co.jpでDeepLens買えますやんっ …
-
-
Amazon Location Service入門ワークショップ-トラッカー
トラッカーでデバイスの位置や移動履歴を追跡できます。 関連記事 Amazon L …
-
-
リザーブドインスタンスはじめました
このブログも2014年9月にはじめたので、もうすぐ3年。 1件~17件とばらつき …
-
-
WordPressのwp-login.php , xmlrpc.phpへのアクセスをAWS WAFで接続元IPアドレスを制限する
AWS CloudWatch LogsエージェントでAmazon EC2上のNg …
-
-
Amazon API Gatewayでモックを作る
超シンプルなAPI Gatewayのサンプルがほしかったので、ユーザーガイドの手 …
-
-
Lambdaでちょっとしたコードを試すときに便利なエディタのフルスクリーン機能
Lambda歴6年で、はじめて使いました。 この存在に気がついてなかったです。 …
-
-
AWS Personal Health Dashboardのパブリックイベントの記録
東京リージョンで発生したので、スクリーンショットを取っておいたので記録しておきま …
-
-
名前解決してセッションマネージャが使えるようにVyOSのhost_name.pyを編集しました
発生したエラー セッションマネージャからこんなエラーが出力されました。 [cra …
-
-
Selenium, Headless ChromeとAWS Lambdaで夜な夜なスクレイピング
このようなアーキテクチャで、Alexaスキルの開発を進めていまして、元となる情報 …
-
-
Amazon Chimeのチャットを使ってみました
Amazon Chimeはビデオミーティングや配信したりというサービスですが、チ …