Windows系のEC2インスタンスはSSM AgnetがPublic AMIに同梱されるようなったため、WindowsイベントログのCloudwatchLogsへの転送設定をSSMから実施できるようなりましたが、Linux系はawslogsのモジュールが必要となり、現在のところ追加でモジュールをインストールして、コンフィグを設定してあげる必要があります。
(1) IAMロール を設定 対象のEC2インスタンスにCloudwatchLogsへアクセスするIAMロールを付与。具体的ポリシーはこちら。
クイックスタート: 実行中の EC2 Linux インスタンスに CloudWatch Logs エージェントをインストールして設定する - Amazon CloudWatch ログ
(2) awslogsインストール 対象OSにログインして、awslogsをインストール。
> sudo yum install -y awslogs
(3) コンフィグの編集
とりあえずバックアップを。
sudo cp /etc/awslogs/awscli.conf /etc/awslogs/awscli.conf.org sudo cp /etc/awslogs/awslogs.conf /etc/awslogs/awslogs.conf.org
awscli.confを編集。default設定ではN.Virginaに飛ばされるので、regionの設定値を東京リージョン(ap-northeast-1)に変えてあげる。
[plugins] cwlogs = cwlogs [default] region = ap-northeast-1
awslogs.confを編集。転送したいログ・ファイルの情報を定義してあげる。READMEはawslogs.conf自体に記載されているので、そちらを参照。
[/var/log/messages] datetime_format = %b %d %H:%M:%S file = /var/log/messages buffer_duration = 5000 log_stream_name = test-host initial_position = end_of_file log_group_name = /var/log/messages [/var/log/secure] datetime_format = %b %d %H:%M:%S file = /var/log/secure buffer_duration = 5000 log_stream_name = test-host initial_position = end_of_file log_group_name = /var/log/secure
(4) 起動設定 対象のOSに合わせたコマンドで。以下はAmazon Linuxの場合。
> sudo service awslogs start > sudo chkconfig awslogs on
(5) テスト出力
sudo logger test-message
AWSコンソール上のCloudwatchLogsに連携されるまで、数分のラグがあります。
RHEL7の場合はこちら。
(1) IAMロールを設定
(2) AWSのS3にPythonの設定モジュールがあるので、それをダウンロードしてくる
$ curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
(3) 実行。色々訊かれるので入力。
$ sudo python ./awslogs-agent-setup.py --region ap-northeast-1 Launching interactive setup of CloudWatch Logs agent ... Step 1 of 5: Installing pip ...DONE Step 2 of 5: Downloading the latest CloudWatch Logs agent bits ... DONE Step 3 of 5: Configuring AWS CLI ... AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [ap-northeast-1]: Default output format [None]: Step 4 of 5: Configuring the CloudWatch Logs Agent ... Path of log file to upload [/var/log/messages]: Destination Log Group name [/var/log/messages]: Choose Log Stream name: 1. Use EC2 instance id. 2. Use hostname. 3. Custom. Enter choice [1]: 2 Choose Log Event timestamp format: 1. %b %d %H:%M:%S (Dec 31 23:59:59) 2. %d/%b/%Y:%H:%M:%S (10/Oct/2000:13:55:36) 3. %Y-%m-%d %H:%M:%S (2008-09-08 11:52:54) 4. Custom Enter choice [1]: Choose initial position of upload: 1. From start of file. 2. From end of file. ------------------------------------------------------ - Configuration file successfully saved at: /var/awslogs/etc/awslogs.conf - You can begin accessing new log events after a few moments at https://console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logs: - You can use 'sudo service awslogs start|stop|status|restart' to control the daemon. - To see diagnostic information for the CloudWatch Logs Agent, see /var/log/awslogs.log - You can rerun interactive setup using 'sudo python ./awslogs-agent-setup.py --region ap-northeast-1 --only-generate-config' ------------------------------------------------------
(4) 自動起動設定
sudo systemctl enable awslogs