使用SDK创建跟踪
本文为您介绍如何使用SDK创建跟踪,将操作事件投递到日志服务SLS,并配置日志服务报表。
前提条件
请确保您已安装Python编辑工具。本文以Visual Studio Code为例进行介绍。
请确保您已获取阿里云账号或RAM用户的AccessKey ID和AccessKey Secret。
本示例使用了阿里云Credentials工具托管AccessKey,来实现API访问的身份验证。具体操作,请参见身份验证配置。
重要阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。请您不要将AccessKey ID和AccessKey Secret保存到工程代码中,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
背景信息
使用操作审计控制台创建跟踪时,操作审计会自动创建日志服务项目(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 from alibabacloud_credentials.client import Client as CredClient # 华东 1 (杭州) Region region = 'cn-hangzhou' # 日志服务入口 endpoint = '{region}.log.aliyuncs.com'.format(region=region) # 使用默认凭证Credentials Client cred = CredClient() # 托管AccessKey中的AccessKey ID access_key_id = cred.get_access_key_id() # 托管AccessKey中的AccessKey Secret access_key_secret = cred.get_access_key_secret() # 阿里云账号ID account_id = '123456789' client = LogClient(endpoint, access_key_id, access_key_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'))
说明您可以访问开源代码仓库,查看完整代码。