1.背景
1.1 日志审计
日志审计服务App是阿里云日志服务SLS(Simple Log Service)旗下的一款应用,它在继承了日志服务SLS的全部功能以外,还有强大的多账号管理及跨地域采集功能,支持通过资源目录(Resource Directory)的方式有组织性地统一地管理和记录多账号下云产品实例的日志信息,可以便于用户进行统一分析,问题排查,回溯复盘等操作。日志审计APP可以自动化、中心化地采集云产品日志并进行审计,其服务覆盖基础(操作审计、k8s)、存储(OSS、NAS)、网络(SLB、ALB、API网关、VPC)、数据库(RDS、PolarDB-X1.0,PolarDB)、安全(WAF、DDOS、SAS、CPS)等产品,还支持审计所需的存储、查询及信息汇总等功能。
1.2 RDS/PolarDB错误日志
日志审计原已支持RDS、PolarDB的审计日志类型、慢日志类型(mysql版)和性能日志类型(mysql版), 支持RDS错误日志和PolarDB错误的采集是补全日志审计数据库日志类型版图的重要一步。同数据库类其他日志类型一样,日志审计可以跨账号地自动化地采集RDS的错误日志和Polardb的错误日志,如果有数据库实例更新,将会自动化跟进其错误日志的采集,并支持采集策略配置使得可以对采集对象进行精细过滤和控制。同时日志审计还可以还具备强大的跨域能力,可以将采集的日志汇总到同一中心project下,方便用户的中心化查询分析和管理。
2 开启错误日志采集
2.1. 开启自动采集
2.2 多账号及跨域、自动采集能力
2.2.1 多账号汇总
日志审计对资源目录和自定义鉴权的支持使得其天然具备同时采集多账号下的日志信息的能力,下图是同时采集多个账号下RDS错误日志和PolarDB错误日志的一些示例。
通过日志审计多账号配置,可以将1023*账号所属的plardb实例*9a1o的错误日志采集到148中心账号下的project下。
2.2.2 跨地域与中心化
在日志审计下开启RDS/PolarDB错误日志采集之后,日志审计将自动将多账号、多地域下的日志通过直接采集汇总到是sls下名为slsaudit-center-${center_account}-${region} 的project的rds_log中。下图是一个RDS错误日志采集结果的一个示例,可以看到rds来自杭州地域实例的错误日志和来自上海地域实例的错误日志都被采集到同一中央project的logstore中。
2.2.3 自动采集能力
日志审计开启RDS/PolarDB错误日志采集功能之后,对于新创建的RDS/PolarDB实例,将会自动将其错误日志写入日志审计。日志审计下RDS日志字段参见RDS日志字段,PolarDB的日志字段参见PolarDB日志字段。
2.3 精细化日志采集粒度
日志审计支持对RDS实例进行精细化采集粒度控制,用户可以通过账号、地域、实例ID、实例名、标签等属性进行精准采集设置。具体的采集策略可以参考日志审计采集策略一节。
云产品 |
采集对象 |
属性 |
说明 |
RDS |
RDS实例 |
账号:account.id |
RDS实例所属的阿里云账号ID |
地域:region |
RDS实例所属的地域,例如:cn-shanghai |
||
实例ID:instance.id |
RDS实例ID |
||
实例名:instance.name |
RDS实例名 |
||
DB类型:instance.db_type |
RDS实例所属的DB类型 |
||
DB版本号:instance.db_version |
DB版本号,例如:8.0。 |
||
标签:tag.* |
用户自定义的标签名。 将tag.*中的星号(*)替换为您自定义的标签名。 |
采集策略说明
云产品 |
采集对象 |
属性 |
说明 |
PolardDB |
PolarDB集群 |
账号:account.id |
PolarDB集群所属的阿里云账号ID。 |
地域:region |
PolarDB集群所属的地域,如cn-shanghai。 |
||
集群ID:cluster.id |
PolarDB集群ID。 |
||
集群名:cluster.name |
PolarDB集群名称。 |
||
集群兼容的DB类型:cluster.db_type |
PolarDB集群兼容的DB类型,目前只支持MySQL。 |
||
集群兼容的DB版本:cluster.db_version |
DB版本号,可选值为8.0、5.7和5.6。 |
||
标签:tag.* |
用户自定义的标签名。 将tag.*中的星号(*)替换为您自定义的标签名。 |
下面将进行几个简单的采集策略示例帮助用户理解如何进行精细化RDS错误日志的采集。
# --------------example 1 ----------------
#only scan ap region
keep region == "ap-*"
# accept by default
accept "*"
#-------------example 2-------------------
# accept all high level instances and if not only accept rds instance that name starts with prod
accept tag.level == "high"
# only scan rds instance name start with “test”
keep instance.name == "prod*"
# accept by default
accept "*"