更新时间:2026-08-07 GMT+08:00
分享

Log数据上报

Log数据用于记录智能体运行过程中产生的日志信息,便于排查异常、追踪运行状态。日志最终写入华为云的LTS(云日志服务)。

AgentArts支持通过API方式接入日志采集

表1 Log数据采集方式说明

接入方式

适用场景

说明

API接入

通用场景,需主动调用LTS接口手动上报日志。

在智能体代码中直接调用LTS提供的REST API,主动将日志数据推送至LTS。需要修改业务代码添加上报逻辑,但对智能体的部署环境没有限制。

  • 接入复杂度:需要自行构造HTTP请求。
  • 鉴权方式:通过X-Auth-Token鉴权。
  • 需要准备的参数:lts_exporter_endpoint、project_id、lts_group_id、lts_stream_id、agent_id、agent_type

上报的日志数据将写入华为云LTS(云日志服务),LTS会根据日志数量按需计费,详细计费规则请参考LTS计费说明

API接入

通过调用LTS REST API,在代码中主动上报日志数据。

接入地址

POST {lts_exporter_endpoint}/v2/{project_id}/lts/groups/{lts_group_id}/streams/{lts_stream_id}/tenant/contents

URI中的四个路径参数,取值可在平台页面获取,详细获取方法可参考后续步骤:

表2 路径参数

参数

是否必选

参数类型

说明

lts_exporter_endpoint

String

LTS的接入地址。

project_id

String

华为云项目ID。

log_group_id

String

日志组ID。

log_stream_id

String

日志流ID。

每个日志流写入速率最大不能超过100MB/s,超过此规格可能会导致日志丢失。

图1 获取路径参数取值

请求头

Content-Type: application/json;charset=UTF-8
X-Auth-Token: {从IAM获取的用户Token}

注意:与Trace/Metric上报使用OTel SDK + 专用Token不同,Log上报使用的是IAM用户Token(X-Auth-Token)进行鉴权,获取方法请参考附录:获取Token

请求体结构

{
  "log_time_ns": 1586850540000000000,
  "contents": [
    "Fri Feb  1 07:48:04 UTC 2019 0",
    "Sat April 18 16:04:04 UTC 2019"
  ],
  "labels": {
    "__label__.task_name": "{{agent_id}}",
    "__label__.task_type": "{{agent_type}}"
  }
}
表3 请求体参数

参数

是否必填

类型

说明

log_time_ns

Long

日志上报时间,UTC时间(纳秒)。上报时间距当前时间不可超过2天,否则日志将被LTS自动删除。

contents

Array of String

日志内容,字符串数组,每个元素为一条日志记录,支持一次上报多条。

labels

Object

自定义标签,用于日志分类与过滤。

__label__.task_name为必填字段(填写智能体ID),__label__.task_type为必填字段(填写智能体类型,如agent、multiagents、workflow,分别表示单智能体、多智能体、工作流)。

请勿使用LTS内置保留字段作为标签名称,否则可能造成字段名称重复、查询不精确等问题。

上报Log数据示例代码

本示例使用手动构造的静态模拟数据,用于首次接入AgentArts时,验证接入地址、鉴权Token、日志组ID及日志流ID是否配置正确,并确认平台能否正常接收日志数据。此阶段使用手动构造的静态数据,不涉及真实的智能体调用。

  1. 获取上报参数。

    1. 在AgentArts平台左侧导航栏中选择“运营运维 > 观测”,并进入“智能体列表”页面。
    2. 单击“智能体接入”,填写智能体名称,并选择类型。类型按实际选择。
      图2 智能体接入
    3. 填写完成后,单击“创建”等待平台自动创建接入信息,记录接入地址、鉴权信息、智能体ID等信息。请妥善保管该信息。
      表4 接入信息说明

      参数

      说明

      lts_exporter_endpoint

      project_id

      log_group_id

      log_stream_id

      选择“Log上报 > API接入”,平台会提供完整的接入地址,各参数取值地址中均有包含。

      __label__.task_name

      __label__.task_type

      分别表示智能体ID、智能体类型。

  2. 安装依赖库。

    pip install requests==2.31.0
    pip install python-dotenv==1.0.0

  3. 编写日志上报脚本。

    import time
    import requests
    
    # 1. 替换为您的真实接入凭证
    AGENT_ID = "您的智能体ID"
    AGENT_TYPE = "您的智能体类型"
    LTS_ENDPOINT = "从平台复制的完整Log接入地址"
    X_AUTH_TOKEN = "您的IAM用户Token"
    
    # 2. 请求头
    HEADERS = {
        "Content-Type": "application/json;charset=UTF-8",
        "X-Auth-Token": X_AUTH_TOKEN,
    }
    
    def test_connection():
        # 【注意】此处为模拟数据,仅供测试连通性,实际场景需在智能体交互流程中动态上报
        payload = {
            "log_time_ns": int(time.time() * 1e9),
            "contents": [
                "[INFO] 连通性测试日志 - 智能体启动",
                "[INFO] 连通性测试日志 - 模型调用成功",
            ],
            "labels": {
                "__label__.task_name": AGENT_ID,
                "__label__.task_type": AGENT_TYPE
            }
        }
    
        response = requests.post(LTS_ENDPOINT, headers=HEADERS, json=payload)
    
        if response.status_code in (200, 201, 204):
            print("连通性测试成功,请前往AgentArts控制台查看日志数据。")
        else:
            print(f"连通性测试失败,状态码:{response.status_code},响应:{response.text}")
    
    if __name__ == "__main__":
        test_connection()

  4. 运行Python脚本,执行测试,验证上报数据。

附录:获取Token

Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。

Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。

Token可通过调用“获取用户Token”接口获取,请求示例如下所示。

usernamedomainname、project name可登录控制台“我的凭证 > API凭证”页面获取。password为用户密码。

图3 获取凭证
  • 伪码
    POST https://iam.cn-southwest-2.myhuaweicloud.com/v3/auth/tokens
    Content-Type: application/json
    { 
        "auth": { 
            "identity": { 
                "methods": [ 
                    "password" 
                ], 
                "password": { 
                    "user": { 
                        "name": "username", //IAM用户名
                        "password": "********", //密码
                        "domain": { 
                            "name": "domainname" //账号名
                        } 
                    } 
                } 
            }, 
            "scope": { 
                "project": { 
                    "name": "project name" //替换为实际的project name,如cn-southwest-2
                } 
            } 
        } 
    }
  • Python
    import requests
    import json
    
    url = "https://iam.cn-southwest-2.myhuaweicloud.com/v3/auth/tokens"
    payload = json.dumps({
      "auth": {
        "identity": {
          "methods": [
            "password"
          ],
          "password": {
            "user": {
              "name": "username",
              "password": "********",
              "domain": {
                "name": "domainname"
              }
            }
          }
        },
        "scope": {
          "project": {
            "name": "cn-southwest-2"
          }
        }
      }
    })
    headers = {
      'Content-Type': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload)
    
    print(response.headers["X-Subject-Token"])

常见问题

调用API后,AgentArts观测页面看不到日志数据怎么办?
  1. 检查接入参数:确认lts_group_id、lts_stream_id、project_id、lts_exporter_endpoint与接入指南中获取的信息一致。
  2. 检查鉴权Token:确认X-Auth-Token为有效的IAM用户Token,Token存在24小时有效期,过期后需重新获取。
  3. 检查labels取值:该字段为必填项,必须填写智能体ID、智能体类型,缺失或填写错误将导致平台无法关联日志至对应智能体。
  4. 检查时间戳:log_time_ns必须为纳秒级UTC时间戳,且与当前时间相差不超过2天,超出时间范围的日志会被LTS自动删除。
  5. 等待数据同步:数据上报后通常需要1~2分钟才能在观测页面展示,请稍后刷新查看。

相关文档