从0开始搭建日志分析系统(三):自动化
前情
由于项目里日志收集和日志分析分别使用了两台独立的服务器,所以这里会涉及到把每天的日志文件从一台服务器拷贝到另一台服务器,如果是同一台服务器,则可以省略该步骤
参考http://blog.csdn.net/a11101171/article/details/47293109
一、expect + crontab 自动scp文件到日志分析服务器(日志收集服务器上)
- 安装expect
centos 可以直接用 yum install expect - 配置脚本autoscp.sh拷贝日志到分析服务器(注意修改日志路径)
1
2
3
4
5
6
7
8
9
10
11
12
filename=`ls -l /letv/logs/lempb | tail -n 1 | awk '{print $9}'`
echo $filename
/usr/expect/bin/expect -c "
spawn scp /letv/logs/lempb/$filename root@47.92.67.199:/root/study/log-backup
expect {
\"*assword\" {set timeout 300; send \"TYMljly412\r\";}
\"yes/no\" {send \"yes\r\"; exp_continue;}
}
expect eof" - 配置crontab自动执行scp脚本(每天凌晨1点执行)2.从/root/study/log-backup/目录拷贝一份到/root/study/logfactory目录
1
2
3
4
5
6
7
8
9
100 1 * * * /letv/logs/autoscp.sh >>/root/xxx/xxx.log 2>&1
``
** 可以在后面加上 >>/root/xxx/xxx.log 2>&1 把每次执行的log放入指定文件,方便后续查看 **
### 二、自动执行日志分析(日志分析服务器上)
+ 配置自动执行脚本 auto.sh ,这里设置每天2点执行,因为步骤一设置了每天1点自动拷贝头天的日志文件到/root/study/log-backup/下,这里需要确保scp完成
思路:
1.获取/root/study/log-backup/下最新的日志文件
```bash
filename=`ls -l /root/study/log-backup/ | tail -n 1 | awk '{print $9}'`3.unzip操作1
cp /root/study/log-backup/$filename /root/study/logfactory/
4.获取unzip后的文件名并rename操作,因为分析程序里写死了入口文件名为out_log.log1
gunzip /root/study/logfactory/$filename
5.执行分析程序1
2file=${filename/\.gz/}
mv /root/study/logfactory/$file /root/study/logfactory/out_log.log6.remove源日志文件1
node /root/study/logfactory/main/start
核心代码:1
rm -f /root/study/logfactory/out_log.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
filename=`ls -l /root/study/log-backup/ | tail -n 1 | awk '{print $9}'`
echo $filename
cp /root/study/log-backup/$filename /root/study/logfactory/
echo 'copy success'
gunzip /root/study/logfactory/$filename
echo 'unzip success'
file=${filename/\.gz/}
echo $file
mv /root/study/logfactory/$file /root/study/logfactory/out_log.log
echo 'rename success'
node /root/study/logfactory/main/start
echo 'gen htmls success'
rm -f /root/study/logfactory/out_log.log
echo 'remove old log file success'
echo 'all end' - crontab 配置每天2点自动执行
1
0 2 * * * /root/study/logfactory/auto.sh >> /root/study/logfactory/auto.log 2>&1
** 注意2点:1.尽量写全路径,否则可能报错 2.如果使用sh命令能执行,而crontab里执行失败,则可能是脚本的执行权限不够,使用chmod a+wrx xx.sh **