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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 日志服务 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 配合使用这些字段配置告警或者自定义仪表盘。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4天前
|
机器学习/深度学习 人工智能 运维
智能日志分析:用AI点亮运维的未来
智能日志分析:用AI点亮运维的未来
42 15
|
28天前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
MySQL事务日志-Undo Log工作原理分析
|
2月前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
51 7
|
2月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
2月前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
161 3
|
3月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
3月前
|
存储 SQL 监控
|
3月前
|
运维 监控 安全
|
3月前
|
监控 关系型数据库 MySQL
分析慢查询日志
【10月更文挑战第29天】分析慢查询日志
71 3
|
3月前
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
96 2

热门文章

最新文章

  • 1
    DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
  • 2
    圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
  • 3
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
  • 4
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 5
    电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
  • 6
    京东商品详情数据接口(H5、APP 端)
  • 7
    年轻人如何运用圈子系统进行扩列,社交圈子论坛app扩列的好处,兴趣行业圈子提升社交技能
  • 8
    【Azure App Service】对App Service中CPU指标数据中系统占用部分(System CPU)的解释
  • 9
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 10
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈