文档

使用SDK创建跟踪

更新时间:

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

前提条件

  • 请确保您已安装Pythonpip

  • 请确保您已安装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)创建并配置日志服务 。

  1. 在Visual Studio Code中新建Python文件。

  2. 安装依赖并初始化SDK。

    1. 安装依赖。

      $ pip install -U aliyun-log-python-sdk
    2. 初始化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请根据实际情况填写。

  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,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)
  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.v20200706.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.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'))
    说明

    您可以访问开源代码仓库,查看完整代码。

  • 本页导读 (1)
文档反馈