本文为您介绍如何使用SDK创建跟踪,将操作事件投递到日志服务SLS,并配置日志服务报表。

前提条件

背景信息

使用操作审计控制台创建跟踪时,操作审计会自动创建日志服务项目(LogProject)、日志库(LogStore)及报表,并开启跟踪。使用SDK创建跟踪时,您需要手动创建日志服务项目(LogProject)、日志库(LogStore)及报表。创建跟踪后,您仍需手动开启跟踪。

步骤1:创建并配置日志服务

创建跟踪前,您需要创建日志项目(LogProject),并创建名为actiontrail_{TrailName} 的日志库(LogStore),其中TrailName是跟踪名称。

此外,如果需要对操作事件进行分析,还需要对日志库配置索引和报表。您可以使用日志服务的Python SDK(aliyun-log-python-sdk)创建并配置日志服务 。

  1. 在Visual Studio Code中新建Python文件。
  2. 安装依赖并初始化SDK。
    1. 安装依赖。
      $ pip install -U aliyun-log-python-sdk
    2. 初始化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请根据实际情况填写。
  3. 创建日志项目(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_storageTrue表示永久保存数据。
  4. 配置索引。
    1. 创建log_index.json索引配置文件。
      访问开源代码仓库,下载索引配置文件。
    2. 创建索引。
      import json
      from aliyun.log import LogClient
      from aliyun.log import IndexConfig
      
      def get_json_data(path):
          with open(path) 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)
  5. 创建报表。
    1. 创建log_dashboard.json报表配置文件。
      访问开源代码仓库,下载报表配置文件。
    2. 创建报表。
      #  从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)创建跟踪。

  1. 初始化SDK。
    1. 安装依赖。
      $ pip install aliyun-python-sdk-core
      $ pip install aliyun-python-sdk-actiontrail
    2. 初始化SDK。
      from aliyunsdkcore.client import AcsClient
      from aliyunsdkcore.acs_exception.exceptions import ClientException
      from aliyunsdkcore.acs_exception.exceptions import ServerException
      from aliyunsdkactiontrail.request.v20171204.CreateTrailRequest import CreateTrailRequest
      
      client = AcsClient(access_key_id, access_key_secret, region)
  2. 创建跟踪到指定日志项目(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表示已创建但未开启。您仍需开启跟踪。
  3. 启用跟踪。
    使用SDK调用StartLogging接口启用跟踪。
    from aliyunsdkactiontrail.request.v20171204.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'))
说明 您可以访问开源代码仓库,查看完整代码。