将日志文件从EC2实例自动备份到S3
来源:互联网 发布:歌华机顶盒网络未连接 编辑:程序博客网 时间:2024/05/22 04:11
原文链接:Automatic backup of log files to S3 from EC2 instances
近期我打算启动新的EC2实例来部署服务的新版本,并终止运行着旧版本服务的实例。我认为这种方法可行,因为我想无论如何都会有取代实例的时候。然而,这种方法存在一个弊端,即丢失服务的日志文件(我也许会用于排除故障与分析)。
我决定将这些日志文件备份到S3。然而,我不知道该如何做。因为我正在使用logrotate,来轮转这些文件。问题是,使用默认选项运行时,日志文件名是静态的,但内容会随着每次轮转而改变。开始我考虑dateext指令,以获取当前的日期添加到文件名,但最后我认为向logrotate添加rotate-hook会更容易。
创建logrotate hook非常简单。只需将postrotate/endscript指令添加到想要运行的脚本或命令即可。您还需要添加sharedscripts,以确保脚本每次只执行一次。
我的服务的logrotate文件(/etc/logrotate.d/my_service)如下所示:
/var/log/my_service/*.log { daily missingok copytruncate rotate 10 compress delaycompress notifempty sharedscripts postrotate /bin/bash /etc/my_service/upload_log_to_s3.sh log.1 endscript}
但是,当前还未轮转到的日志文件该怎么办?如果实例将终止,那么最新的日志文件将不被上传。
解决方法是对系统使用shutdown-hook。在Ubuntu中使用upstart可以很容易地添加shutdown-hook。
upstart配置文件(/etc/init/shutdown-hook.conf)如下所示:
description "run at shutdown"start on starting rctaskexec /bin/bash /etc/my_service/upload_log_to_s3.sh log
最后我只需脚本来上传日志文件到S3:
#!/bin/bashlog_file_ext=$1gzip -c /var/log/my_service/*.$log_file_ext > /tmp/log.gzaws s3 cp /tmp/log.gz s3://my_service_bucket/logs/`date +%Y-%m-%dT%H:%M:%SZ`.log.gz
上传脚本将gzip日志文件(当使用delaycompress时需要),将日志文件重命名为当前时间戳以及使用aws-cli上传文件。该参数设置日志文件的扩展名,需要既能上传当前的日志(.log)也能上传之前的日志(.log.1)。
这当然不是最好的解决方案,但却容易实现。希望对你有帮助。
- 将日志文件从EC2实例自动备份到S3
- flume配置-生产环境下从文件目录下将日志上传到s3
- AWS EC2上传文件到S3(python boto)
- Python实现备份EC2的重要文件和MySQL数据库到S3
- Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件
- 文件存储到amazon S3
- weblogic 日志文件自动备份建议方案
- AWS 使用CLI将IAM角色附加到现有的EC2实例中
- EC2的实例如何从一个区迁移到另一个区?
- 如何用Python从本地将一个文件备份到Google Drive
- 从0开始,创建 AWS EC2 实例
- AWS EC2/S3命令记录
- 从S3中导入数据到Dynamodb
- 将文件备份到FTP服务器上
- PHP将数据库备份到文件中
- mssql自动备份及自动清除日志文件教程
- wps自动备份的文件,备份到本地哪里了?
- Winscp连接Amazon Ec2实例传送文件
- docker在实际发布tomcat + mysql项目中的应用
- C语言之指针
- linux系统产品使用教程
- 上机练习题2——接口 表达教师与研究生的薪水
- fullCalendar获取某一天的日程(event)
- 将日志文件从EC2实例自动备份到S3
- centos6.5 ping: unknown host www.baidu.com
- opencv小记:IplImage与Mat之间的转换
- cmake 入门编程之打印信息或者变量
- JavaScript数组方法总结
- MySQL上篇
- 厚积薄发---从此再也不用担心闭包问题
- 23种设计模式
- 最优化方法