云服务器日志备份的两种思路实践

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
对象存储 OSS,内容安全 1000次 1年
简介: ## 1 背景最近在做Incountry产品的SRE工作,由于线上的vault audit日志较大,导致磁盘利用率不足,需要对vault日志进行备份后并在机器上删除。初步考虑通过OSS来备份日志,以实现对日志文件备份的需求。## 2 思路一:通过ECS挂载OSS实现日志备份参考文档:[通过云存储网关挂载OSS](https://help.aliyun.com/document_detail

1 背景

最近在做Incountry产品的SRE工作,由于线上的vault audit日志较大,导致磁盘利用率不足,需要对vault日志进行备份后并在机器上删除。初步考虑通过OSS来备份日志,以实现对日志文件备份的需求。

2 思路一:通过ECS挂载OSS实现日志备份

参考文档:通过云存储网关挂载OSS

2.1、开通云存储网关服务

开通地址:云存储网关服务

2.2、新建bucket

访问OSS管理控制台,控制台地址:https://oss.console.aliyun.com/bucket

点击“创建Bucket”按钮

这边的存储类型需要注意下,归档存储和冷归档存储的数据,都需要解冻,解冻有一定时间,如果希望能够实时下载日志的话,不选择这两种类型。

2.3、配置云存储网关

点击上述步骤创建好的bucket,选择“ECS挂载OSS”,并点击配置云存储网关。

填写网关名称,共享名称后下一步。

创建完成后,可以在列表中看到对应的云网关。

进入网关集群,并点击对应的id

点击高级设置,将忽略删除勾选上,这个配置勾选了之后,在ECS挂载了OSS之后,文件同步到OSS后,即使在ECS中删除了文件,OSS上仍然能够保存该文件。

2.4、ECS挂载OSS

登录云服务器ECS,找到实例,找到对应的机器,远程连接,登录ECS机器。

执行sudo su -切换root身份
根据对应的服务器挂在点,执行挂载命令:mount.nfs 192.168.0.125:/loying-test-vault-store logback/


执行完之后,会发现logback这个文件夹已经被挂载了。
在logback文件夹中新建文件、复制文件、删除文件,分别尝试,发现新建文件、复制文件后,OSS都会出现相应的文件。 当把新建的文件删除后,OSS中仍然存在该文件,符合预期。

2.5、成本

该方案中,设计配置云存储网关,云存储网关使用需要收费,收费情况如下:

考虑到成本原因,暂不考虑使用该方案。

3 思路二:通过ossutil实现日志备份

大致思路如下:
1、通过ossutil来实现日志文件上传至oss文件夹。帮助文档
2、通过ECS自带的云助手工具,实现定时执行机制。帮助文档

3.1 安装ossutil

1、运行以下命令下载ossutil。

wget https://gosspublic.alicdn.com/ossutil/1.7.14/ossutil64   

2、运行以下命令修改文件执行权限。

chmod 755 ossutil64

3、使用交互式配置生成配置文件。

chmod 755 ossutil64

./ossutil64 config

4、根据提示设置配置文件路径,建议直接按回车使用默认配置文件的路径。根据提示分别设置Endpoint、AccessKey ID、AccessKey Secret和STSToken参数。

5、运行以下命令,验证是否已成功安装ossutil。如果屏幕中输出ossutil所有支持的命令,表明已成功安装ossutil。

/home/ecs-assist-user/ossutil64 

3.2 通过ram role方式配置ossutil

3.1中的第4步,是直接根据主账号的AccessKey ID、AccessKey Secret进行配置,考虑到安全性问题,使用角色扮演的方式进行配置。具体步骤如下:
在ram中创建一个角色


给角色新增授权,授权oss权限。

找到对应的ECS机器,添加角色权限


搜索创建的角色,点击确定。

在机器控制台调用请求:http://100.100.100.200/latest/meta-data/ram/security-credentials/NewECSDeployRole,获取相应的token,并将返回的结果写入result.txt

curl -o result.json http://100.100.100.200/latest/meta-data/ram/security-credentials/NewECSDeployRole


解析对应的json数据,并将相应的值通过非交互式的config命令格式,写入ossutil配置中去。如果机器未安装jq,需要提前安装jq:yum install jq

[root@i ecs-assist-user]# AccessKeyId=$(jq -r '.AccessKeyId'<result.json)
[root@i ecs-assist-user]# echo ${AccessKeyId}
STS.NTZ62FnAQxh9VLTB2CuDfpfor
[root@i ecs-assist-user]# AccessKeySecret=$(jq -r '.AccessKeySecret'<result.json)
[root@i ecs-assist-user]# SecurityToken=$(jq -r '.SecurityToken'<result.json)
[root@i ecs-assist-user]# ./ossutil64 config -e http://oss-cn-hangzhou-internal.aliyuncs.com -i ${AccessKeyId}  -k ${AccessKeySecret} -t ${SecurityToken}

3.3 通过云助手定时执行命令

ECS->运维与监控->发送命令/文件(云助手)->创建命令,可以设置定时执行,以下命令是按照实际的需求:通过ram role配置ossutil,按条件查找出文件后上传文件,并修改文件名为:hostname_原文件名。备份后,将7天前的文件进行删除处理。通过云助手每周二/周五的上午10点30分定时执行。

命令内容如下:

#!/bin/bash
curl -o result.json http://100.100.100.200/latest/meta-data/ram/security-credentials/VaultAuditLogArchives
AccessKeyId=$(jq -r '.AccessKeyId'<result.json)
AccessKeySecret=$(jq -r '.AccessKeySecret'<result.json)
SecurityToken=$(jq -r '.SecurityToken'<result.json)
hostName=$(hostname -f)
/home/ecs-assist-user/ossutil64 config -e http://oss-cn-shanghai-internal.aliyuncs.com -i ${AccessKeyId}  -k ${AccessKeySecret} -t ${SecurityToken}
find  /var/log/  -name "vault_audit.*z" | while read id 
do 
/home/ecs-assist-user/ossutil64 cp $id oss://vault-log-store/${hostName}_${id##*log/} -u
done
find /var/log/ -mtime +7  -name "vault_audit.log.*z" -exec rm -rf {} \;
rm result.json;

执行结果:

OSS上的备份结果:

4 小结

通过以上两个方案,可以实现线上日志的备份,我们根据自己业务的情况选择了方案二,并在线上进行了配置。如果大家有更好的方案,欢迎留言补充。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
12天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
16天前
|
大数据 云栖大会 云计算
2024云栖大会 预告:磐久服务器技术创新和实践
2024云栖大会 预告:磐久服务器技术创新和实践
2024云栖大会 预告:磐久服务器技术创新和实践
|
6天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
13天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
5天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
4天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
3天前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
|
8天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
10天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
15天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感