本文为您介绍如何使用SDK创建跟踪,将操作事件投递到日志服务SLS,并配置日志服务报表。
背景信息
使用操作审计控制台创建跟踪时,操作审计会自动创建日志服务项目(LogProject)、日志库(LogStore)及报表,并开启跟踪。使用SDK创建跟踪时,您需要手动创建日志服务项目(LogProject)、日志库(LogStore)及报表。创建跟踪后,您仍需手动开启跟踪。
步骤1:创建并配置日志服务
创建跟踪前,您需要创建日志项目(LogProject),并创建名为actiontrail_{TrailName}
的日志库(LogStore),其中TrailName
是跟踪名称。
此外,如果需要对操作事件进行分析,还需要对日志库配置索引和报表。您可以使用日志服务的Python SDK(aliyun-log-python-sdk)创建并配置日志服务 。
- 在Visual Studio Code中新建Python文件。
- 安装依赖并初始化SDK。
- 安装依赖。
$ pip install -U aliyun-log-python-sdk
- 初始化SDK。
from aliyun.log import LogClient
# 华东 1 (杭州) Region
region = 'cn-hangzhou'
# 日志服务入口
endpoint = '{region}.log.aliyuncs.com'.format(region=region)
# 用户访问密钥对中的AccessKey ID
access_key_id = 'ABCDEFGHIJK****'
# 用户访问密钥对中的AccessKey Secret
access_key_secret = 'OPQRSTUV****'
# 阿里云账号ID
account_id = '123456789'
client = LogClient(endpoint, access_key_id, access_key_secret)
说明 地域、AccessKey ID、AccessKey Secret和阿里云账号ID请根据实际情况填写。
- 创建日志项目(LogProject)和日志库(LogStore)。
# 跟踪名称
trail_name = 'cloud_trail'
# 日志项目名称
log_project_name = 'cloud-trail-project'
# 创建日志服务
res = client.create_project(log_project_name, '操作审计事件日志项目')
res.log_print()
# 日志库名称
log_store_name = 'actiontrail_{trail_name}'.format(trail_name=trail_name)
# 创建日志库
res = client.create_logstore(log_project_name, log_store_name, shard_count=3, preserve_storage=True)
res.log_print()
说明 跟踪名称、日志项目名称和日志库名称请根据实际情况填写。创建日志库时,指定preserve_storage
为True
表示永久保存数据。
- 配置索引。
- 创建
log_index.json
索引配置文件。
- 创建索引。
import json
from aliyun.log import LogClient
from aliyun.log import IndexConfig
def get_json_data(path):
with open(path,encoding='utf-8') as f:
return json.load(f)
# 从log_index.json中读取索引配置
index_json = get_json_data('./log_index.json')
index_detail = IndexConfig()
index_detail.from_json(index_json)
# 创建索引
client.create_index(log_project_name, log_store_name, index_detail)
- 创建报表。
- 创建
log_dashboard.json
报表配置文件。
- 创建报表。
# 从log_dashboard.json中读取报表配置
dashboard_detail = get_json_data('./log_dashboard.json')
# 创建报表
client.create_dashboard(log_project_name, dashboard_detail)
步骤2:创建并启用跟踪
您可以使用阿里云Python SDK(aliyun-python-sdk-core)创建跟踪。
- 初始化SDK。
- 安装依赖。
$ pip install aliyun-python-sdk-core
$ pip install aliyun-python-sdk-actiontrail
- 初始化SDK。
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkactiontrail.request.v20200706.CreateTrailRequest import CreateTrailRequest
client = AcsClient(access_key_id, access_key_secret, region)
- 创建跟踪到指定日志项目(LogProject)。
使用SDK调用
CreateTrail接口创建跟踪。
sls_project_arn = 'acs:log:{region}:{account_id}:project/{log_project_name}'.format(
region=region,
account_id=account_id,
log_project_name=log_project_name,
)
request = CreateTrailRequest()
request.set_accept_format('json')
# 设置跟踪名称
request.set_Name(trail_name)
# 设置SLS Project的ARN
request.set_SlsProjectArn(sls_project_arn)
# 跟踪所有事件
request.set_EventRW("All")
# 跟踪所有地域
request.set_TrailRegion("All")
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))
说明 创建跟踪后,跟踪状态为Fresh表示已创建但未开启。您仍需开启跟踪。
- 启用跟踪。
使用SDK调用
StartLogging接口启用跟踪。
from aliyunsdkactiontrail.request.v20200706.StartLoggingRequest import StartLoggingRequest
request = StartLoggingRequest()
request.set_accept_format('json')
request.set_Name(trail_name)
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))