持续监视应用程序和服务

已完成

本单元将介绍:

  • 持续监视如何帮助你验证应用程序和基础结构的运行状况、性能和可靠性。
  • 可观测性如何让你从需要监视的系统中获取数据。
  • Azure Monitor 和 Application Insights 如何帮助你实现持续监视。
  • IT 服务管理连接器如何帮助你实现票证系统。

什么是持续监视?

团队希望在 beta 测试过程中监视网站和基础结构。 Tim 做了一些调查,也学习了一些知识。

持续监视是指可用于监视应用程序生命周期的每个阶段的过程和技术。 随着更改从开发移到生产,持续监视可帮助你验证应用程序和基础结构的运行状况、性能和可靠性。

持续监视以 CI/CD 概念为基础,可帮助你更快、更可靠地开发和交付软件,持续为用户提供价值。

什么是可观测性?

可观测性是指从想要监视的系统中获取数据。 监视是收集和显示此数据的实际任务。

说明是 Azure Monitor?

Azure Monitor 是 Azure 中的一项服务,可跨云中和本地的应用程序与基础结构提供全堆栈可观测性。

Azure Monitor 与 Visual Studio 和 Visual Studio Code 等开发工具一起使用,因此你可在开发和测试阶段使用它。 它与 Azure DevOps 集成,在部署阶段提供发布管理和工作项管理。

Azure Monitor 还与 IT 服务管理 (ITSM) 及安全信息和事件管理 (SIEM) 工具集成,帮助跟踪现有 IT 流程中的问题和事件。

对应用程序启用监视

应用程序很复杂,具有许多相互连接的组件。 要直观呈现所有系统中的端到端的事务和连接,你需要对所有 Web 应用和服务都启用监视。

如果你目前在 Azure DevOps 中没有项目,可从 Azure Developer CLI 开始。 Azure Developer CLI (azd) 是一种开源工具,可减少将应用程序从本地开发环境迁移到 Azure 所需的时间。 azd 提供适合开发人员的最佳做法命令,这些命令映射到工作流的关键阶段,无论你是在终端、编辑器或集成开发环境 (IDE),还是 CI/CD(持续集成/持续部署)中工作。

然后,你可将 Azure Pipelines 与 Azure Application Insights 结合,来将持续监视添加到发布管道。 Application Insights 是一项 Azure Monitor 功能,可用于监视实时应用程序。 稍后我们将详细介绍 Application Insights。

对基础结构启用监视

应用程序的可靠性只与其底层基础结构相当。 通过跨整个基础结构启用监视,可帮助你实现完全可观测性,并在出现故障时更轻松地找出根本原因。

Azure Monitor 有助于跟踪整个混合基础结构(包括虚拟机、容器、存储和网络)的运行状况和性能。

通过 Azure Monitor,你可收集:

“基础结构即代码”允许你通过代码描述应用程序所需的基础结构。 由于使用代码描述基础结构,因此可采用 DevOps 团队用于应用程序的相同开发、测试和版本控制方案。

若要通过“基础结构即代码”方法启用监视,你可使用:

  • 资源管理器模板对大量资源启用监视并配置警报。
  • Azure Policy 对资源强制实施不同的规则。 Azure Policy 有助于确保这些资源符合公司标准和服务级别协议 (SLA)。

使用 Azure 资源组合并资源

Azure 上的典型应用程序包括计算资源,例如虚拟机、Azure 应用服务、微服务、Azure Kubernetes 服务 (AKS) 群集和 Azure Service Fabric。 这些应用程序通常依赖于数据和网络服务,例如 Azure 事件中心、Azure 存储、Microsoft SQL 数据库和 Azure 服务总线。

在 Azure 中,资源组包含相关的 Azure 资源。 组合一个资源组中的资源,对构成不同应用程序的所有资源进行全面观测。 用于资源组的 Azure Monitor 提供一种持续跟踪整个应用程序的运行状况和性能的基本方法,让你可向下钻取到各个组件来排除故障。

通过持续部署确保质量

通过 CI/CD,你可根据自动测试的结果,将代码更改自动集成和部署到应用程序。 CI/CD 可简化部署过程,并在更改动到生产之前验证代码的质量。

下面是一些在部署过程中确保质量的推荐方法:

  • 使用 Azure Pipelines 实现 CI/CD 管道,该管道可从你提交代码一直到生产,自动执行整个过程(包括运行自动测试)。

  • 采用部署关口将监视添加到部署前和部署后的环境中。

    随着应用程序从开发移到生产,部署关口可帮助确保关键运行状况和性能指标 (KPI)。 部署关口还有助于确保基础结构环境中的任何差异或你缩放的方式不会对 KPI 产生负面影响。

  • 在开发、测试、过渡和生产等不同的部署环境之间维护单独的监视实例

    单独的监视实例有助于确保收集的所有数据都跨应用程序和基础结构相关。 如果需要跨环境关联数据,可以使用指标资源管理器中的多个资源图表,或者在 Log Analytics 中创建跨资源查询

创建可操作的警报

要确保监视工作有效,需要将所有待解决的问题和预测可能发生的问题都通知给管理员。 实现此目标的一些方法是:

  • 根据识别可预测的故障状态的日志和指标,在 Azure Monitor 中创建警报

    目标是确保每个警报都表示可操作的关键条件。 监视报告实际不存在的问题时,会出现误报。 使用动态阈值自动计算指标数据的基线,而不是定义自己的静态阈值。

  • 定义警报的操作,以便最有效地通知管理员。

    可执行的通知操作包括短信服务、电子邮件、推送通知或语音呼叫。

  • 使用更高级的操作通过 Webhook 连接到 ITSM 工具或其他警报管理系统。

  • 使用 Azure 自动化 runbookWebhook 修正警报条件。

  • 使用自动缩放根据收集的指标动态调整计算资源。

创建仪表板和工作簿

确保开发团队和运营团队有权访问相同的遥测和工具,允许他们查看整个环境中的模式,并将平均检测时间 (MTTD) 和平均还原时间 (MTTR) 降至最低。 下面是执行此操作的一些方法:

  • 根据组织中不同角色的通用指标和日志创建自定义仪表板

    仪表板可组合来自多个 Azure 资源的数据。

  • 创建 Azure Monitor 工作簿,在开发团队和运营团队之间共享知识。

    可将工作簿准备为包含图表和日志摘要的动态报表。 开发人员可创建疑难解答指南,帮助客户支持部门或运营部门进行故障排除。

持续优化

监视是热门的“构建 - 衡量 - 学习”理念的一个基本方面,它建议持续跟踪 KPI 和用户行为指标,然后通过迭代计划练习对其进行优化。 Azure Monitor 可帮助收集与业务相关的指标和日志,并在下一部署中添加新的数据点。

什么是 Azure Application Insights?

Application Insights 是一项面向 Web 开发人员的应用程序性能管理 (APM) 服务。 借助它可以:

  • 监视实时 Web 应用。
  • 自动检测性能异常。
  • 诊断故障并了解用户实际对应用程序执行的操作。

Application Insights 适用于 .NET、Node.js、Java 以及许多其他编程语言和框架。 它还适用于在云中或本地托管的应用程序。

Application Insights 提供可用于与现有 DevOps 进程和工具集成的连接点。 Application Insights 还与 Visual Studio App Center 集成,这使你能够从移动应用程序监视和分析遥测。

Application Insights 的工作原理是什么?

首先将小型检测包添加到应用程序。 然后,在 Azure 门户中创建 Application Insights 资源。 检测包会监视你的应用并将遥测数据发送回 Azure,你可从门户访问这些数据。 请记住,应用程序可在任何位置运行,无需托管在 Azure 中。

除了 Web 应用,你还可检测几乎任何类型的后台组件。 你甚至可检测 JavaScript 代码。

以下关系图显示了将来自实时服务的监视数据传递到 Application Insights 的流。 随后,Application Insights 会发出警报或将数据推送到另一工具,以便你可直观呈现和了解趋势。

A diagram that shows the flow of monitoring data from live services into Application Insights.

你还可从主机环境拉取遥测数据。 此数据包括性能计数器、Azure 诊断和 Docker 日志。 你还可设置综合监视测试。 综合监视使用一组事务来评估性能和可用性。 综合事务是可预测的测试,你可用它来比较不同发布之间的结果。

什么是开销? 应用受到的影响通常很小。 跟踪调用是非阻塞的,并在单独的线程上进行批处理和发送。

Application Insights 监视器的工作原理是什么?

Application Insights 有助于开发团队了解其应用的运行性能和使用方式。

Application Insights 监视:

  • 请求速率、响应时间和失败率。

    了解最受欢迎的页面、时段以及用户的位置。 查看哪些页面效果最好。 了解响应时间和失败率与流量级别的比较情况。

  • 外部服务是否正拖慢速度。

  • 应用程序异常。

    分析聚合统计信息,或者选择特定实例并在堆栈跟踪中调查是否有相关请求。 Application Insights 既会报告服务器上发生的异常,也会报告客户端上发生的异常。

  • 从用户的 Web 浏览器报告的网页加载性能。

  • 来自网页的 AJAX 调用,包括响应时间和失败率。

  • 用户和会话计数。

  • Windows 或 Linux 服务器计算机中的性能计数器,例如 CPU、内存和网络使用情况。

  • Docker 或 Azure 中的主机诊断。

  • 来自应用的诊断跟踪日志。 你可用它来将跟踪事件与请求关联。

  • 你自己写入客户端或服务器代码的自定义事件和指标。 例如,你可能会跟踪所售物品或取胜的游戏等事件。

在哪里可以查看我的遥测数据?

可通过以下方式查看和跟踪遥测数据:

  • 智能检测

    当某些内容处于异常模式时,自动警报适应应用的遥测和触发器正常模式。 还可以在自定义或标准指标的特定级别上设置警报。

    A screenshot showing Smart Detection in Application Insights.

  • 应用程序映射

    应用程序映射可帮助你发现的性能瓶颈或热点失败的所有组件的分布式应用程序。

    A screenshot showing the Application Map in Application Insights.

  • 探查器

    可在 ASP.NET 和 ASP.NET Core 应用上运行探查器,其中这些应用运行 Azure 应用服务且使用基本服务层级或更高层级。

    A screenshot showing the Profiler in Application Insights.

  • 使用情况分析

    此功能可用于分析用户细分和留存情况。

    A screenshot showing Usage analysis in Application Insights.

  • 搜索

    搜索有助于查找和浏览页面视图、异常或 Web 请求等单个遥测项。

    A screenshot showing Search in Application Insights.

  • 指标资源管理器

    通过指标资源管理器,可以绘制图表、直观地关联趋势,并调查指标中的峰值和谷值。

    A screenshot showing the Metrics Explorer in Azure Monitor.

  • 实时指标流

    部署新的生成时,请实时密切监视性能指标,确保一切按预期进行。

    A screenshot showing the Live Metrics Stream in Application Insights,

  • Log Analytics

    使用强大的查询语言解答有关应用性能和使用情况的棘手问题。

    A screenshot showing the Log Analytics in Azure Monitor.

  • 快照调试程序

    从实时 Web 应用中收集调试快照。

    A screenshot showing the Snapshot Debugger in Application Insights.

  • Power BI

    将使用指标与其他商业智能集成。

    A screenshot showing Power BI.

  • 连续导出

    在原始数据到达时立即将其导出到存储。

    A screenshot showing Continuous Export in Application Insights.

什么是 IT 服务管理连接器?

Azure 的 IT 服务管理连接器 (ITSMC) 在 Azure 监视工具与 ITSM 工具之间提供双向集成,这些工具包括:

  • ServiceNow
  • Provance
  • Cherwell
  • System Center Service Manager

可将 Azure 监视工具与 ITSMC 集成来:

  • 根据 Azure 警报创建或更新 ITSM 工具中的工作项。
  • 将事件和更改请求数据从 ITSM 工具拉取到 Azure Log Analytics。

可使用 Azure 监视工具识别、分析和排查问题。 不过,与问题相关的工作项通常存储在 ITSM 工具中。 使用 ITSMC 实现票证系统更有意义。 这样就可在一个位置获取所需的全部信息,而无需在 ITSM 工具与 Azure 监视工具之间来回切换。 ITSMC 通过减少解决问题所花费的时间,改进了故障排除体验。