8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EC2(Linux)の操作ログ(Scriptコマンドの結果)をCloudwatch logsに送りたい

Last updated at Posted at 2018-03-15

EC2(Linux)の操作ログをクラウドに保存できないかなぁと思って考えたときのメモです。
AWS Logs エージェントは導入済みの環境を想定してます。

操作ログ出力先作成

# mkdir /var/log/script
# chmod 777 /var/log/script

操作ログ出力スクリプト作成

# touch /etc/profile.d/scriptlog.sh
# chmod 644 /etc/profile.d/scriptlog.sh
# vi /etc/profile.d/scriptlog.sh
-------
#!/bin/bash
#===================================
# Script Name   : scriptlog.sh
# Description   : This script outputs the operation log for each user to the specified directory.
#===================================

LOGDIR=/var/log/script
LOGFILE=`whoami`.log

P_PROC=`ps -ef|grep $PPID|grep bash|awk '{print $8}'`

if [ "$P_PROC" = -bash ];then
  #/bin/script -faq ${LOGFILE}
  # タイムスタンプを追加
  /bin/script -fq >(awk '{print strftime("%F %T "), $0} {fflush() }'>> ${LOGDIR}/${LOGFILE})
  exit
fi
-------

#ログインしなおしてログが出てるか確認
# id
uid=0(root) gid=0(root) groups=0(root)
# ls -la /var/log/script/
-rw-r--r-- 1 root root 3 Mar 15 03:16 root.log
#logrotate設定
touch /etc/logrotate.d/scriptlog
vi /etc/logrotate.d/scriptlog
-------
/var/log/script/*.log
{
daily # 日次ローテーション
rotate 7 # 世代数は7
missingok # ファイルがなくてもエラーとしない
notifempty # ファイルが空なら実行しない
copytruncate # コピー後に元ファイルの中身を削除する
dateext # ファイル末尾の日付フォーマット
dateformat .%Y%m%d # 日付は.%Y%m%dの形式にする
compress # ファイルを圧縮する
su root root # root権限で実行する
}
-------
#logrotateおためし
dry-run
# logrotate -dv /etc/logrotate.d/scriptlog
強制実行
# logrotate -f /etc/logrotate.d/scriptlog
# ls -la /var/log/script
-rw-r--r-- 1 root root 3 Mar 15 03:16 root.log
-rw------- 1 root root 20 Mar 14 16:19 root.20180315.gz

awslogs設定

# vi /var/awslogs/etc/awslogs.conf
-------
[general]
state_file = /var/awslogs/state/agent-state

[/var/log/script/root.log]    #root用の設定
datetime_format = %Y-%m-%d %H:%M:%S
file = /var/log/script/root.log
initial_position = start_of_file
log_group_name = /product/var/log/script/root.log
buffer_duration = 5000
log_stream_name = {hostname}

[/var/log/script/ec2-user.log]    #ec2-user用の設定
datetime_format = %Y-%m-%d %H:%M:%S
file = /var/log/script/ec2-user.log
initial_position = start_of_file
log_group_name = /product/var/log/script/ec2-user.log
buffer_duration = 5000
log_stream_name = {hostname}
-------

awslogs 再起動

# service awslogs restart

こんな感じでクラウドに残せるんじゃないかなーというメモになります。
テストした結果、日付がないとAWS Logs エージェントでうまく送れなかったのでタイムスタンプを付加できるように変えました。

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?