你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure Monitor 中的 AIOps 和机器学习来检测并缓解潜在问题
用于 IT 运营的人工智能 (AIOps) 提供了强大的方法来提高服务质量和可靠性,方法是使用机器学习处理从应用程序、服务和 IT 资源收集到 Azure Monitor 的数据,并根据这些数据自动执行相关操作。
Azure Monitor 的内置 AIOps 功能可提供见解,并帮助你排查问题和自动执行数据驱动的任务,例如预测容量使用情况和自动缩放、识别和分析应用程序性能问题,以及检测虚拟机、容器和其他资源中的异常行为。 这些功能可增强 IT 监视和运营,而无需机器学习知识和进一步投资。
Azure Monitor 还提供了各种工具,可让你创建自己的机器学习管道,以引入新的分析和响应功能,并根据 Azure Monitor 日志中的数据执行相关操作。
本文介绍 Azure Monitor 的内置 AIOps 功能,并说明如何创建和运行自定义机器学习模型,以及如何根据 Azure Monitor 日志中的数据构建自动化机器学习管道。
内置 Azure Monitor AIOps 和机器学习功能
监视方案 | 功能 | 说明 |
---|---|---|
日志监视 | Log Analytics 工作区见解 | 提供 Log Analytics 工作区的统一视图,并使用机器学习来检测引入异常。 |
Kusto 查询语言 (KQL) 时序分析和机器学习函数 | 易于使用的工具,用于生成时序数据、检测异常、预测和直接在 Azure Monitor 日志中执行根本原因分析,而无需深入了解数据科学和编程语言。 | |
Microsoft Copilot in Azure | 帮助你使用 Log Analytics 分析数据和排查问题。 根据提示生成示例 KQL 查询,例如“容器日志中是否存在任何错误?”。 | |
应用程序性能监视 | 应用程序映射智能视图 | 映射服务之间的依赖关系,并帮助你发现分散式应用程序的所有组件中的性能瓶颈或故障热点。 |
智能检测 | 分析应用程序发送到 Application Insights 的遥测数据,针对性能问题和故障异常发出警报,并确定应用程序性能问题的潜在根本原因。 | |
指标警报 | 指标警报的动态阈值 | 了解指标模式,根据历史数据自动设置警报阈值,并识别可能指示服务问题的异常。 |
虚拟机规模集 | 预测性自动缩放 | 根据历史 CPU 使用模式预测虚拟机规模集的总体 CPU 需求,并自动横向扩展以满足这些需求。 |
Azure Monitor 日志中的机器学习
使用 Kusto 查询语言的内置时序分析和机器学习函数、运算符和插件来深入了解服务运行状况、使用情况、容量和其他趋势,并在 Azure Monitor 日志中生成预测和检测异常。
若要获得更大的灵活性并扩展分析和处理数据的能力,还可以根据 Azure Monitor 日志中的数据实现自己的机器学习管道。
下表比较了使用 KQL 内置机器学习功能和创建自己的机器学习管道的优点和局限性,并且提供了演示如何实现每个管道的教程链接:
内置 KQL 机器学习功能 | 创建自己的机器学习管道 | |
---|---|---|
方案 | ✅ 异常情况检测、根本原因和时序分析 |
✅ 异常情况检测、根本原因和时序分析 ✅高级分析和 AIOPs 方案 |
优点 | 🔹可让你快速入门。 🔹无需数据科学知识和编程技能。 🔹 最佳性能和成本节省。 |
🔹支持更大的规模。 🔹启用更高级、更复杂的方案。 🔹灵活选择库、模型和参数。 |
服务限制和数据量 | Azure 门户或查询 API 日志查询限制,具体取决于是在门户中工作还是使用 API(例如,从笔记本中)。 | 🔹查询 API 日志查询限制 如果在 Azure Monitor 日志中查询数据(作为机器学习管道的一部分)。 否则,没有 Azure 服务限制。 🔹可以支持更大的数据量。 |
集成 | 不需要。 在 Azure 门户中,使用 Log Analytics 运行或通过集成的 Jupyter Notebook 来运行。 | 需要与工具(如 Jupyter Notebook)集成。 通常,还会与其他 Azure 服务(如 Azure Synapse Analytics)集成。 |
“性能” | 最佳性能,使用 Azure 数据资源管理器平台,以分布式方式大规模运行。 | 查询或导出数据时会引入少量延迟,具体取决于实现机器学习管道的方式。 |
模型类型 | 线性回归模型和其他模型,它们受包含一组可配置参数的 KQL 时序函数支持。 | 完全可自定义的机器学习模型或异常情况检测方法。 |
节约成本 | 无额外费用。 | 根据实现机器学习管道的方式,导出数据、将评分数据引入 Azure Monitor 日志以及使用其他 Azure 服务时可能会产生费用。 |
教程 | 使用 Azure Monitor 中的 KQL 机器学习功能检测和分析异常 | 使用笔记本分析 Azure Monitor 日志中的数据 |
根据 Azure Monitor 日志中的数据创建自己的机器学习管道
根据 Azure Monitor 日志中的数据构建自己的机器学习管道,以引入新的 AIOps 功能并支持高级方案,例如:
- 使用比 KQL 更复杂的模型搜寻安全攻击。
- 检测 Web 应用程序中的性能问题并排查错误。
- 创建多步骤流,并根据上一步的结果在每个步骤中运行代码。
- 自动分析 Azure Monitor 日志数据,并提供对多个领域的见解,包括基础结构运行状况和客户行为。
- 将 Azure Monitor 日志中的数据与其他源中的数据相关联。
可通过两种方法使 Azure Monitor 日志中的数据可用于机器学习管道:
在 Azure Monitor 日志中查询数据 - 将笔记本与 Azure Monitor 日志集成,或使用 Azure Monitor 查询客户端库或 MSTICPY 等库根据日志数据运行脚本或应用程序,以表格形式从 Azure Monitor 日志中检索数据;例如,进入 Pandas 数据帧。 对于你查询的数据,将检索到服务器上的内存中对象,而无需从 Log Analytics 工作区导出数据。
注意
可能需要将数据格式转换为管道的一部分。 例如,若要使用基于 Apache Spark 构建的库(如 SynapseML),可能需要将 Pandas 转换为 PySpark 数据帧。
从 Azure Monitor 日志中导出数据 - 从 Log Analytics 工作区导出数据(通常导出到 Blob 存储帐户),并使用机器学习库实现机器学习管道。
下表比较了用于检索机器学习管道数据的方法的优点和局限性:
在 Azure Monitor 日志中查询数据 | 导出数据 | |
---|---|---|
优点 | 🔹可让你快速入门。 🔹只需要基本的数据科学和编程技能。 🔹将延迟降到最低,并节省成本。 |
🔹支持更大的规模。 🔹没有查询限制。 |
已导出数据? | 否 | 是 |
服务限制 | 查询 API 日志查询限制和用户查询限制。 通过将较大的查询拆分为区块,可以在一定程度上克服查询 API 限制。 | Azure Monitor 中没有限制。 |
数据量 | 分析数 GB 的数据,或每小时分析几百万条记录。 | 支持海量数据。 |
机器学习库 | 对于中小型数据集,通常使用单节点机器学习库,例如 Scikit Learn。 | 对于大型数据集,通常使用大数据机器学习库,例如 SynapseML。 |
延迟 | 最小的。 | 在导出数据时引入少量延迟。 |
节约成本 | Azure Monitor 不会产生额外费用。 Azure Synapse Analytics、Azure 机器学习或其他服务的成本(如果使用)。 |
数据导出和外部存储的成本。 Azure Synapse Analytics、Azure 机器学习或其他服务的成本(如果使用)。 |
提示
若要充分利用这两种实现方法,请创建混合管道。 一种常见的混合方法是导出用于模型训练的数据(这涉及海量数据),并使用在 Azure Monitor 日志中查询数据的方法来浏览数据并为新数据评分,以降低延迟和成本。
在 Azure Monitor 日志中实现机器学习生命周期的步骤
设置机器学习管道通常涉及下面所述的所有或部分步骤。
可以使用各种 Azure 和开放源代码机器学习库来实现机器学习管道,包括 Scikit Learn、PyTorch、Tensorflow、Spark MLlib 和 SynapseML。
下表介绍了各个步骤,并提供了高级指导和一些示例,说明如何使用根据 Azure Monitor 日志中的数据创建自己的机器学习管道中所述的实现方法来实施这些步骤:
步骤 | 说明 | 在 Azure Monitor 日志中查询数据 | 导出数据 |
---|---|---|---|
浏览数据 | 检查并了解所收集的数据。 | 浏览数据的最简单方法是使用 Log Analytics,它提供了一组丰富的工具来浏览和可视化 Azure 门户中的数据。 还可以使用笔记本分析 Azure Monitor 日志中的数据。 | 若要在 Azure Monitor 外部分析日志,请从 Log Analytics 工作区导出数据,并在所选的服务中设置环境。 有关如何在 Azure Monitor 外部浏览日志的示例,请参阅使用 Synapse 分析从 Log Analytics 导出的数据。 |
生成和训练机器学习模型 | 模型训练是一个迭代过程。 研究人员或数据科学家开发模型的方法是,提取和清理训练数据、工程特征,尝试各种模型和优化参数,并重复此循环直到模型准确且稳健。 | 对于中小型数据集,通常使用单节点机器学习库,例如 Scikit Learn。 有关如何使用 Scikit Learn 库根据 Azure Monitor 日志中的数据训练机器学习模型的示例,请参阅示例笔记本:使用机器学习技术检测 Azure Monitor 日志中的异常。 |
对于大型数据集,通常使用大数据机器学习库,例如 SynapseML。 |
部署模型和对模型评分 | 评分是将机器学习模型应用于新数据以获取预测的过程。 通常需要以最小的延迟大规模完成评分。 | 若要查询 Azure Monitor 日志中的新数据,请使用 Azure Monitor 查询客户端库。 有关如何使用开放源代码工具对数据进行分的示例,请参阅示例笔记本:使用机器学习技术检测 Azure Monitor 日志中的异常。 |
|
按计划运行管道 | 自动执行管道,以定期根据当前数据重新训练模型。 | 使用 Azure Synapse Analytics 或 Azure 机器学习来计划你的机器学习管道。 | 请参阅“在 Azure Monitor 日志中查询数据”列中的示例。 |
将评分结果引入 Log Analytics 工作区后,可以使用数据获取高级见解,并创建警报和仪表板。 有关如何使用 Azure Monitor 引入客户端库来引入评分结果的示例,请参阅将异常引入 Log Analytics 工作区中的自定义表。
后续步骤
了解有关以下方面的详细信息: