新功能:阿里云RDS SQL执行日志 - 实时分析监控上线

概述

背景

数据库是企业业务的数据核心,对数据库的操作行为尤其是所有SQL执行的行为进行记录并审计的日志,就显得尤为重要。但围绕数据库的安全问题却日益严重。今年2月,国内某人脸识别公司数据库泄露,造成250万人个人信息泄露。去年8月,某酒店集团的1.3亿条用户以及2.4亿条开房记录泄露
另一方面,数据库SQL执行日志也提供了性能、执行结果以及归类等信息,对于排查错误、线上性能优化支持起着关键作用。

阿里云关系数据库RDS的SQL执行日志已经与日志服务打通(目前支持MySQL类型),提供准实时的SQL执行分析功能,并提供内置可深钻的报表、支持异常报警与生态对接能力等。
image

完备的SQL执行日志

SQL执行日志包括了对数据库进行的所有SQL操作,RDS提供的SQL执行日志,通过网络监听的方式收集,对实际执行几乎没有性能的影响,包括但不限于如下类型的SQL执行以及信息提取:

  • 数据库的登入、登出
  • DDL(Data Definition Language):基于SQL的对数据库结构定义的SQL,例如CREATE、ALTER DROP、TRUNCATE、COMMENT等
  • DML(Data Manipulation Language):SQL操作语句,包括SELECT、INSERT、UPDATE、DELETE等
  • 其他SQL执行,包括任何其他通过SQL执行的控制,例如回滚、控制等
  • 失败的SQL执行也会被记录
  • 对SQL执行的延迟、执行结果、影响的行数等信息的提取

关于阿里云日志服务

阿里云的日志服务(log service)是针对日志类数据的一站式服务,无需开发就能快捷完成海量日志数据的采集、消费、投递以及查询分析等功能,提升运维、运营效率。日志服务主要包括 实时采集与消费、数据投递、查询与实时分析 等功能,适用于从实时监控到数据仓库的各种开发、运维、运营与安全场景:

image

功能优势

将阿里云RDS的实时SQL执行投递到日志服务中有如下价值与优势:

  • 简单:轻松配置,即可准实时采集SQL执行日志导入日志服务。
  • 可靠:对现有数据库支持无性能影响,数据准实时接入,分钟级别延迟。
  • 信息充分:除了执行的SQL之外,也包括数据库登录、失败的数据执行、延迟、影响结果等,对数据库执行状况、性能、潜在安全问题了如指掌,并可准实时挖掘细节。
  • 强大:依托日志服务,提供实时日志分析,并提供开箱机用的报表中心,且支持定制等。
  • 灵活:支持基于特定指标,支持定制准实时监测、报警、报表订阅,确保关键业务异常及时响应。可对接其他生态如流计算、云存储、可视化方案,进一步挖掘数据价值。或使用日志服务机器学习、自定义报表、数据加工等一站式服务。
  • 成本优势:支持任意时间的存储,以便合规、溯源、备案等。每1000万条SQL执行日志存储一个月,每天只需2毛钱左右

适用客户

  1. 合规:对SQL执行日志存储有更长存储合规需求(例如半年/1年)的大型企业与机构,如金融公司、政府类机构等。
  2. 高级运维:需要对数据库状况做实时监测,并对业务上出现的性能、可靠、稳定性等异常问题能够进行快速排错的客户,需要使用日志服务的实时的交互式的统计、查询分析和报警功能,如互联网服务、金融等企业。
  3. 安全:需要对数据库安全进行审计,辅助数据安全防护和事后排查的公司,需要使用日志服务的实时查询分析功能,如金融、证券、电商、游戏等公司。
  4. 行为分析:需要对数据库操作做行为分析,作进一步性能、功能、体验调优的参考和验证,除了统计查询外,也需要对接外部系统做进一步深度分析的公司。

前提与配置

前提与限制

  1. 开通日志服务。
  2. 开通RDS服务,购买或已经有一个支持SQL审计/洞察的MySQL实例
  3. 目前支持自动投递到日志服务的RDS类型如下:
限制 描述 备注
类型 MySQL 其他类型计划中
地域 北京 上海 杭州 深圳 香港 青岛 其他地域陆续开放中
版本 5.5、5.6、5.7、8.0 8.0 beta中
系列 高可用版、金融版 基础版本不支持
存储类型 本地SSD SSD云盘不支持
  1. 目前仅支持投递同一个地域下的日志服务项目(例如,北京的RDS实例,只能投递到北京的日志服务日志库中)
  2. 请勿修改默认的仪表盘配置,默认仪表盘会随着功能升级自动更新。参考日志服务手册,从默认仪表盘中复制一个仪表盘并修改。

如何配置

  1. 登录日志服务控制台,准备或构建一个与源RDS所处同一个地域的日志服务项目,并在其中准备或构建一个日志库(请选择好正确的存储时间,如180天等)
  2. 在日志库列表中选择【数据接入向导】,选择【RDS】
  3. 在控制台交互中配置期望的RDS MySQL数据库接入。

    • 注意: 如果您没看到对应的MySQL实例,可能是因为不符合前提条件,请参考上条列表。
    • 注意: 开启投递时需要开启RDS的审计日志功能

用户场景

1. 自由交互式分析SQL执行

准实时数据库访问异常排查与问题分析,读写延时,访问客户端区域分布等

image

也支持标准SQL92语法,并融合多种扩展分析函数,参考查询分析日志

image

详细日志字段

字段名 名称 例子 备注
__topic__ 主题 固定为rds_audit_log
instance_id 实例ID rm-abcdefg
check_rows 扫描的行数 0
db 数据库名 my_db
fail 是否出错 0 0-成功,1-失败
client_ip 客户端IP 1.2.3.4
latency 延迟(微秒) 15
origin_time 操作时间(微秒) 1525671499014609
return_rows 返回行数 123
sql 执行的SQL语句 SELECT * from tb_abc
thread_id 线程ID 17171330
user 数据库用户 spotuserw
update_rows 更新行数 0

2. 安全分析

重要表格、异常删除、SQL攻击以及SQL注入等一目了然

image

也可以在日志查询分析的结果上,支持自定义SQL执行审计与告警通知,以便第一时间处理,日志服务支持多种告警模式(例如钉钉、短信等),并支持自定义告警内容模板:

image

3. 整体访问监控程度

整体访问监控程度,运维可靠性指标一目了然,并可以参考,构建自己的仪表大盘。

image

4.运营分析

运营分析,活跃数据库与表格,关键数据添加修改删除动向**

image

进一步参考

后续我们会进一步围绕RDS执行日志,做更多最佳实践介绍。可以扫码加入官方钉钉群 (11775223)获得实时更新与阿里云工程师的及时直接的支持:
image

猜你喜欢

转载自yq.aliyun.com/articles/702328