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
関連記事
-
-
AtomエディタでEC2のファイルを直接編集する
Webページを編集していてEC2のファイルをvimエディタでさわったりしています …
-
-
ChatGPT APIをTeamsボットから使いました(AWS Lambda(Python) + API Gateway)
ChatGPT APIが有償で利用可能になったので、会社のTeamsボットに実装 …
-
-
CodeDeployでECR、ECSにデプロイするパイプラインのチュートリアル
チュートリアル: Amazon ECR ソースと、ECS と CodeDeplo …
-
-
「Amazon EKS Workshop」の環境準備とクラスター作成
今はアーカイブになっている1つ前のEKS Workshopの環境準備記録です。 …
-
-
AWS GlueでAurora JDBC接続でS3へのジョブを実行
Aurora Serverless v1のMySQLタイプデータベースからS3へ …
-
-
AWS Step Functions まずはパラレルでLambdaを並列実行してみました
複数のlambdaの実行制御をLambdaでやってましたが、その部分をStep …
-
-
PyCharmにAWS CloudFormationプラグインをインストールして入力補完してみる
JetBrainsのPython統合開発環境(IDE)のPyCharmを1年ちょ …
-
-
slackのbotに天気を教えてもらう(Python on AWS Lambda + API Gateway)
slackのbotにAPIの定番ともいえる天気情報を教えてもらいました。 環境は …
-
-
AWS CloudShellでboto3(SDK for Python)使うならpython3
本の執筆をしていて、ちょっとAWS CLIやSDKのふるまいを確認したいことがあ …
-
-
AWS EC2 Amazon Linux にEC-CUBE3をnginx+MySql環境へインストール(手順検証中)
EC2インスタンスを作成する 少し古い記事で恐縮ですが試したい事があるのでAWS …


