宠物用品技术支持 东莞网站建设,做内部网站cms,宝塔wordpress,哪个行业必须做网站作者#xff1a;张鑫#xff08;千乘#xff09;
点击此处#xff0c;查看视频演示#xff01;
前文回顾#xff1a;
《基于 UModel 高效构建可观测场景统一实体搜索引擎》
《构建数据资产“导航地图”#xff1a;详解 UModel 数据发现与全链路分析能力》
《打通可…作者张鑫千乘点击此处查看视频演示前文回顾《基于 UModel 高效构建可观测场景统一实体搜索引擎》《构建数据资产“导航地图”详解 UModel 数据发现与全链路分析能力》《打通可观测性的“任督二脉”实体与关系的终极融合》背景基于 UModel 构建的可观测系统访问可观测数据需要上层应用感知 EntitySet、DataSet、Storage、Filter 等多个概念给 UI、算法、客户等使用方带来了较高的开发和维护成本。典型场景查询 APM 服务的请求量指标假设上层应用需要实现查询某个 APM 服务的请求量指标开发者需要经历以下步骤开发者需要了解的知识实体关联服务实体关联哪个 MetricSet存储路由MetricSet 使用哪个 MetricStoreRegion/Project/存储名称是什么字段映射Entity 的service_id对应存储的哪个字段如acs_arms_service_id查询语法如何编写 PromQL 表达式rate(arms_app_requests_count_raw{...}[1m])SPL 拼接如何组装成完整的查询语句完整的开发步骤Step 1: 查询 UModel 元数据 ↓ 找到 service EntitySet 关联的 MetricSet ↓ 如果 DataLink 中包含 FilterByEntity还需根据实体数据过滤 Step 2: 解析 MetricSet 配置 ↓ 根据 StorageLink 获取底层 MetricStore 连接信息 ↓ 获取 Region/Project/MetricStore 名称 Step 3: 查看字段映射 ↓ 从 DataLink 中获取字段映射表 ↓ 确认 service_id → acs_arms_service_id Step 4: 构造 PromQL 表达式 ↓ 根据指标定义拼接查询表达式 ↓ 处理聚合规则、时间窗口 Step 5: 拼接并执行查询 ↓ 使用正确的 label 和 MetricStore ↓ 拼接完整的 SPL 语句并执行最终查询语句示例.metricstore with(regioncn-hangzhou, projectcms-xxx, metricstoremetricstore-apm) |prom-call promql_query_range(sum by (acs_arms_service_id) (rate(arms_app_requests_count_raw{acs_arms_service_idxxx}[1m])),1m)痛点痛点 1概念复杂学习门槛高问题描述开发者必须深入理解 UModel 架构EntitySet、DataSet、DataLink、StorageLink、Filter 等多个概念需要了解 DataSet 与 Storage 的关联关系、Filter 路由逻辑、字段映射规则新人上手困难老手也容易遗漏细节影响开发效率低维护成本高痛点 2复杂场景实现困难问题描述存储路由查找需要理解多个 MetricSet 之间的选择逻辑字段映射处理Entity 字段 → 存储字段的映射规则复杂过滤条件筛选FilterByEntity 规则匹配逻辑难以掌握多次查询拼接需要多次查询元数据再构建数据查询影响增加代码复杂度出错概率高痛点 3底层存储语法逃不掉问题描述MetricSet 可能由 MetricStore 或 LogStore 实现查询方式完全不同PromQL vs SPL不同存储提供商ARMS MetricStore、Aliyun Prometheus语法有差异开发者仍需精通底层查询语言影响同样的需求需要编写不同的代码无法统一痛点 4多次查询交互效率低问题描述先查询 UModel Meta 获取配置 → 再根据 Meta 查询数据需要自己处理数据拼接和关联每个使用方都要实现类似逻辑代码重复度高影响集成成本高查询延迟大出错概率增加目标与架构设计目标针对上述四大痛点UModel PaaS API 的设计目标是屏蔽底层复杂性统一访问接口使上层应用更加专注业务逻辑实现核心设计原则自动化处理自动路由、字段映射、查询转换统一 SPL 语法所有数据类型使用一致接口面向对象编程实体方法调用、关系导航AI 友好反射能力支持 AI Agent 自主探索设计理念两层抽象访问 UModel 数据时需要单独通过 SPL 去访问指标、日志、链路等各种数据每种数据都有不同的访问方式没有统一的抽象。UModel PaaS API 采用两层抽象的设计思路第一层抽象Table 模式表格化抽象将所有数据——指标、日志、链路、性能剖析——统一抽象成表格结构所有查询都是针对表格数据进行操作。价值统一了查询语言开发者不需要关心底层是 PromQL 还是 SLS SPL都用同一套 SPL 语法。第二层抽象Object 模式对象级抽象表格模式解决了数据访问的统一性但还不够。我们还需要以实体为中心的抽象。传统方式查询一个服务的指标需要知道这个服务关联哪个 MetricSet、字段如何映射、过滤条件怎么写…Object 模式只需要说“这个服务给我它的指标”系统自动处理字段映射、过滤条件、存储路由。价值面向对象的思想把实体当成对象把查询当成方法调用service.get_metric()。第三层能力元数据查询反射能力提供动态能力发现、配置验证等高级功能让 AI Agent 可以自主探索、自主决策。价值AI Agent 能够通过反射能力动态发现实体的能力边界实现真正的智能运维。架构分层1. 存储层统一EntityStore/LogStore/MetricStore → SPL自动完成存储路由、字段映射service_id → acs_arms_service_id、过滤、查询语法的转换。上层应用对存储切换无感知。2. 数据层统一Table 模式直接访问 DataSet声明式查询支持完整 SPL Pipeline。.metric_set with(domainapm, nameservice.request, queryservice_idxxxx) | stats avg(latency) .log_set with(domainapm, nameservice.error_log queryservice_idxxx) | where levelERROR3. 对象层统一Object 模式以实体为中心自动处理底层细节支持动态能力发现和配置检查。# 数据访问 .entity_set with(domainapm, nameapm.service, ids[404e5d6be468f6dfaeef37a014322423]) | entity-call get_metric(apm, apm.metric.apm.service, avg_request_latency_seconds, range, , false) # 能力发现Agent 自主决策的关键 .entity_set with(domainapm, nameservice) | entity-call __list_method__() # 配置检查 .entity_set with(domainapm, nameservice) | entity-call __inspect__()API 说明UModel PaaS API 提供三大核心能力满足不同场景的查询需求Table 模式- 直接访问数据集适合批量数据分析Object 模式- 以实体为中心适合实体详情查询和关系分析元数据查询- 反射能力和配置验证支持 AI Agent 和开发调试Table 模式Table 模式Phase 1提供直接访问 DataSetMetricSet、LogSet、TraceSet 等的能力返回表格化的可观测数据适用于不依赖实体关系的数据查询场景。如直接查询某个 MetricSet 中的指标数据或查询某个 LogSet 中的日志无需关联实体信息。# 读取 apm.metric.apm.service MetricSet对应的avg_request_latency_seconds的指标 # 并对该指标进行异常检测 .metric_set with(domainapm, nameapm.metric.apm.service, metricavg_request_latency_seconds, sourcemetrics) | extend r series_decompose_anomalies(__value__) | extend anomaly_b r.anomalies_score_series , anomaly_type r.anomalies_type_series , __anomaly_msg__ r.error_msg | extend x zip(anomaly_b, __ts__, anomaly_type, __value__) | extend __anomaly_rst__ filter(x, x- x.field0 0) | project __entity_id__, __labels__, __anomaly_rst__, __anomaly_msg__核心特点直接访问直达 DataSet无需查询实体元数据语法简洁类似 SQL 的 SPL 语法易于理解全量数据返回 DataSet 中符合条件的所有数据语法.type with(domain, name, ...) | SPL Pipeline更多参数说明请参考文档Phase 1 Table 模式[1]。Object 模式Object 模式Phase 2提供以实体为中心的面向对象查询能力自动处理实体与数据的关联关系、字段映射、关系查询等复杂逻辑适用于需要实体上下文的业务场景。如查询某个具体服务的指标、日志、链路数据或查询与该服务有调用关系的其他服务系统自动完成字段映射和数据过滤。# 查询特定服务的请求延迟指标自动处理字段映射和 FilterByEntity .entity_set with(domainapm, nameapm.service, ids[21d5ed421ae93973d67a04af551b48b8]) | entity-call get_metric(apm, apm.metric.apm.service, avg_request_latency_seconds, range, 30s, false) | project __entity_id__, __ts__, __value__, __labels__核心优势零配置过滤自动处理 FilterByEntity无需手动拼接过滤条件字段映射透明自动转换service_id → acs_arms_service_id等映射面向对象语义entity.get_metric()符合开发者思维习惯语法.entity_set with(domain, name, id, query) | entity-call 方法(参数) | SPL pipeline更多参数说明请参考文档Phase 2 Object 模式[2]。元数据查询方法元数据查询方法提供动态发现和反射能力用于查询实体的关联关系、数据集配置、支持的方法等元数据信息既可以帮助开发者理解实体能力也是实现 AI Agent 自主决策和配置验证的关键基础。如查询某个服务实体支持哪些方法__list_method__()、关联了哪些数据集list_data_set()、与哪些其他服务有调用关系list_related_entity_set()、配置是否正确__inspect__()。# 动态发现实体支持的所有方法反射能力 .entity_set with(domainapm, nameapm.service) | entity-call __list_method__() # 返回方法列表及参数定义 # [ # {name: get_metric, params: [...], description: 获取指标数据}, # {name: list_related_entity_set, params: [...], description: 查询关联实体}, # ... # ]核心价值反射能力__list_method__()让 AI Agent 能自主探索实体的能力边界配置验证__inspect__()一键检查 DataSet、Link、字段映射等配置完整性关系查询list_related_entity_set()快速获取拓扑关系无需查询图数据库能力发现list_data_set()了解实体关联的所有观测数据类型语法.entity_set with(domain, name, id, query) | entity-call 方法(参数)更多参数说明请参考文档Phase 2 Object 模式。查询方式UI 方式登录云监控 2.0 控制台点击实体探索 - SPL输入 SPL如下图所示.entity\_set with(domainapm, nameapm.service, ids[21d5ed421ae93973d67a04af551b48b8]) | entity-call get_metric(apm, apm.metric.apm.service, avg_request_latency_seconds, range, , false)DryRun 模式DryRun 模式返回对应的 Query不执行当前 Query也支持手动设置运行模式。# 开启dry_run模式 .set umodel_paas_modedry_run; .entity_set with(domainapm, nameapm.service) | entity-call get_metric(apm, apm.metric.apm.service, avg_request_latency_seconds, range, , false)UI 开启 DryRun 模式SDK 方式通过阿里云 OpenAPI[3]下载 SDK代码如下package main import ( fmt cms20240330 github.com/alibabacloud-go/cms-20240330/v3/client openapi github.com/alibabacloud-go/darabonba-openapi/v2/client github.com/alibabacloud-go/tea/tea credential github.com/aliyun/credentials-go/credentials os ) func CreateClient() (_result *cms20240330.Client, _err error) { credential, _err : credential.NewCredential(nil) if _err ! nil { return _result, _err } config : openapi.Config{ Credential: credential, } config.Endpoint tea.String(cms.cn-hangzhou.aliyuncs.com) _result cms20240330.Client{} _result, _err cms20240330.NewClient(config) return _result, _err } func _main(args [ ]*string) (_err error) { client, _err : CreateClient() if _err ! nil { return _err } getEntityStoreDataRequest : cms20240330.GetEntityStoreDataRequest{ Query: tea.String(.entity_set with(domainapm, nameapm.service, ids[21d5ed421ae93973d67a04af551b48b8]) | entity-call get_metric(apm, apm.metric.apm.service, avg_request_latency_seconds, range) ), From: tea.Int32(1762244123), To: tea.Int32(1762244724), } if result, err : client.GetEntityStoreData(tea.String(o11y-demo-cn-hangzhou), getEntityStoreDataRequest); err ! nil { return err } else { fmt.Printf(length: %d, len(result.Body.Data)) return nil } } func main() { err : _main(tea.StringSlice(os.Args[1:])) if err ! nil { panic(err) } }参数说明程序运行go build -o demo . export ALIBABA_CLOUD_ACCESS_KEY_SECRETYOUR_ACCESS_SECRET export ALIBABA_CLOUD_ACCESS_KEY_IDYOUR_ACCESS_KEY_ID ./demo示例集成算子实现高阶能力UModel 高阶查询 时序异常检测算子通过 UModel 高阶 API 集成 SLS 时序异常检测算子series_decompose_anomalies一行查询实现智能异常检测。如监控某个 APM 服务的请求延迟当出现异常突刺、趋势变化、平台变化时触发告警。.entity_set with(domainapm, nameapm.service, ids[21d5ed421ae93973d67a04af551b48b8]) | entity-call get_metric(apm, apm.metric.apm.service, avg_request_latency_seconds, range, 30s, false) | extend r series_decompose_anomalies(__value__) | extend anomaly_b r.anomalies_score_series , anomaly_type r.anomalies_type_series , __anomaly_msg__ r.error_msg | extend x zip(anomaly_b, __ts__, anomaly_type, __value__) | extend __anomaly_rst__ filter(x, x- x.field0 0) | project __entity_id__, __labels__, __anomaly_rst__, __anomaly_msg__返回结果支持的异常类型SPIKE_UP / SPIKE_DOWN- 向上/向下突刺TREND_SHIFT_UP/TREND_SHIFT_DOWN- 趋势上升/下降LEVEL_SHIFT_UP/LEVEL_SHIFT_DOWN- 平台上升/下降如下图数据互联互通关联自定义 LogStore在实际生产环境中业务数据往往分散在多个存储中。例如UModel 中存储了 APM 服务的拓扑关系、指标、链路、日志业务系统的自定义日志存储在独立的 LogStore 中如订单日志、支付日志、用户行为日志通过 UModel 高阶 API SPL join 能力可以打通 UModel 实体数据与自定义业务数据实现统一视角分析将应用性能问题与业务日志关联分析快速定位问题从服务异常快速定位到具体业务操作端到端追踪从业务请求到技术指标的全链路分析典型场景某个 APM 服务出现延迟异常 → 关联业务订单日志 → 定位到具体慢查询的订单 ID某个服务的错误日志激增 → 关联用户行为日志 → 分析是哪些用户操作触发了异常分析服务调用链路 → 关联业务流程日志 → 追踪完整的业务流转路径示例# 场景关联自定义的logstore日志信息 # SPL: # 1. 从业务LogStore中找到失败的traceId以及msg .let failed_log .logstore with(project‘xxx’, logstore‘xxxx’, query‘*) | project trace_id, msg; # 2. 查询服务的Trace数据 .let service_traces .entity_set with(domainapm, nameapm.service, ids[xxxx]) | entity-call get_trace(‘apm‘, ’apm.trace.common’); $failed_log | join $service_traces on trace_id $service_traces.traceId | project msg集成 AI Agent通过反射能力实现自主决策将 UModel PaaS API 封装为 MCP Tools[4]通过反射能力__list_method__()让 AI Agent 具备自主探索和决策能力实现智能运维分析。如用户问“为什么服务响应慢”Agent 通过动态发现可用方法自主完成根因分析。# Agent 首先调用 __list_method__() 动态发现实体支持的方法 .entity_set with(domainapm, nameapm.service) | entity-call __list_method__() # 返回示例Agent 根据返回的方法列表自主决策下一步操作: # { # methods: [ # {name: get_metric, params: [...], description: 获取指标数据}, # {name: get_log, params: [...], description: 获取日志数据}, # {name: get_trace, params: [...], description: 获取链路数据}, # {name: list_related_entity_set, params: [...], description: 查询关联实体} # ] # }演示 Demo点击此处查看Demo演示相关链接[1] Phase 1 Table 模式https://help.aliyun.com/zh/cms/cloudmonitor-2-0/phase-1-table-mode[2] Phase 2 Object 模式https://help.aliyun.com/zh/cms/cloudmonitor-2-0/phase-2-object-mode-service-discovery[3] 阿里云 OpenAPIhttps://api.aliyun.com/api/Cms/2024-03-30/GetEntityStoreData[4] MCP Toolshttps://modelcontextprotocol.io/docs/getting-started/intro点击此处查看视频演示