2025 AI 原生编程挑战赛 术语说明与FAQ

简介: 本文档介绍了天池2025比赛的相关术语和一些疑问的解答。包括云监控平台(CloudMonitor 2.0)、日志服务(SLS)、观测数据租户(Workspace)、地域(Region)等平台与入口概念,并详解了Trace、Span、Log、Metric、Event等核心数据模型及其关键字段。文档还涵盖了PromQL告警规则、SPL日志查询、Kubernetes实体层级、诊断方法论术语等内容,同时提供了根因分析的命名规范、提交格式(JSONL)、时间窗口要求及常见问题解答,旨在帮助参赛者高效定位并解决系统故障。

比赛术语说明

平台与入口

CloudMonitor 2.0(CMS 2.0,云监控 2.0)

阿里云统一的观测与告警平台,覆盖 Metric / Trace / Log / Event / Entity 五大数据域;题目数据在此查询与回放(CMS产品官方文档CMS Otel Demo介绍CMS Demo)。

SLS(日志服务)

日志与 Trace 数据的查询与分析平台;支持 SPL 高阶函数(模式挖掘、异常检测等)。常用于对 Copilot 结论做交叉验证SLS产品官方文档)。

Workspace(工作空间)

观测数据的租户边界(示例:tianchi-2025),进入控制台后需先选择正确工作空间,在页面刷新后请确保自己在tianchi-2025。

Region(地域)

数据所在区域(示例:cn-qingdao)。输入时间窗与查询均以该区域数据为准

APM / Trace Explorer(应用监控 / 调用链分析)

查看 Trace 列表与详情的入口;支持按错误/异常、时间窗筛选,配合拓扑快速定位最下游第一故障 span

Service Map(服务拓扑)

服务依赖可视化;节点/调用边展示错误率与时延,支持双击下钻。用于识别“主犯服务 vs 受害上游”。

Entity Explorer(实体查询)

云监控 2.0 的实体(K8s)维度分析入口;可用 SPL 的 entity_set / entity-call 调取 Deployment/Pod/Node 指标。

Copilot(页面内智能助手)

用于自动生成排障线索/解释最终结论需以 Trace/日志/SPL 交叉验证为准


数据模型与关键字段

Trace(调用链

一次分布式调用的全貌,由多个 Span 组成。字段:traceIdserviceNamespanName 等。

Span

调用链中的一个区段(服务/方法/外呼);字段:

  • spanIdparentSpanId(父子关系)
  • statusCode(0/1 正常;2/3 错误/异常
  • statusMessage(错误文本或异常摘要)
  • resources(JSON 扩展标签,见下)

resources(Trace/Span 扩展标签)

常用键:k8s.pod.ipk8s.node.nameservice.version。用于把异常定位到 Pod/Node/版本

Log(日志)

与 Trace 通过 traceId/spanId 关联;正文看 statusMessage,事件标记常在 events 字段。

Metric(指标)

本赛题告警口径涉及:

  • arms_app_requests_error_count_raw(报错数,30s 粒度)
  • arms_app_requests_seconds_raw{service="frontend"}(RT,单位秒)

Event(事件)

K8s 维度的变化/异常(如 Pod 逐出、Node NotReady)。用于验证 nodeKiller、OOM/重启等系统征兆。


K8s 实体层级(与 serviceName 的关系)

Deployment / Pod / Container / Node

  • Deployment:一组相同 Pod 的编排单位(本赛题中 serviceName ≈ Deployment 名)。
  • Pod:最小可调度单元,承载容器。
  • Node:K8s 节点(虚机/物理机)。
    Entity Explorer 中可按 Deployment 拉取 CPU/内存等指标并追溯至 Pod/Node。


告警与 PromQL 口径

overall_error_count(系统总错误数)

告警规则:30s 粒度总报错数 > 50。

PromQL:

(sum(arms_app_requests_error_count_raw) > bool 50)[2d:30s]

frontend_avg_rt(前端平均时延)

告警规则:frontend 服务 30s 平均 RT > 0.5s。

PromQL:

(avg(arms_app_requests_seconds_raw{service="frontend"}) > bool 0.5)[2d:30s]

术语:> bool 产生布尔序列;[2d:30s] 为区间向量(过去 2 天,按 30s 抽样)。


SPL(日志/实体查询)关键算子

以下介绍SPL关键算子,更多的SPL学习资料请见SPL教程手册

基础管道

project(列选择)、wherestats(聚合)、extend(新增列)、unnest(展开数组)。

远程函数开关

在 SLS 查询前置:

set session enable_remote_functions=true;
set session velox_support_row_constructor_enabled=true;

模式挖掘

  • get_log_patterns(contents, separators, options):从日志集合抽取高频模式与变量位。
  • diff_patterns(table_row, cols, label_col, pos_label, neg_label):对比异常/正常两类数据的差异模式。

序列异常分解

series_decompose_anomalies(series, options):对时间序列做异常点检测,返回得分与类型。

实体指标调用

  • entity_set with(domain, name, query=...):选定实体集合(如 k8s.deployment)。
  • entity-call get_metric(domain, metric_set, metric_name, range, step):按实体批量取指标序列。
    示例(查看 recommendation 的 CPU 使用与阈值占比):
.entity_set with(domain='k8s', name='k8s.deployment', query=`name='recommendation'`)
| entity-call get_metric('k8s','k8s.metric.high_level_metric_deployment','deployment_cpu_usage_total','range','1m')
.entity_set with(domain='k8s', name='k8s.deployment', query=`name='recommendation'`)
| entity-call get_metric('k8s','k8s.metric.high_level_metric_deployment','deployment_cpu_usage_vs_limits','range','1m')

时间与窗口

time_range(题目时间窗)

题目给定的唯一有效分析窗口。格式:

YYYY-MM-DD HH:mm:ss ~ YYYY-MM-DD HH:mm:ss(中间 空格 + ~ + 空格;左右边界包含)。

控制台按 北京时间(UTC+8) 解析;请原样粘贴题面时间。

execution_time_range(执行时间窗)

参赛者实际运行脚本/工具的起止时间(决赛必填,用于审计重放),格式与 time_range 一致。


根因命名与注入类型

语法

.

  • component:小写+短横线(例 frontend-proxyproduct-catalog
  • faultType驼峰(camelCase)

故障类型

  • failure:联通正常但返回业务错误(错误率↑)。
  • unreachable:不可达/超时(长尾时延↑)。
  • networkLatency:跨服务链路普慢(调用边拉长)。
  • cpu:服务内部计算饱和(段内 RT 普涨)。
  • memory:内存压力/OOM(重启/抖动)。
  • largeGc:JVM 大 GC(短时尖峰暂停)。
  • cacheFailure:缓存命中骤降、回源暴增。
  • floodHomepage:入口洪峰流量(压测/攻击/误配)。
  • nodeKiller:节点被杀/NotReady,多服务同抖。


提交与评测

candidate_root_causes(候选根因集合)

题目允许提交的根因列表(字符串数组)。答案必须从中选择

root_causes(最终答案集合)

选手输出的根因集合(字符串数组),须满足最小充分性

修复列表中所有注入点即可消警;去掉任一项则无法消警。

单注入题:仅该单点即答案。多注入题:提交去冗后的最小集合(建议 ≤ 5)。

executed_queries(执行过的查询/操作)

记录你实际执行过的查询(初赛可选、决赛必填)。元素格式:

{"dsl":"promql|spl|page","query":"查询串或页面路径"}

  • dsl=page 可写:dashboard: AIOps/Service Map > Drilldown(frontend)
  • 不得包含账号密钥等敏感信息

JSONL(答案文件格式)

UTF-8;一题一行;无注释/末尾逗号/空行。示例结构:

{"problem_id": "string","root_causes": ["<component>.<faultType>", "..."],"executed_queries": [ { "dsl": "promql|spl|page", "query": "string" } ]}

诊断方法论术语

独占耗时(Exclusive Time)

某 span 自身花费的时间(不含其子 span 的时间)。找“独占耗时长”的 span,可定位服务内部瓶颈(如 cpu/largeGc)。

最下游第一故障(First Error Downstream)

沿调用链向下游寻找首次出现 statusCode>1 且其子孙无更深层错误的 span,通常即根因点。

模式/差异分析(Patterns / Diff Patterns)

  • Patterns:在错误样本中抽取共性模式(如同一服务/方法/版本)。
  • Diff Patterns:比较“异常 vs 正常”两类数据,找显著差异特征(如异常仅出现在 serviceName=recommendation)。

FAQ

1. 账号、入口与区域

Q:控制台入口/工作空间是?

A:区域 cn-qingdao;工作空间一般为 tianchi-2025。进不去或搜不到,多半是权限/网络问题:清缓存、换网络、确认权限,再不行带截图到群里反馈。

Q:APM、SLS、实体查询分别在哪?

  • Trace/拓扑:APM → 调用链分析(Trace Explorer)、拓扑视图。
  • 日志(SPL):SLS 日志查询。
  • 实体(K8s 指标):实体查询(Entity Explorer),可用 entity_set / entity-call 拉 Deployment/Pod 指标。

2. 入门与整体

Q:我该如何最快上手?

A:按“三步走”:

  • 步1:告警入手定窗 + Trace/拓扑看“谁先错 / 谁拖慢”。
  • 步2:Trace 锁根因 + 日志模式/事件做铁证。
  • 步3:实体指标(或二次证据)交叉验证 → 输出最小充分集合并规范提交。

Q:A/B 榜区别?

A:A 榜题更友好,重在让你拿到分;B 榜更复杂/多注入,且数据集更换。评分以 B 榜为准。

Q:样例整体复现思路?

A:overall_error_count → Trace 错误瀑布 → 拓扑异常边落到 某个应用(如product-catalog) → SLS events/statusMessage 验证注入 → 提交 product-catalog.Failure

A:frontend_avg_rt → Trace 看独占耗时长的 span 聚集在 某个应用(如recommendation) → 实体查询 CPU 急升且显著异常 → 提交 recommendation.cpu

Q:服务依赖拓扑图会提供吗?

A:会在赛题说明中提供,也可参考CMS2.0的全链路拓扑。

Q:干扰项排除的思路是什么?

A:比赛环境中会有一些常态化的报错或者时延长期保持在比较高的水位,选手在页面或者通过脚本进行故障排查的时候需要识别在故障区间有【显著】变化的service/pod/node。

3. 时间与窗口

Q:题面 time_range 用什么时区?边界算不算?

A:以北京时间(UTC+8)。格式必须是

YYYY-MM-DD HH:mm:ss ~ YYYY-MM-DD HH:mm:ss(中间空格 + ~ + 空格),左右边界均包含。请把题面时间原样粘贴到控制台。

Q:粘贴时间后没数据?

A:常见原因:格式不对(少空格/少 ~)、区域或工作空间错、数据延迟、限流。先缩小时间窗、加 limit,再确认“错误/异常”筛选是否勾上。

4. 候选根因与命名

Q:答案必须跟候选集合一模一样吗?

A:必须。root_causes 必须是题目的 candidate_root_causes 子集,字符串逐字一致(包含大小写与连字符/驼峰风格)。题面若给了不同风格写法,以题面为准。

Q:根因命名的语法是什么?

A:通用规范为 .component 小写+短横线,如 product-catalogfaultType 驼峰,如 networkLatencycacheFailure 等)。再次强调:提交时请照抄题面候选项。

5. 页面操作要点

Q:Trace Explorer 里“错误/异常”对应什么?

A:对应 statusCode in (2,3)。列表点“详情”进入调用瀑布图,优先定位最下游第一故障(其子孙没有更深层错误的那个 span)。

Q:服务拓扑怎么看主因?

A:看异常节点/异常边(错误率升高/RT 拉长),从上游沿边下钻,找到下游首次报错的服务/方法,并回到 Trace 细看该服务的错误链路。

Q:Copilot 说的能直接信吗?

A:把 Copilot 当线索。最后结论务必用 Trace/日志/SPL 做可复现验证(如 events 或日志模式)。

6. 我需要哪些字段?

Q:Trace/日志要看哪些字段?

  • Trace/Span:traceIdspanIdparentSpanIdserviceNamespanNamestatusCodestatusMessageresources(k8s.pod.ip / k8s.node.name / service.version)
  • Log:对齐 traceId/spanId,重点看 statusMessageevents
  • Metric:arms_app_requests_error_count_raw(总错误数)、arms_app_requests_seconds_raw{service="frontend"}(RT)。

7. 典型故障怎么快速区分?

Q:failure / unreachable / networkLatency 怎么分?

  • failure:能连上但返回错误 → 错误率升高。
  • unreachable:连不上或超时 → 长尾时延明显、超时错误多。
  • networkLatency:跨服务链路普遍变慢 → 多条调用边 RT 拉长。

Q:cpu / memory / largeGc 的直觉特征?

  • cpu:服务内部段 RT 普涨,实体 CPU 使用显著升高。
  • memory:抖动/重启(OOM),实体层能看到重启/内存接近限值。
  • largeGc:短时尖峰暂停(JVM),错误集中于 Java 服务并快速恢复。

Q:cacheFailure / floodHomepage / nodeKiller 呢?

  • cacheFailure:命中骤降、回源暴涨,下游承压。
  • floodHomepage:入口流量洪峰,前端/网关先变慢/丢请求。
  • nodeKiller:某节点 NotReady/被杀,多服务同时抖动并发生迁移。

8. 提交与审计

Q:答案文件的格式是什么?

A:JSONL(UTF-8),一题一行,结构如下(无注释/空行/末尾逗号):

{"problem_id": "string","root_causes": ["<component>.<faultType>", "..."],"executed_queries": [{ "dsl": "promql|spl|page", "query": "string" }],"execution_time_range": "YYYY-MM-DD HH:mm:ss ~ YYYY-MM-DD HH:mm:ss"}

Q:executed_queriesexecution_time_range 什么时候必填?

A:决赛必填。

  • executed_queries:写你实际执行过的查询或页面路径(dsl=page 可写“Dashboard 名称 / 下钻路径 / 关键筛选”)。
  • execution_time_range:你脚本/工具实际运行的起止时间,用于审计重放。

9. 常见格式错误与自检

Q:最常见扣分点?

  • root_causes 不在候选集合或大小写/风格不一致;
  • 时间窗格式不合规(缺空格或 ~);
  • 越窗取证(使用 time_range 外数据);
  • 多注入题未做去冗(非最小充分集);
  • JSONL 一行多对象/空行/注释。

Q:提交前自检清单

  • JSONL 一题一行,无注释/空行/末尾逗号。
  • 所有 root_causes 在候选集合内,字符串逐字一致。
  • 多注入题做过“去一项测试”(最小充分)。(决赛)
  • executed_queriesexecution_time_range 已填写且可复现。

10. 限流与兜底

Q:查询超时/限流怎么办?

A:缩小 time_range、加 limit;先按服务聚合,再下钻;必要时拆分查询(分服务/分分钟段)。

Q:Copilot 不稳定时如何兜底?

A:直接使用上面的SPL 模板完成模式/差异/实体指标验证。

相关文章
|
人工智能 运维 监控
2025 AI 原生编程挑战赛 数据获取文档
本文介绍了参赛者如何配置阿里云服务以参加AI运维赛。首先开通阿里云日志服务,随后创建RAM用户并为其分配访问权限。接着为该用户授权,确保其具备读取数据的权限。最后,可选地创建或重新生成AccessKey以用于后续的数据查询操作。整个流程帮助选手完成基础环境配置,以便使用阿里云日志服务进行数据分析。
152 0
|
6天前
|
存储 消息中间件 人工智能
Lazada 如何用实时计算 Flink + Hologres 构建实时商品选品平台
本文整理自 Lazada Group EVP 及供应链技术负责人陈立群在 Flink Forward Asia 2025 新加坡实时分析专场的分享。作为东南亚领先的电商平台,Lazada 面临在六国管理数十亿商品 SKU 的挑战。为实现毫秒级数据驱动决策,Lazada 基于阿里云实时计算 Flink 和 Hologres 打造端到端实时商品选品平台,支撑日常运营与大促期间分钟级响应。本文深入解析该平台如何通过流式处理与实时分析技术重构电商数据架构,实现从“事后分析”到“事中调控”的跃迁。
109 30
Lazada 如何用实时计算 Flink + Hologres 构建实时商品选品平台
|
12天前
|
人工智能 监控 JavaScript
从零开始学MCP(4) | 连接 MCP 客户端:从聊天机器人到智能体
本指南详解2025年如何打通Claude、Cursor及自定义客户端,构建企业级AI智能体系统。涵盖MCP双向通信架构、主流客户端连接配置、智能体系统实战、安全认证、性能优化及部署方案,助你掌握下一代AI应用核心技术。
|
13天前
|
人工智能 自然语言处理 安全
大模型备案材料—《安全评估报告》撰写指南
本文详解大模型备案中的关键材料——《安全评估报告》的撰写要点,涵盖报告框架、必备内容、注意事项及基础信息,助你高效通过备案。
|
监控
使用云监控2.0页面诊断问题根因-错误分析指南
针对一次故障的根因诊断,通过云监控2.0调用链分析。
111 0
使用云监控2.0页面诊断问题根因-错误分析指南
|
运维 Kubernetes 容器
使用SPL快速诊断问题根因 -- 延迟分析指南
查找故障时段内系统异常根因。
52 0
|
30天前
|
人工智能 监控 数据可视化
基于YOLOv8的无人机位置捕捉识别项目|完整源码数据集
本项目基于YOLOv8构建无人机目标检测系统,集成PyQt5图形界面,支持图像、视频、摄像头等多种输入方式,具备高精度识别与实时检测能力,适用于安防监控、目标跟踪等场景。含完整训练代码、数据集及部署教程,开箱即用,适合AI学习与工程实践。
基于YOLOv8的无人机位置捕捉识别项目|完整源码数据集
|
4天前
|
人工智能 前端开发 JavaScript
前端实现多方言实时转写:VAD端点检测+流式ASR接入,识别准确率提升300%
本文面向前端工程师,详解多方言中文自动语音识别(ASR)的完整落地接入方案,涵盖录音采集、音质增强、编码传输、流式识别、结果合并等关键技术环节,助力实现“即录即识、边说边出字”的实时交互体验。
|
6天前
|
人工智能 运维 监控
IT运维数字化转型:不是换工具,而是换思路
IT运维数字化转型:不是换工具,而是换思路
62 9
|
5天前
|
人工智能 搜索推荐 算法
AI提示词的四种学习姿势:让你的AI像朋友一样懂你
想象一下,你有个超级聪明的AI朋友,但它不知道你想要什么。本文用最轻松的方式告诉你,如何通过四种不同的'教学姿势',让AI秒懂你的需求,从完全不懂到心有灵犀,一步步成为你的最佳拍档!