教程:使用 SQL Server 为 .NET 应用程序设置监视器 - Amazon CloudWatch
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:使用 SQL Server 为 .NET 应用程序设置监视器

本教程演示如何配置 CloudWatch Application Insights 以监控示例解决方案,然后模拟问题场景以测试解决方案。在此示例中,将部署后端上使用 SQL Server 的负载均衡 Web 应用程序。Web 应用程序和 SQL Server 托管在单独的 EC2 实例上。

使用案例方案

在这种情况下,后端上使用 SQL Server 的 .NET 应用程序将在 Amazon EC2 实例上运行。部署配置了两个托管 Barley Adventure Works 应用程序的负载均衡EC2 实例。两个实例都访问在单独的 EC2 实例上托管的 SQL Server。使用 设置监视器CloudWatch Application Insights,以便快速识别、隔离和解决应用程序问题。


                    解决方案组件图

Prerequisites

要完成本教程中的步骤,您必须拥有 AWS 账户。

如果您没有 AWS 账户,请通过以下步骤创建一个账户。

注册 AWS

  1. 打开 http://www.amazonaws.cn/,然后选择 Create an AWS Account

  2. 按照屏幕上的说明进行操作。

部署资源示例方案

提供了一个 CloudFormation 模板来自动执行部署方案以进行测试。模板部署以下实例:

  • 托管 Microsoft SQL Server 数据库的 EC2 实例。

  • 两个负载均衡的 EC2 实例。每个负载均衡的实例都托管 Barley Adventure Works Web 应用程序。

完成模板部署大约需要 10 分钟。

部署 CloudFormation 堆栈的步骤

  1. 从 处的登录页面中选择 Create Stack>With new resources (standard)AWS CloudFormation (创建堆栈 > 使用新资源(标准https://console.amazonaws.cn/cloudformation)),以在美国东部(弗吉尼亚北部)区域中的账户中启动 CloudFormation 堆栈。此模板仅在 us-east-1 区域中可用。

  2. Create Stack 页面上选择 Template is ready。

  3. Specify template (指定模板) 下,选择 Amazon S3 URL 并输入以下 S3 URL 路径https://application-insights-demo-resources.s3.amazonaws.com.cn/SampleApp.yml:。选择 Next

    注意

    您也可以在以下位置的 aws-samples GitHub 存储库中找到此 CloudFormation 模板https://github.com/aws-samples/application-insights-sample-application/blob/master/SampleApp.yml

  4. Specify stack details (指定堆栈详细信息) 页面上,输入堆栈的名称,例如 ApplicationInsightsTest

  5. 查看 Parameters (参数) 下的默认参数,并修改首选项的值。输入 SQLServer 的密码。选择 Next

  6. Configure stack options (配置堆栈选项) 页面上的 Tags (标签) 下,创建新密钥对或选择可用于登录 EC2 实例的现有密钥对。选择 Next (下一步)

  7. 查看并确认 Review (审核) 页面上的设置。选中确认模板可创建 AWS Identity and Access Management (IAM) 资源的框。

  8. 选择 Create stack (创建堆栈) 以部署堆栈。

  9. 从 Cloud Formation 堆栈页面的 Events 选项卡监控堆栈部署的状态。成功部署堆栈后,继续执行下一部分。

使用 设置监控 Amazon CloudWatch Application Insights

本节演示如何从 CloudFormation 模板部署的资源创建资源组,以及如何将资源组添加到 CloudWatch Application Insights 以进行监控。

创建资源组

  1. 导航到 AWS 资源组 控制台,然后选择 Create resource group (创建资源组)。

  2. Create query-based group (创建基于查询的组) 页面上的 Group type (组类型) 下,选择 CloudFormation stack based (基于 CloudFormation 堆栈)。

  3. Grouping criteria (分组条件) 下,从下拉列表中选择您在上一部分 (ApplicationInsightsTest) 中创建的 CloudFormation 堆栈。将资源类型保留为 All supported resource types (所有支持的资源类型)。

  4. Group details (组详细信息) 下,输入 Group name (组名称),如 application-insights-resource-group,以及资源组的可选描述。然后,选择 Create group (创建组)。

在 上设置资源组监控 CloudWatch Application Insights

  1. 导航到 Amazon CloudWatch 控制台,然后从左侧导航窗格底部选择 Settings (设置)。

  2. 选择 Application Insights 旁边的 View applications。

  3. Applications monitored (受监控的应用程序) 页面上,选择 Add an application (添加应用程序)。

  4. Resource Group selection (资源组选择) 下,选择您在上一过程中创建的资源组 (application-insights-resource-group),然后选择 Add application (添加应用程序)。

  5. Overview (概述) 页面上,刷新浏览器以显示资源组中的应用程序组件。

  6. 选择 Application Application Load Balancer 组,然后选择 Manage monitoring (管理监控)。

  7. Manage monitoring (管理监控) 页面上,选择 Enable monitoring (启用监控)。

  8. 选择 Save

  9. 要为 SQL Server 实例启用监控,请在 Application components (应用程序组件) 部分中选择 SQL Server EC2 实例,然后从 Manage monitoring (管理监控) 页面中重复上述启用监控的步骤。

    监控 SQL Server 实例的以下指标:

    • CPU 利用率

    • StatusCheckFailed

    • Memory % Committed Bytes in Use (正在使用的内存百分比承诺字节)

    • Memory Available Mbytes

    • Network Interface Bytes Total/sec

    • Paging File % Usage

    • 物理磁盘 % 磁盘时间

    • Processor % Processor Time

    • SQLServer Manager 缓存命中率

    • SQLServer Manager 预期生命周期

    • SQLServer:General Statistics Processes blocked

    • SQLServer:General Statistics User Connections

    • SQLServer:Locks Number of Deadlocks/sec

    • SQLServer:SQL Statistics Batch Requests/sec

    • System Processor Queue Length

    为附加到 SQL Server 实例的卷监控以下指标:

    • VolumeReadBytes

    • VolumeWriteBytes

    • VolumeReadOps

    • VolumeWriteOps

    • VolumeTotalReadTime

    • VolumeTotalWriteTime

    • VolumeIdleTime

    • VolumeQueueLength

    • VolumeThroughputPercentage

    • VolumeConsumedReadWriteOps

    • BurstBalance

  10. 同时为负载均衡器和 SQL Server 实例启用监控后,它们所属的资源组在资源组 Overview (概述) 页面上的状态将显示为 Enabled (已启用)。

模拟问题场景并查看见解

本节介绍如何创建 SQL 登录失败、SQL 内存压力事件和 HTTP 500 错误,以便您可以在CloudWatch Application Insights控制面板上查看错误详细信息。

模拟 SQL 登录失败

要模拟 SQL 登录失败并从 CloudWatch 控制面板查看问题,请执行以下步骤。

  1. 使用您在创建 CloudFormation 堆栈时选择的密钥对登录到为 SQL Server 实例预配置的 EC2 实例M4 实例类型)。

  2. 开始菜单,启动 SQL Management Studio。

  3. 输入用户名和错误的密码,然后选择 Connect (连接)。将显示一条消息,指示登录失败。再次重复此步骤几次。

  4. 在 CloudWatch Application Insights 检测到的问题页面(在 CloudWatch 控制台登录页面底部)中,错误将在问题摘要下显示为 SQL:登录失败。要查看有关问题的更多详细信息,请选择问题链接。

模拟高内存压力

要模拟可能导致 Web 服务器和负载均衡器出现应用程序性能下降和超时错误的高内存压力事件,请执行以下步骤。

  1. 从 SQL Server 实例启动 SQL Management Studio 并使用 Windows 管理员账户登录。

  2. 右键单击数据库服务器,选择 Properties (属性),然后选择 Memory (内存)。

  3. Server memory options (服务器内存选项) 下,将 Maximum server memory (最大服务器内存) 减少至 256 KB。

  4. 在新查询窗口中,运行以下 SQL 查询:

    SELECT COUNT(*) FROM [AdventureWorks2016].[Sales].[Customer]

    将显示一条消息,指示内存不足,无法运行查询。

  5. 在 CloudWatch Application Insights 检测到的问题页面(在 CloudWatch 控制台登录页面底部)中,错误应显示在问题摘要下作为 SQL: Memory Pression (SQL: 内存压力)。要查看有关问题的更多详细信息,请选择问题链接。

模拟 HTTP 500 错误

对 Web 应用程序发出未处理的 HTTP 请求的 HTTP 请求会导致 HTTP 500 错误。要模拟 HTTP 500 错误,请执行以下步骤。

  1. 从 中AWS 管理控制台,导航到 AWS CloudFormation 控制台。

  2. 选择您之前启动的 CloudFormation 堆栈的 AppInsightsTestOutputs 选项卡。

  3. 在 Web 浏览器中打开AdventureWorks应用程序的 Value (值) 下显示的 URL。

  4. 使用 为之前提到的 URL 添加后缀,导航到 Barley Adventure Works Web 应用程序的客户详细信息页面barleyapp/SalesOrderDetails/edit/5

  5. 刷新已编译的 URL 请求多次。您的 URL 应如下所示http://<YourURL>.us-east-1.elb.amazonaws.com.cn/barleyapp/SalesOrderDetails/edit/5:。

    将显示一条错误消息,指示无法找到文件或目录。

  6. 在 CloudWatch Application Insights 检测到的问题页面(在 CloudWatch 控制台登录页面底部)中,错误应作为 ALB 显示在问题摘要下:后端 5XX 错误。要查看有关问题的更多详细信息,请选择问题链接。