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日志并进行多维度分析。
目录
相关文章
|
17天前
|
C#
【Azure Function】Function App出现System.IO.FileNotFoundException异常
Exception while executing function: xxxxxxx,The type initializer for 'xxxxxx.Storage.Adls2.StoreDataLakeGen2Reading' threw an exception. Could not load file or assembly 'Microsoft.Extensions.Configuration, Version=9.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the
113 64
|
3月前
|
测试技术 开发工具 git
写了BUG还想跑——闲鱼异常日志问题自动追踪-定位-分发机制
为了高效地发现、定位和解决预发问题,闲鱼团队研发了一套异常日志问题自动追踪-定位-分发机制。这套机制通过自动化手段,实现了异常日志的定时扫描、精准定位和自动分发,显著降低了开发和测试的成本,提高了问题解决的效率。
177 15
写了BUG还想跑——闲鱼异常日志问题自动追踪-定位-分发机制
|
4月前
|
Linux 开发工具 数据安全/隐私保护
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
这篇文章介绍了在CentOS 7系统中安装Docker时遇到的两个常见问题及其解决方法:用户不在sudoers文件中导致权限不足,以及yum被锁定的问题。
67 2
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
|
4月前
|
人工智能 Oracle Java
解决 Java 打印日志吞异常堆栈的问题
前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。
78 2
|
4月前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
102 1
|
5月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
71 2
|
5月前
|
开发者 Python
基于Python的日志管理与最佳实践
日志是开发和调试过程中的重要工具,然而,如何高效地管理和利用日志常常被忽略。本文通过Python中的logging模块,探讨如何使用日志来进行调试、分析与问题排查,并提出了一些实际应用中的优化建议和最佳实践。
|
5月前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
5月前
|
JSON 缓存 fastjson
一行日志引发的系统异常
本文记录了一行日志引发的系统异常以及作者解决问题的思路。
113 11
|
4月前
|
监控 安全 Apache
构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
251 0

热门文章

最新文章

  • 1
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    微信小程序 app.json 配置文件解析与应用
  • 4
    【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
  • 5
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 6
    【Azure Function】Function App出现System.IO.FileNotFoundException异常
  • 7
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 8
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 10
    阿里云APP备案流程图以及备案所需材料整理,跟着教程一步步操作