日志收集案例
一. 前期准备
实验目标: 将3台Web Server的apache日志自动下载到本地Local主机进行存储,供今后做事件分析使用。
背景:
1). 运行apache主机共有Linux-1、Linux-2、Linux-3共3台安装有Cent OS Linux 6系统的服务器
2). 本地工作站系统为CentOS Linux 6
3). apache日志自动打包,并采用ssh安全协议将打包好的日志下载到本地系统保存。
实验拓扑
主机名 | IP地址 | 功能 |
Linux-1 | 192.168.150.10 | WebServer |
Linux-2 | 192.168.150.11 | WebServer |
Linux-3 | 192.168.150.12 | WebServer |
Local | 192.168.150.100 | 保存日志 |
1. 配置Local主机和三台WebServer之间ssh连接,以便实现直接登录
1.1 编辑Local主机的的hosts文件增加3条内容
192.168.150.10 Linux-1
192.168.150.11 Linux-2
192.168.150.12 Linux-3
1.2 生成ssh客户密匙
#ssh-keygen -t rsa
接着屏幕显示,为生成公匙密匙文件和等,全部回车即可
1.3 当客户SSH密钥生成后,将本地的id_rsa.pub复制到远程的./ssh目录下,并更改名称为authorized_keys2
sftp root@Linux-1
sftp Linux-1
Connecting to Linux-1
root@Linux-1's password: (输入密码)
sftp>
sftp>cd .ssh
sftp>put id_rsa.pub authorized_keys2
Uploading id_rsa.pub to /.ssh/authorized_keys2
1.4 测试配置
#scp Linux-1:/usr/local/apache2/logs/access.log /root/
复制远程的access.log文件到本地的/root/.ssh目录下,这时就无需输入密码,准备工作就做好了。
2. 配置三台Linux-1、Linux-2、Linux-3主机,以实现每天自动切换日志文件,在配置文件httpd.conf中加入下面两句,需要注意的是如果有虚拟主机还需加到虚拟主机的配置里面,否则不生效。
CustomLog "|/bin/rotatelogs -l /var/log/apache/logs/access-%Y-%m-%d.log 86400" common
3.在本地主机上的root目录下录入以下脚本autolog.sh,并事先建立/logsbackup目录
#vi autolog.sh
#!/bin/bash
# 步骤一:基本参数设定,添加默认网关
Dest_dir=/logsbackup
Sour_dir=/var/log/apache/logs/
LogFile=access_log
Host_table="Linux-1 Linux-2 Linux-3"
Date=`date +%Y%m%d -d '-1 day'`
GateWay=192.168.150.1
echo Beginning:`date +'%Y/%m/%d %H:%M'`
route add default gw $GateWay
# 第二步压缩日志文件
for loop in $Host_table
do
ssh $loop "gzip $Sour_dir/$LogFile.$Date " && echo $loop : compress apache log file complete.
done
# 第三部从WEB服务器上下载
for loop in $Host_table
do
scp $loop:$Sour_dir/$LogFile.$Date.gz $Dest_dir/$loop && echo $loop : download apache log file complete.
done
# 第四步 压缩下载到的日志文件
for loop in $Host_table
do
gzip -df $Dest_dir/$loop/$LogFile.$Date.gz
cat $Dest_dir/$loop/$LogFile.$Date > $Dest_dir/$loop/$LogFile && echo $loop : log files Ready now.
done
route delete default gw $GateWay
echo End:`date +'%Y/%m/%d %H:%M'`
4.在Local主机上面部署cron任务自动执行
15 8 * * * /tools/autolog.sh >> /root/ssh_log 2>&1
5.效果
#cat ssh_log
Beginning:2013/12/06 08:15
Linux-1 : compress apache log file complete.
Linux-2 : compress apache log file complete.
Linux-3 : compress apache log file complete.
Linux-1 : download apache log file complete.
Linux-2 : download apache log file complete.
Linux-3 : download apache log file complete.
Linux-1 : log files Ready now.
Linux-2 : log files Ready now.
Linux-3 : log files Ready now.
End:2013/12/06 08:50