贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

空间日志代码(空间日志代码_【AWS 案例】RDS MySQL的日志管理[亲测有效])

来源:网络转载 时间:2024-01-23 14:56:34

空间日志代码_【AWS 案例】RDS MySQL的日志管理[亲测有效]-空间日志代码是什么

空间日志代码_【AWS 案例】RDS MySQL的日志管理[亲测有效]敏捷云是AWS全球核心合作伙伴,我们致力于为企业提供云迁移、成本优化、安全合规及托管运维服务。敏捷云将与AWS一起为中国企业保驾护航,让广大用户拥有优质的云端应用。今天我们与大家分享AWS的RDSMySQL的日志管理。数据库日志是分析研究业务状态的参考资料,也是发生事故或审计时,可追溯检查的最具可靠性和权威性的原始记录,是寻找问题根源的重要的证据…

敏捷云是AWS全球核心合作伙伴,我们致力于为企业提供云迁移、成本优化、安全合规及托管运维服务。敏捷云将与AWS一起为中国企业保驾护航,让广大用户拥有优质的云端应用。

今天我们与大家分享AWS的RDS MySQL的日志管理。

数据库日志是分析研究业务状态的参考资料,也是发生事故或审计时,可追溯检查的最具可靠性和权威性的原始记录,是寻找问题根源的重要的证据之一。

RDS MySQL的默认参数组和选项组并没有打开所有的日志选项。RDS的控制台里提供了把日志直接输出到CloudWatch的方法,可以在CloudWatch里面直接分析日志。如果对于成本比较敏感,可以通过Lambda定期把日志导出到S3做存储和分析。

本案例旨在帮助初次接触RDS并想导出日志的用户,主要包含以下几个内容:

通过S3存储桶做日志的生命周期管理

开启RDS(MySQL) 的日志

通过Lambda转储RDS日志

通过S3存储桶做日志的生命周期管理

Amazon S3是一种对象存储服务,有行业领先的扩展性、数据可用性、安全性和性能。S3不但能可靠又低成本的保存日志,还能通过生命周期管理功能自动归档或删除过期的日志。

创建S3存储桶

因为S3存储桶的名字是DNS的一部分,要起一个独一无二的名字,然后选择区域,创建存储桶。

阻止所有公有访问权限选项默认是选中的,建议不要改这个地方,否则数据有被他人访问的风险。

为存储桶设置生命周期管理策略

1)进入存储桶,在管理选项卡内点击+添加生命周期

2)设置生命周期规则

设立一个30-365为名的规则,30天后自动用智能分层功能降低存储成本,365天后删除日志。

开启RDS(MySQL) 的日志

MySQL 有错误日志、慢查询日志、常规日志、审计日志和Binlog。错误日志是默认打开的,慢查询日志和审计日志需要修改参数组才能打开,审计日志需要修改选项组才能打开。Binlog默认不保存。

MySQL RDS 打开方法 默认保存周期
审计日志 修改选项组 文件达到1MiB后轮换,保留9个文件
错误日志 已默认打开 文件每小时轮换一次,保留24小时
慢查询日志 修改参数组 mysql.slow_log表,每24小时轮换
常规日志 修改参数组 mysql.general_log表,每24小时轮换
binlog 执行存储过程 生成后尽快被删除,不保存

创建选项组开启审计日志

1)选择正确的引擎版本,创建选项组

2)给新创建的选项组增加审计插件选项

默认:保留9个审计文件,每个文件大小1MiB。请根据业务情况修改。

例:100个文件,每个100MiB(占10GiB)。

SERVER_AUDIT_FILE_ROTATIONS: 100

SERVER_AUDIT_FILE_ROTATE_SIZE: 100000000

开启常规日志和慢查询日志,performance_schema

注意:更换参数组需要重启RDS,更改参数组中的参数可能需要重启RDS。

开启常规日志和慢查询日志会影响DB的性能,尤其是DB负载很高查询很多的时候。

1)选择正确的数据库系列,创建参数组

2)编辑新创建的参数组

存储日志到文件:log_output = FILE

开启常规日志:general_log = 1

开启慢查询日志:slow_query_log = 1

long_query_time = 3.5(记录超过3.5秒的查询)

log_queries_not_using_indexes = 1 (记录未使用索引的查询)

开启performance_schema:performance_schema = 1

RDS参数组没有默认打开performance_schema,建议打开。

在RDS上保存Binlog

RDS的Binlog生成后会很快被删除。为了故障调查等原因,建议保留一定时间。保留Binlog会占用RDS的磁盘空间。

连上RDS后可以用下面的存储过程行设定Binlog的保存时间,比如24小时:

> call mysql.rds_set_configuration(‘binlog retention hours’,24);

查询当前设置用下面的存储过程

> call mysql.rds_show_configuration;

注:如果要RDS生成Binlog,还需要修改数据库实例,设置备份保留期在1天以上。

修改RDS实例,使用新创建的选项组和参数组(需要重启RDS)

RDS的Configuration页面是pending-reboot状态,RDS重启后变成in-sync状态,设置生效。

通过Lambda转储RDS日志

AWS Lambda是无服务器计算服务,可运行代码来响应事件并自动管理底层计算资源。它非常适合在一天导出几次日志这样的场景来使用。

代码说明

1)这段代码利用API获得RDS的日志状态。其中describeDBLogFiles获得1小时内新生成的日志一览后依次处理各个日志。downloadDBLogFilePortion下载日志并压缩后存储到Lambda的/tmp临时路径,putObject上传日志文件到S3存储桶。

2)Lambda代码最多运行15分钟,处理能力与分配的内存大小有关。建议分配256MiB以上的内存并指定15分钟的超时时间。如果RDS在业务繁忙时间生成的日志量太大,Lambda不能在15分钟内处理完所有日志,就需要分配更大的内存。

3)Lambda的临时路径/tmp的容量是512MiB,以20%的压缩比率计算,能处理最大2.5GiB的单个日志。

4)Lambda除了基本的执行权限以外,还需要内联策略下载RDS日志,附加AWSLambdaExecute权限上传到S3。

5)日志会储存到指定的存储桶,路径结构如下

–RDS–––

创建Lambda的步骤

1)从头创建lambda函数

这个步骤将创建一个拥有基本的Lambda执行权限的角色。后面第4步中再给它添加RDS和S3的访问权限。

2)配置一个CloudWatch Events,每小时的第10分钟自动执行Lambda

Schedule可以用Crontab格式:cron(10 * ? * * *)

3)复制示例代码到函数代码框

Lambda示例代码(NodeJS 12):

下面的代码里面,rdsid、bucket、region三个变量需要根据实际情况修改。

const zlib =require(‘zlib’);

const fs =require(‘fs’);

const rdsid =”;

const bucket =”;

const AWS =require(‘aws-sdk’);

AWS.config.update({region: ‘cn-northwest-1’});

function listLog(context) {

let params = {

DBInstanceIdentifier: rdsid,

// filter for non 0-byte file rotated in 1 hour

FileLastWritten: Date.now()-3600000,

FileSize: ‘1’,

FilenameContains: ‘log.’

};

let request = new AWS.RDS().describeDBLogFiles(params);

request.on(‘success’,(response)=> {

console.log(response.data);

getRdsLog(context, response.data.DescribeDBLogFiles,’0′);

}).on(‘error’,(err)=> {

context.fail(err);

}).send();

}

function getRdsLog(context, logArray, marker) {

if(!logArray[0])return;

let logObj = logArray[0];

let s3name = logObj.LogFileName.slice(0,5)+’-‘+ rdsid +’-‘+ logObj.LastWritten +’.log.gz’;

let params = {

DBInstanceIdentifier: rdsid,

LogFileName: logObj.LogFileName,

Marker: marker

};

let request = new AWS.RDS().downloadDBLogFilePortion(params);

request.on(‘success’,(response)=> {

console.log(s3name +’ ‘+ response.data.Marker);

try {

fs.appendFileSync(‘/tmp/’+ s3name, zlib.gzipSync(response.data.LogFileData));

}

catch (err) {

context.fail(err);

};

if(response.data.AdditionalDataPending) {

getRdsLog(context, logArray, response.data.Marker);

}

else {

console.log(s3name +’ downloaded’);

logArray.shift();

putLog(context, s3name, logArray);

}

}).on(‘error’,(err)=> {

context.fail(err);

}).send();

}

function putLog(context, s3name, logArray) {

let params = {

Body: fs.readFileSync(‘/tmp/’+ s3name),

Bucket: bucket,

ContentType: ‘text/plain’,

ContentEncoding: ‘gzip’,

ServerSideEncryption: ‘AES256’,

Key: ‘RDS/’+ rdsid +’/’+ s3name.slice(0,5)+’/’+ new Date().toISOString().slice(0,10)+’/’+ s3name

};

let request = new AWS.S3().putObject(params);

request.on(‘success’,()=> {

console.log(s3name +’ uploaded to S3′);

fs.unlinkSync(‘/tmp/’+ s3name);

getRdsLog(context, logArray,’0′);

}).on(‘error’,(err)=> {

context.fail(err);

}).send();

}

粘贴和修改完代码以后,要点击一下画面右上角的保存按钮。

4)编辑基本设置中的内存和超时

权限设置,点击下方查看…角色的链接,为RDS和S3的相关操作附加策略。权限设置完成后再点保存。

先附加策略AWSLambdaExecute

再添加内联策略

在JSON窗口粘贴以下内容,创建一个名为LambdaDownloadRDSLog的策略

{

“Version”:”2012-10-17″,

“Statement”:[

{

“Effect”:”Allow”,

“Action”:[

“rds:DescribeDBLogFiles”,

“rds:DownloadDBLogFilePortion”

],

“Resource”:”*”

}

]

}

5)测试Lambda函数

这个Lambda函数是定时驱动的,不需要传入参数。点击测试按钮后用默认事件模版创建一个测试事件,然后再测试。

执行结果的详细信息里面,会列出describeDBLogFiles获得的1小时内新生成的日志一览,downloadDBLogFilePortion分页下载日志的结果,putObject上传日志文件到S3存储桶的结果。

Lambda函数测试通过以后,就可以保存下来。这个函数会被刚才配置的CloudWatch事件定期触发,自动转储日志到S3存储桶。

文章资料来源AWS官方,由敏捷云编写

图片来自网络,版权归原作者所有

侵删致歉


延伸阅读:

【AWS ·创新科技】AWS CloudFront 根据客户端IP做302重定向 【AWS ·创新科技】AWS CloudFront + Lambda@Edge 的切图方案【AWS ·创新科技】使用AWS Lambda和Amazon Cloudwatch定时重启Instance指南 F5的分布式多云活架构 F5 的公有云WEB安全与合规性 Fortinet SD-WAN的优势与应用场景Fortinet :安全驱动网络互联,保驾数字化业务创新 Prisma Cloud落地中国,为本土云安全保驾护航 Prisma Cloud商业合规版的功能 【Veeam Backup for AWS】经济高效且安全无 忧的 AWS 原生备份 【Veeam Backup & replication】强大的现代数据保护解决方案
深圳敏捷云计算科技有限公司是一家专注于公有云增值服务的技术创新型公司,为企业客户提供云迁移,培训,开发,安全合规以及运维服务。

标签:MySQL-

C语言数组可以通过以下几种方式进行初始化:静态初始化:在定义数组时,直接给出初始值,并用大括号括起来。int arr[] = {1, 2, 3, 4, 5};动...

win10账户被停用解决方法1、首先在桌面找到此电脑,鼠标右键单击“管理”。 2、在打开的计算机管理界面中,找到左侧“本地用户和组”,找到“用户”并双击打开 3...

Struts2是一个基于Java的Web应用框架,它的工作原理主要包括以下几个步骤:客户端发送请求:用户通过浏览器向服务器发送请求,请求可以是通过URL访问、表...

灯影牛肉丝是哪里的特产?灯影牛肉是四川通川的特产,由宣汉黄牛后腿的腱子肉切片制成,颜色鲜红、口感麻辣香脆,深受大众喜爱,灯影牛肉的所在地通川,地处四川东北部地区,平均气温在17度左右,四季分明,适合宣汉黄牛的生长。灯影牛肉是什么地方的特产?1、四川通川灯影牛肉是四川省达州市通川区的特产,由于其肉片薄如纸,可以透过肉片看到对面的景象,就像皮影戏的幕布,因此称为灯影牛肉,其原材料为宣汉黄牛后退的腱子肉...

很多人不知道怎么查询快递的手机号。如果你是商家,想查询某个客户的快递,可以通过投递易软件和快查功能查询手机号或收件人姓名。如果你是买家,想通过手机号查询快递,可以下载一个菜鸟包裹,添加关联的手机号。也可以打开支付宝,在当前界面点击全部,找到我的快递。点击我的快递后,当前页面点击更多。在当前页面下,单击授权管理。添加新的手机号码以查看您的快递。...

在上一篇文章中,笔者和大家聊了四平市、长春市等吉林省城市经济发展和区划变化的一系列故事。今天,我们来谈谈吉林省吉林市。吉林市是全国唯一同名的地级市。吉林市是吉林省的旧都,也是吉林省的重要城市。目前,吉林市下辖9个区县。那么,吉林九区县的格局是如何一步步形成的呢?首先说一下吉林省的基本情况。首先说一下吉林省的基本情况。吉林省属于中国东北三省之一,是中国的粮食大省。吉林省矿产资源和粮食产量丰富。根据2...

TOP