

# Amazon CloudWatch Application Insights 是什么？
<a name="appinsights-what-is"></a>

CloudWatch Application Insights 可帮助您监控使用 Amazon EC2 实例以及其他[应用程序资源](#appinsights-components)的应用程序。它可在应用程序资源和技术堆栈（例如，Microsoft SQL Server 数据库、Web (IIS) 和应用程序服务器、操作系统、负载均衡器和队列）中识别和设置关键指标、日志和警报。它会持续监控指标和日志，以检测异常情况和错误并将它们关联起来。在检测到错误和异常情况时，Application Insights 生成 [CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)，您可以使用这些事件来设置通知或执行操作。为了帮助进行故障排除，它会为检测到的问题创建自动化控制面板，其中包含关联的指标异常情况和日志错误，以及可指出潜在根本原因的其他洞察。自动化控制面板可帮助您快速采取修复操作，以保持应用程序正常运行，并防止对应用程序的终端用户造成影响。此外，它还会创建 OpsItems，以便您可以使用 [AWS SSM OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html) 解决问题。

您可以在 CloudWatch 上配置重要的计数器，例如镜像写入事务数/秒、恢复队列长度、事务延迟以及 Windows 事件日志。当 SQL HA 工作负载发生故障转移事件或问题（例如，查询目标数据库的访问权限受限）时，CloudWatch Application Insights 会提供自动化洞察。

CloudWatch Application Insights 与 [AWS Launch Wizard](https://docs.aws.amazon.com/launchwizard/latest/userguide/what-is-launch-wizard.html) 集成，从而为在 AWS 上部署 SQL Server HA 工作负载提供一键式监控设置体验。当您在 [Launch Wizard 控制台](https://console.aws.amazon.com/launchwizard)上选择使用 Application Insights 设置监控和洞察的选项时，CloudWatch Application Insights 会自动在 CloudWatch 上设置相关指标、日志和告警，并开始监控新部署的工作负载。您可以在 CloudWatch 控制台上查看自动化的洞察和检测到的问题，以及 SQL Server HA 工作负载的运行状况。

**Topics**
+ [功能](#appinsights-features)
+ [概念](#appinsights-concepts)
+ [定价](#appinsights-pricing)
+ [相关服务](#appinsights-related-services)
+ [支持的应用程序组件](#appinsights-components)
+ [支持的技术堆栈](#appinsights-stack)

## 功能
<a name="appinsights-features"></a>

Application Insights 提供以下功能。

**自动为应用程序资源设置监视器**  
CloudWatch Application Insights 可减少为应用程序设置监控所需的时间。它扫描应用程序资源，提供可自定义的建议指标和日志列表，并在 CloudWatch 上设置，从而为所需的应用程序资源（例如 Amazon EC2 和 Elastic Load Balancer (ELB)）提供可见性，从而减少为应用程序设置监控所需的时间。它还会为监控的指标设置动态警报。将根据前两周检测到的异常情况自动更新警报。

**问题检测和通知**  
CloudWatch Application Insights 检测应用程序出现潜在问题的迹象，例如指标异常情况和日志错误。它关联这些观察结果以找出应用程序的潜在问题。然后，它生成 CloudWatch Events，[可以配置这些事件以接收通知或执行操作](appinsights-cloudwatch-events.md)。这样，您无需为指标或日志错误创建单独的警报。此外，您可以[配置 Amazon SNS 通知](appinsights-problem-notifications.md)，进而在检测到问题时接收提醒。

**问题排查**  
CloudWatch Application Insights 为检测到的问题创建 CloudWatch 自动化控制面板。这些控制面板显示有关问题的详细信息（包括关联的指标异常情况和日志错误）以帮助您进行故障排除。它们还提供额外的信息，以指出异常情况和错误的潜在根本原因。

## 概念
<a name="appinsights-concepts"></a>

要了解 Application Insights 如何监控应用程序，以下概念是非常重要的。

**组件**  
对组成应用程序的类似资源进行自动分组、单独分组或自定义分组。我们建议将类似资源分组到自定义组件中，以更好地进行监控。

**观察**  
为应用程序或应用程序资源检测到的单个事件（指标异常情况、日志错误或异常）。

**问题**  
关联、分类和分组相关的观察结果以检测问题。

有关 CloudWatch Application Insights 的其他重要概念的定义，请参阅 [Amazon CloudWatch 概念](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html)。

## 定价
<a name="appinsights-pricing"></a>

CloudWatch Application Insights 使用 CloudWatch Metrics、Logs 和 Events 为选定的应用程序资源设置建议的指标和日志，以便就检测到的问题发出通知。将根据 [CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing)对您的 AWS 账户收取这些功能的费用。对于检测到的问题，Application Insights 还会创建 [SSM OpsItems](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-working-with-OpsItems.html)，以通知您相关问题。此外，Application Insights 会创建 [SSM Parameter Store 参数](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)，以便在您的实例上配置 CloudWatch 代理。Amazon EC2 Systems Manager 的功能根据 [SSM 定价](https://aws.amazon.com/systems-manager/pricing/)收费。不会向您收取设置帮助、监控、数据分析或问题检测费用。

### CloudWatch Application Insights 的成本
<a name="appinsights-pricing-ec2"></a>

Amazon EC2 的成本包括使用以下功能：
+ CloudWatch 代理
  + CloudWatch 代理日志组
  + CloudWatch 代理指标
  + Prometheus 日志组（用于 JMX 工作负载）

所有资源的成本包括使用以下功能：
+ CloudWatch 告警（大部分成本）
+ SSM OpsItems（最低成本）

### 成本计算示例
<a name="appinsights-pricing-example"></a>

本示例中的成本是根据以下方案考虑的。

您创建了一个包含以下内容的资源组：
+ 安装了 SQL Server 的 Amazon EC2 实例。
+ 附加的 Amazon EBS 卷。

当您使用 CloudWatch Application Insights 载入此资源组时，会检测到安装在 Amazon EC2 实例上的 SQL Server 工作负载。CloudWatch Application Insights 开始监控以下指标。

为 SQL Server 实例监控以下指标：
+ CPUUtilization
+ StatusCheckFailed
+ Memory % Committed Bytes in Use
+ Memory Available Mbytes
+ Network Interface Bytes Total/sec
+ Paging File % Usage
+ Physical Disk % Disk Time
+ Processor % Processor Time
+ SQLServer:Buffer Manager cache hit ratio
+ SQLServer:Buffer Manager life expectancy
+ 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

此方案的成本是根据 [CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)页面和 [SSM 定价](https://aws.amazon.com/systems-manager/pricing/)页面计算的：
+ **自定义指标**

  对于此方案，上述指标中的 13 个指标是使用 CloudWatch 代理发送到 CloudWatch 的。这些指标被视为自定义指标。每个自定义指标的成本为每月 0.3 美元。这些自定义指标的总成本为 13 \$1 0.3 美元 = 3.90 美元/月。
+ **警报**

  对于此方案，CloudWatch Application Insights 总共监控 26 个指标，这会创建 26 个告警。每个告警的成本为每月 0.1 美元。告警的总成本为 26 \$1 0.1 美元 = 2.60 美元/月。
+ **数据摄取和错误日志**

  数据摄取的成本为 0.05 美元/GB，SQL Server 错误日志的存储成本为 0.03 美元/GB。数据摄取和错误日志的总成本为 0.05 美元/GB \$1 0.03 美元/GB = 0.08 美元/GB。
+ **Amazon EC2 Systems Manager OpsItems**

  系统为 CloudWatch Application Insights 检测到的每个问题创建一个 SSM OpsItem。对于应用程序中的 *n* 个问题，总成本为 0.00267 \$1 *n* 美元/月。

## 相关服务
<a name="appinsights-related-services"></a>

以下服务与 CloudWatch Application Insights 一起使用：

**相关 AWS 服务**
+ **Amazon CloudWatch** 在系统范围内提供资源使用率、应用程序性能和运行状况信息。它收集并跟踪指标，发送警报通知，根据您定义的规则自动更新监控的资源，并允许您监控自己的自定义指标。CloudWatch Application Insights 是通过 CloudWatch 启动的，具体来说，是在 CloudWatch 默认运行控制面板中启动的。有关更多信息，请参阅《[https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)》。
+ **CloudWatch Container Insights** 从容器化应用程序和微服务中收集、聚合及汇总指标与日志。您可以使用 Container Insights 来监控 Amazon ECS、Amazon Elastic Kubernetes Service 以及 Amazon EC2 上的 Kubernetes 平台。在 Container Insights 或 Application Insights 控制台中启用 Application Insights 后，Application Insights 会将检测到的问题显示在 Container Insights 控制面板上。有关更多信息，请参阅 [Container Insights](ContainerInsights.md)。
+ **Amazon DynamoDB** 是完全托管式 NoSQL 数据库服务器，您可以用它免除操作和扩展分布式数据库的管理工作负担，因而无需担心硬件预置、设置和配置、复制、软件修补或集群扩展等问题。此外，DynamoDB 提供了加密静态，这可以消除在保护敏感数据时涉及的操作负担和复杂性。
+ **Amazon EC2** 在 AWS 云中提供可扩展的计算容量。您可以使用 Amazon EC2 启动所需数量的虚拟服务器，配置安全性和联网，以及管理存储。您可以扩展或缩减以处理需求变化或使用高峰，从而减少预测流量的需求。有关更多信息，请参阅[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 或[https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/concepts.html](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/concepts.html)。
+ **Amazon Elastic Block Store (Amazon EBS)** 提供了数据块级的存储卷以用于 Amazon EC2 实例。Amazon EBS 卷的行为类似于原始、未格式化的块储存设备。您可以将这些卷作为设备挂载在实例上。附加到实例的 Amazon EBS 卷公开为独立于实例生命周期而持续存在的存储卷。您可以在这些卷上创建文件系统，或者以使用块储存设备（如硬盘）的任何方式使用这些卷。您可以动态更改附加到实例的卷的配置。有关更多信息，请参阅 [Amazon EBS 用户指南](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)。
+ **Amazon EC2 Auto Scaling** 帮助确保您具有正确数量的 EC2 实例以处理应用程序负载。有关更多信息，请参阅 [https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html)。
+ **Elastic Load Balancing** 在多个可用区中的多个目标（如 EC2 实例、容器和 IP 地址）之间分配传入的应用程序或网络流量。有关更多信息，请参阅 [https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)。
+ **IAM** 是一项 Web 服务，可帮助您安全地控制用户对 AWS 资源的访问权限。可以通过 IAM 控制哪些用户可以使用您的 AWS 资源（身份验证），以及控制他们可以使用的资源和使用资源的方式（授权）。有关更多信息，请参阅 [Amazon CloudWatch 的身份验证和访问控制](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html)。
+ 您可以通过 **AWS Lambda** 构建由事件触发的函数组成的无服务器应用程序，并使用 CodePipeline 和 AWS CodeBuild 自动部署这些应用程序。有关更多信息，请参阅 [AWS Lambda 应用程序](https://docs.aws.amazon.com/lambda/latest/dg/deploying-lambda-apps.html)。
+ **AWS Launch Wizard for SQL Server** 缩短了将 SQL Server 高可用性解决方案部署到云所需的时间。您可以在服务控制台上输入应用程序要求，包括性能、节点数量和连接性，并且，AWS Launch Wizard 可标识正确的 AWS 资源来部署和运行 SQL Server Always On 应用程序。
+ **AWS Resource Groups** 帮助您划分组成应用程序的资源。通过使用 Resource Groups，您可以同时管理和自动完成针对大量资源的任务。只能为单个应用程序注册一个资源组。有关更多信息，请参阅 [https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html](https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html)。
+ **Amazon SQS** 提供了一个安全、持久且可用的托管队列，以允许您集成和分离分布式软件系统和组件。有关更多信息，请参阅 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)。
+ **AWS Step Functions** 是一个无服务器函数构建工具，它允许您对各种 AWS 服务和资源（包括 AWS Lambda 函数）排序为结构化的可视化工作流。有关更多信息，请参阅[《AWS Step Functions 用户指南》](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)。
+ **AWS SSM OpsCenter** 跨服务聚合并标准化 OpsItem，同时提供关于每个 OpsItem、相关 OpsItem 和相关资源的上下文调查数据。OpsCenter 还提供 Systems Manager Automation 文档 (runbook)，让您可以快速解决问题。您可以为每个 OpsItem 指定可搜索的自定义数据。您还可以按状态和源查看自动生成的 OpsItem 相关摘要报告。有关更多信息，请参阅[《*AWS Systems Manager 用户指南》*](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)。
+ **Amazon API Gateway** 是一项 AWS 服务，用于创建、发布、维护、监控和保护任意规模的 REST、HTTP 和 WebSocket API。API 开发人员可以创建能够访问 AWS 或其他 Web 服务以及存储在 AWS 云中的数据的 API。有关更多信息，请参阅 [Amazon API Gateway 用户指南](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html)。
**注意**  
Application Insights 仅支持 REST API 协议（v1 的 API Gateway 服务）。
+ **Amazon Elastic Container Service (Amazon ECS)** 是一项完全托管式的容器编排服务。您可以使用 Amazon ECS 运行最敏感和任务关键型的应用程序。有关更多信息，请参阅 [Amazon Elastic Container Service 开发人员指南](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)。
+ **Amazon Elastic Kubernetes Service (Amazon EKS)** 是一项托管式服务，可让您在 AWS 上轻松运行 Kubernetes，而无需安装、操作或维护您自己的 Kubernetes 控制面板或节点。Kubernetes 是一个用于实现容器化应用程序的部署、扩缩和管理自动化的开源系统。有关更多信息，请参阅 [Amazon EKS 用户指南](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)。
+ **Amazon EC2 上的 Kubernetes**。Kubernetes 是一个开源软件，可帮助您大规模部署和管理容器化应用程序。Kubernetes 可管理 Amazon EC2 计算实例的集群，并通过部署、维护和扩展流程在这些实例上运行容器。使用 Kubernetes，您可以在本地和云中使用相同的工具集运行任何类型的容器化应用程序。有关更多信息，请参阅 [Kubernetes 文档：入门](https://kubernetes.io/docs/setup/)。
+ **Amazon FSx**可帮助您启动和运行流行的 AWS 完全托管式文件系统。使用 Amazon FSx，您可以利用通用开源文件系统和获商业许可的文件系统的功能集和性能来避免耗时的管理任务。有关更多信息，请参阅 [Amazon FSx 文档](https://docs.aws.amazon.com/fsx/)。
+ **Amazon Simple Notification Service (SNS)** 是一项完全托管式消息收发服务，适用于应用程序间和应用程序与人之间的通信。您可以将 Amazon SNS 配置为由 Application Insights 对其进行监控。当将 Amazon SNS 配置为监控资源时，Application Insights 会跟踪 SNS 指标，帮助确定 SNS 消息可能会遇到问题或失败的原因。
+ **Amazon Elastic File System（Amazon EFS）**是一种完全托管式的弹性 NFS 文件系统，可用于 AWS 云 服务和本地资源。它专为在不中断应用程序的情况下按需扩展到 PB 级容量而打造。文件系统会在您添加和移除文件时自动增大和缩小容量，无需预调配和管理容量来满足容量增长需求。有关更多信息，请参阅 [Amazon Elastic File System 文档](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEFS.html)。

**相关第三方服务**
+ 对于在 Application Insights 中监控的某些工作负载和应用程序，**Prometheus JMX Exporter** 使用 AWS Systems Manager Distributor 安装，以便 CloudWatch Application Insights 可以检索 Java 特定的指标。当您选择监控 Java 应用程序时，Application Insights 会自动为您安装 Prometheus JMX Exporter。

## 支持的应用程序组件
<a name="appinsights-components"></a>

CloudWatch Application Insights 可扫描您的资源组以识别应用程序组件。组件可能采用单独分组、自动分组（例如自动扩缩组中的实例或负载均衡器后面的实例）或自定义分组（将各个 Amazon EC2 实例分组在一起）。

CloudWatch Application Insights 支持以下组件：

**AWS 组件**
+ Amazon EC2
+ Amazon EBS
+ Amazon RDS
+ Elastic Load Balancing：Application Load Balancer 和经典负载均衡器（指定和配置这些负载均衡器的所有目标实例）。
+ Amazon EC2 Auto Scaling 组：AWS Auto Scaling（为所有目标实例动态配置自动扩缩组；如果应用程序纵向扩展，CloudWatch Application Insights 将自动配置新实例）。基于 CloudFormation 堆栈的 Resource Groups 不支持自动扩缩组。
+ AWS Lambda
+ Amazon Simple Queue Service (Amazon SQS)
+ Amazon DynamoDB 表
+ Amazon S3 存储桶指标
+ AWS Step Functions
+ Amazon API Gateway REST API 阶段
+ Amazon Elastic Container Service (Amazon ECS)：集群、服务和任务
+ Amazon Elastic Kubernetes Service (Amazon EKS)：集群
+ Amazon EC2 上的 Kubernetes：在 EC2 上运行的 Kubernetes 集群
+ Amazon SNS 主题

CloudWatch Application Insights 当前不会追踪任何其他组件类型资源。如果在 Application Insights 应用程序中未显示某种支持的组件类型，则您拥有并由 Application Insights 监控的其他应用程序可能已注册和管理该组件。

## 支持的技术堆栈
<a name="appinsights-stack"></a>

您可以在“Application tier（应用程序层）”下拉菜单选项中选择以下技术之一，从而使用 CloudWatch Application Insights 监控在 Windows Server 和 Linux 操作系统上运行的应用程序：
+ 前端：Microsoft Internet 信息服务 (IIS) Web 服务器
+ 工件层：
  + NET Framework。
  + .NET 内核
+ 应用程序：
  + Java
  + SAP NetWeaver 标准、分布式和高可用性部署
+ Active Directory
+ SharePoint
+ 数据库：
  + 在 Amazon RDS 或 Amazon EC2 上运行的 Microsoft SQL Server（包括 SQL Server 高可用性配置，请参阅 [组件配置示例](component-configuration-examples.md)）。
  + 在 Amazon RDS、Amazon Aurora 或 Amazon EC2 上运行的 MySQL
  + 在 Amazon RDS 或 Amazon EC2 上运行的 PostgreSQL
  + Amazon DynamoDB 表
  + 在 Amazon RDS 或 Amazon EC2 上运行的 Oracle
  + 单个 Amazon EC2 实例和多个 EC2 实例上的 SAP HANA 数据库
  + 跨可用区 SAP HANA 数据库高可用性设置
  + 单个 Amazon EC2 实例上的 SAP Sybase ASE 数据库
  + 跨可用区 SAP Sybase ASE 数据库高可用性设置

如果上面列出的任何技术堆栈都不适用于您的应用程序资源，则您可以通过在 **Manage monitoring（管理监控）**页面上的“Application tier（应用程序层）”下拉菜单中选择 **Custom（自定义）**来监控您的应用程序堆栈。