SLS 智能异常分析 APP 时序预测最佳实践

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 日志服务 SLS 智能异常分析 APP 提供自动化、智能化时序预测能力,可以根据历史数据预测时序指标接下来一段时间的走势。您可以使用指标的走势并配合告警对于系统的潜在风险进行预警,例如当某个指标的预测值超过某个阈值时对运维人员进行告警;另外指标的走势也可以帮助您及时进行决策,例如预测到 CPU 使用率将会持续上升时,及时对系统进行扩缩容。

原理概述

时序预测作业与其他智能异常分析作业运行过程类似,包括数据读取、数据处理和输出结果三个步骤,并且以准实时的方式、每隔一段时间分别运行这三个步骤,这样您持续获知对于当前指标的预测结果。

  • 数据读取:支持使用 SQL 查询的方式从 SLS 源 Logstore、MetricStore 获取指标序列,可以使用 SQL 同时获取多条指标序列,预测作业将分别对每条指标序列进行预测。
  • 数据处理:预测算法基于 Prophet 的原理进行研发,算法认为指标序列可以分解为趋势项、周期项和假日项,并且分别对这三项进行拟合。使用 linear function 或者 logistic function 拟合趋势项,使用傅里叶函数拟合周期项,使用 indicator function 和 gaussian function 拟合假日项。最终对各个成分进行预测,预测结果的叠加即为对指标序列的预测结果。算法的细节介绍,请参看原论文。
  • 输出结果:预测结果会全部写入到智能异常分析专用的 Logstore,internal-ml-log, 里面。您可以通过使用 SQL 语句在仪表盘中显示预测结果或者配置对于预测结果的告警。


算法配置

下面我们将以 nginx 访问日志为例,预测 nginx 访问流量的趋势走向。访问日志样例如下:

_container_ip_:172.30.58.6
_container_name_:nginx-ingress-controller
_namespace_:kube-system
_pod_name_:nginx-ingress-controller-5c9b6f978f-wcd5j
_pod_uid_:366eae61-71b0-11e9-ab9c-00163e010d81
_source_:stdout
body_bytes_sent:88188
client_ip:124.95.171.67
host:service.ali.com
http_referer:-
http_user_agent:Dalvik/1.6.0 (Linux; U; Android 4.4.4; HUAWEI G7-TL00 Build/HuaweiG7-TL00)
method:GET
proxy_upstream_name:prod-serviceA-8080
remote-user:-
req_id:becb35139049e719f9c953c69869df39
request_length:531
request_time:0.004
status:200
upstream_addr:172.30.130.135:7873
upstream_response_length:88188
upstream_response_time:0.003
upstream_status:200
url:/web/data/queryMonitorData.do?_input_charset=utf-8
version:HTTP/1.1
x_forward_for:124.95.171.67

数据特征配置

在数据特征配置阶段,我们需要配置获取数据的 SQL 语句,然后配置时间、实体和特征字段以便从 SQL 的返回结果中构造指标序列。如下图所示

我们通过图示中的 SQL 语句获取了每个 proxy_upstream 每分钟的访问流量,注意预测作业在读取数据时以分页的方式不断读取所需数据,因此为了不重复消费或者遗漏数据,在 SQL 语句中我们需要添加 order by 子结构对查询结果进行排序,另外由于分页读取是自动进行的,在 SQL 语句后面不添加 limit 子结构

每条指标序列表示某个实体的某个特征的值随时间变化的序列,我们通过对于下方时间实体特征字段的配置实现对于指标序列的获取。其中时间字段表示了指标序列的时间取值,上例中由 time 字段表示;实体字段和特征字段的组合标识了不同的指标序列,上例中由 proxy 字段表示实体,由 metric(即每分钟的访问量)字段表示特征,我们可以理解为预测作业将分别对每个实体的每个特征进行预测。如上图所示,配置页面以 proxy 为实体字段预览4个候选的实体值,我们可以从中勾选想要预测的实体,如果不勾选,默认对所有实体进行预测。假如我们配置了 n 个实体,m 个特征,那么总计会对 n*m 条序列进行预测,目前每个时序预测作业最多对5条指标序列进行预测,如果配置的序列数超过了上线,将从配置的序列中随机选择5条进行处理。


算法配置

算法配置中我们需要对待测序列中的周期成分和假日成分进行配置,另外还需要对于预测结果进行配置。

  • 周期配置:非必填项。预测算法会自动识别一般指标序列常见的周期,包括天周期、周周期和年周期,对于这三个周期,我们不需要额外配置。对于指标序列中包含的其他周期,我们需要显示的进行配置。例如在上图中我们配置了数据的月周期,包括周期名称和周期长度。
  • 假日配置:非必填项。配置对于指标序列走向有影响的假日,对于双休日不需要额外配置。通过选择所在国家,预测算法会自动考虑选中的国家的常见假日;如果有其他特殊假日或活动也会影响指标走向,我们需要在其他节假日中进行显式的配置。
  • 预测配置:必填项。在预测配置中我们对于预测结果进行配置,配置项如下:
  • 待测序列长度:表示待预测的指标序列的长度,其中数值项表示预测结果中时序点的个数,其后的单位表示每个点的时间单位。上例中我们要预测接下来120个点,每个点以分钟为粒度,即120分钟。
  • 置信度:置信度主要影响预测结果中上下界的范围,置信度越高,预测结果中上下界之间范围越窄、其中的点出现的可能性越高。取值为 0.5~0.99,这里我们采用默认值 0.8。
  • 采样数:采样数影响预测结果中上下界的精度,采样数越多,上下界的精度越高。
  • 预测频率:预测作业会连续、每个一段时间对待测序列进行预测,预测频率表示每个多长时间对序列进行预测。
  • 观测时长:观测时长表示在每次预测时将会考虑之前多长时间的历史数据,默认为3天。
  • 调度配置:在调度配置中我们配置了预测作业首次预测的开始时间。


结果说明

在时序预测作业创建完成后,我们可以通过 智能异常分析 APP -> 时序预测 -> 作业标识 进入创建的作业中,查看作业的分析结果。

在页面上方有三个下拉选择框。通过选择预测ID选中某一次预测(预测作业的每次预测都由一个唯一ID标识),预测ID 格式为 Pred-{timestamp},{timestamp} 是预测进行的时间,{timestamp} 越大表示是对越新数据的预测结果;通过选择实体ID和指标选中要显示的指标序列。

预测结果如上面的曲线图所示,其中黄色曲线和灰色曲线分别表示数据上下界,蓝色曲线表示已发生的实际数据,绿色曲线表示预侧数据。曲线图中的红色竖线左侧数据表示对于已经发生的数据的拟合情况,右侧的数据即为预测结果。如果也测过程中出现异常情况,可以通过点击下面的查看异常事件显示。

所有的预测结果都写入到对应的 project 中的 internal-ml-log 这个 Logstore 中,您可以通过 SQL 语句进行查询,如下图所示

重要信息所在字段如下:

字段

字段含义

__tag__:__batch_id__

标识预测的预测ID

__tag__:__job_name__

标识预测作业的名称

result.entity

标识待测序列的实体值

result.metric

标识待测序列的特征值

result.time

标识该序列点发生的时间

result.value

标识该序列点的实际值

result.expect_value

标识该序列点的预测值

result.expect_lower

标识该序列点的预测值上界

result.expect_upper

标识该序列点的预测值下界

您可以通过 SQL 配合使用这些字段配置告警或者自定义仪表盘。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
10月前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
阿里云日志服务(SLS)推出智能分析助手 SLS SQL Copilot,融合 AI 技术与日志分析最佳实践,将自然语言转换为 SQL 查询,降低使用门槛,提升查询效率。其具备原生集成、智能语义理解与高效执行能力,助力用户快速洞察日志数据价值,实现智能化日志分析新体验。
623 1
|
10月前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
本文是阿里云日志服务(SLS)首次对外系统性地揭秘 SLS SQL Copilot 背后的产品理念、架构设计与核心技术积淀。我们将带你深入了解,这一智能分析助手如何从用户真实需求出发,融合前沿 AI 能力与 SLS 十余年日志分析最佳实践,打造出面向未来的智能化日志分析体验。
781 60
|
10月前
|
JSON 监控 数据格式
1688 item_search_app 关键字搜索商品接口深度分析及 Python 实现
1688开放平台item_search_app接口专为移动端优化,支持关键词搜索、多维度筛选与排序,可获取商品详情及供应商信息,适用于货源采集、价格监控与竞品分析,助力采购决策。
|
10月前
|
缓存 监控 Android开发
京东 item_get_app 接口深度分析及 Python 实现
京东item_get_app接口可获取商品原始详情数据,包含更丰富的字段和细节,适用于电商分析、价格追踪等场景。需通过认证获取权限,支持字段筛选和区域化数据查询。
|
11月前
|
缓存 数据挖掘 API
淘宝 item_get_app 接口深度分析及 Python 实现
淘宝item_get_app接口是淘宝开放平台提供的移动端商品详情数据获取接口,相较PC端更贴近APP展示效果,支持获取APP专属价格、促销活动及详情页结构,适用于电商导购、比价工具、数据分析等场景。接口采用appkey+appsecret+session认证机制,需申请相应权限。本文提供Python调用示例及使用注意事项,帮助开发者高效对接移动端商品数据。
|
存储 运维 监控
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
|
9月前
|
人工智能 前端开发 JavaScript
最佳实践3:用通义灵码开发一款 App
本示例演示使用通义灵码,基于React Native与Node.js开发跨平台类通义App,重点展示iOS端实现。涵盖前端页面生成、后端代码库自动生成、RTK Query通信集成及Qwen API调用全过程,体现灵码在全栈开发中的高效能力。(238字)
941 11
|
JavaScript
TypeOrmModule 从 app.module.ts 抽离到 database.module.ts 后出现错误的原因分析
本文分析了TypeORM实体元数据错误的成因,主要涉及实体注册方式、路径解析差异及模块结构变化导致的关系解析问题,并提供了具体解决方案和最佳实践建议。
278 56
|
10月前
|
监控 安全 搜索推荐
使用EventLog Analyzer进行日志取证分析
EventLog Analyzer助力企业通过集中采集、归档与分析系统日志及syslog,快速构建“数字犯罪现场”,精准追溯安全事件根源。其强大搜索功能可秒级定位入侵时间、人员与路径,生成合规与取证报表,确保日志安全防篡改,大幅提升调查效率,为执法提供有力证据支持。
358 0
|
10月前
|
缓存 供应链 开发者
1688 item_get_app 接口深度分析及 Python 实现
1688平台item_get_app接口专为移动端设计,提供商品原始详情数据,包含批发价格、起订量、供应商信息等B2B特有字段,适用于采购决策、供应链分析等场景。接口需通过appkey+access_token认证,并支持字段筛选,返回结构化数据,助力企业实现智能采购与供应商评估。