小窍门
Azure 平台的云原生 .NET 应用电子书封面缩略图。
除了在 Azure 中找到的云应用程序监视解决方案之外,其他任何云提供商都没有那么成熟。 Azure Monitor 是一套工具的统称,旨在提供对系统状态的可见性。 它可帮助你了解云原生服务如何执行并主动识别影响它们的问题。 图 7-12 显示了 Azure Monitor 的高级视图。
图 7-12. Azure Monitor 的简要视图。
收集日志和指标
任何监视解决方案的第一步是尽可能多地收集数据。 收集的数据越多,见解就越深入。 检测系统一直都很困难。 简单的网络管理协议(SNMP)是收集计算机级信息的黄金标准协议,但它需要大量的知识和配置。 幸运的是,由于 Azure Monitor 自动收集最常见的指标,因此消除了大部分艰苦的工作。
无法自动检测应用程序级别指标和事件,因为它们特定于要部署的应用程序。 为了收集这些指标,可以使用 SDK 和 API 直接报告此类信息,例如客户注册或完成订单的时间。 还可以通过 Application Insights 捕获异常并将其报告回 Azure Monitor。 SDK 支持云本机应用程序中找到的大多数语言,包括 Go、Python、JavaScript 和 .NET 语言。
收集有关应用程序状态的信息的最终目标是确保最终用户有良好的体验。 判断用户是否遇到问题比执行 外部 Web 测试更好的方法? 这些测试可以像从世界各地的位置 ping 您的网站一样简单,也可以像让测试代理登录网站并模拟用户操作一样复杂。
报告数据
收集数据后,可以对其进行作、汇总和绘制到图表中,从而允许用户在出现问题时立即看到。 这些图表可以收集到仪表板或工作簿中,这是一个多页报表,旨在讲述有关系统某些方面的故事。
如果没有一些人工智能或机器学习,任何新式应用程序都不会完成。 为此, 可将数据传递到 Azure 中的各种机器学习工具,以便提取本来会隐藏的趋势和信息。
Application Insights 提供了一种功能强大的(类似于 SQL)的查询语言,称为 Kusto ,可以查询记录、汇总记录,甚至绘制图表。 例如,以下查询将查找 2007 年 11 月的所有记录,按州对它们进行分组,并将前 10 个记录绘制为饼图。
StormEvents
| where StartTime >= datetime(2007-11-01) and StartTime < datetime(2007-12-01)
| summarize count() by State
| top 10 by count_
| render piechart
图 7-13 显示了此 Application Insights 查询的结果。
图 7-13。 Application Insights 查询结果。
有一个操场可用于试验 Kusto 查询。 读取 示例查询 也可以具有指导性。
仪表板
有多种不同的仪表板技术可用于显示 Azure Monitor 中的信息。 也许最简单的方法就是在 Application Insights 中运行查询 并将数据绘制到图表中。
图 7-14。 主 Azure 仪表板中嵌入的 Application Insights 图表的示例。
然后,可以使用仪表板功能将这些图表直接嵌入到 Azure 门户中。 对于要求更确切的用户(例如能够向下钻取到多个数据层),Azure Monitor 数据可供 Power BI 使用。 Power BI 是行业领先的企业级商业智能工具,可以聚合来自许多不同的数据源的数据。
图 7-15。 Power BI 仪表板示例。
警报
有时,拥有数据仪表板是不够的。 如果没有人意识到观看仪表板,那么可能还需要很多时间才能解决问题,甚至是检测到问题。 为此,Azure Monitor 还提供顶级 警报解决方案。 警报可由各种条件触发,包括:
- 指标值
- 日志搜索查询
- 活动日志事件
- 基础 Azure 平台的运行状况
- 网站可用性测试
触发后,警报可以执行各种任务。 在简单方面,警报可能只是将电子邮件通知发送到邮件列表或向个人发送短信。 更多涉及的警报可能会在 PagerDuty 等工具中触发工作流,该工具知道谁正在调用特定应用程序。 警报可以在 Microsoft Flow 中触发操作,解锁几乎无限的工作流可能性。
标识警报的常见原因时,可以通过有关警报常见原因的详细信息以及解决警报的步骤来增强警报。 高度成熟的云原生应用程序部署可能会选择启动自我修复任务,这些任务执行诸如从规模集中删除故障节点或触发自动缩放活动等操作。 最终,可能不再需要在凌晨 2 点叫醒备用人员,以解决现场问题,因为系统将能够进行调整以补偿或至少维持运营,直到第二天早上有人到达工作。
Azure Monitor 自动利用机器学习来了解已部署应用程序的正常作参数。 此方法允许它检测在其正常参数之外运行的服务。 例如,站点上的典型工作日流量可能是每分钟 10,000 个请求。 然后,在给定的一周内,请求数突然达到每分钟 20,000 个请求。 智能检测 将注意到此偏离规范并触发警报。 同时,趋势分析足够智能,可避免在流量负载符合预期时触发误报。