

# 使用增强监控来监控操作系统指标
<a name="USER_Monitoring.OS"></a>

利用增强监测功能，您可以实时监控数据库实例的操作系统。若您想了解不同进程或线程对 CPU 的使用差异，增强监测指标非常有用。

**Topics**
+ [增强监测概述](#USER_Monitoring.OS.overview)
+ [设置和启用增强监控](USER_Monitoring.OS.Enabling.md)
+ [在 RDS 控制台中查看操作系统指标](USER_Monitoring.OS.Viewing.md)
+ [使用 CloudWatch Logs 查看操作系统指标](USER_Monitoring.OS.CloudWatchLogs.md)

## 增强监测概述
<a name="USER_Monitoring.OS.overview"></a>

Amazon RDS 为数据库实例运行的操作系统 (OS) 实时提供指标。您可以在控制台上查看 RDS 数据库实例的所有系统指标和过程信息。您可以管理要为每个实例监控哪些指标，并根据您的要求自定义控制面板。有关增强监控指标的说明，请参阅 [增强监控中的操作系统指标](USER_Monitoring-Available-OS-Metrics.md)。

RDS 将增强监测中的指标传输到您的 Amazon CloudWatch Logs 账户。您可以在 CloudWatch Logs 中创建指标筛选条件，并在 CloudWatch 控制面板上显示图表。此外，您可以在选择的监控系统中通过 Amazon CloudWatch Logs 使用增强监测 JSON 输出。有关更多信息，请参阅 Amazon RDS 常见问题中的[增强监测](https://aws.amazon.com/rds/faqs/#Enhanced_Monitoring)。

**Topics**
+ [增强监测可用性](#USER_Monitoring.OS.Availability)
+ [CloudWatch 与增强监控指标的区别](#USER_Monitoring.OS.CloudWatchComparison)
+ [保留增强监测指标](#USER_Monitoring.OS.retention)
+ [增强监测的成本](#USER_Monitoring.OS.cost)

### 增强监测可用性
<a name="USER_Monitoring.OS.Availability"></a>

增强监测对以下数据库引擎可用：
+ Db2
+ MariaDB
+ Microsoft SQL Server
+ MySQL
+ Oracle
+ PostgreSQL

### CloudWatch 与增强监控指标的区别
<a name="USER_Monitoring.OS.CloudWatchComparison"></a>

*虚管理程序*创建并运行虚拟机 (VM)。借助管理程序，实例可以通过虚拟共享内存和 CPU 支持多个来宾虚拟机。CloudWatch 从数据库实例管理程序收集关于 CPU 使用率的指标。而增强监测则从数据库实例上的代理收集这一指标。

您可能会发现 CloudWatch 和增强监测测量值之间存在差异，因为管理程序层执行的工作较少。如果数据库实例使用较小的实例类，差异可能会更大。在这种情况下，单个物理实例上的管理程序层可能会管理更多的虚拟机 (VM)。

有关增强监控指标的说明，请参阅 [增强监控中的操作系统指标](USER_Monitoring-Available-OS-Metrics.md)。有关 CloudWatch 指标的更多信息，请参阅**[《Amazon CloudWatch 用户指南》](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。

### 保留增强监测指标
<a name="USER_Monitoring.OS.retention"></a>

默认情况下，增强监测指标可在 CloudWatch Logs 中存储达 30 天。此保留期与典型的 CloudWatch 指标不同。

要修改指标存储在 CloudWatch Logs 中的时间量，请在 CloudWatch 控制台中更改 `RDSOSMetrics` 日志组的保留期。有关更多信息，请参阅 *Amazon CloudWatch Logs User Guide* 中的[更改 CloudWatch Logs 中的日志数据保留期](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention)。

### 增强监测的成本
<a name="USER_Monitoring.OS.cost"></a>

增强监测指标存储在 CloudWatch Logs 中，而不是存储在 CloudWatch 指标中。增强监测的成本取决于以下因素：
+ 仅当您超过 Amazon CloudWatch Logs 提供的数据传输和存储量时，您才需要为增强监控付费。收费是根据 CloudWatch Logs 数据传输和存储费率计算的。
+ RDS 实例传输的信息量与为增强型监测功能定义的精细程度成正比。监控间隔越短，操作系统指标报告频率越高，监控成本也就越高。要管理成本，请为账户中的不同实例设置不同的精细度。
+ 增强监测的使用成本适用于启用了增强监测的每个数据库实例。监控大量数据库实例的成本要高于监控少量数据库实例。
+ 数据库实例支持的工作负载计算越密集，要报告的操作系统进程活动就越多，增强监测的成本也越高。

有关定价的更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

# 设置和启用增强监控
<a name="USER_Monitoring.OS.Enabling"></a>

要使用增强监控，您必须创建 IAM 角色，然后启用增强监控。

**Topics**
+ [为增强监控创建 IAM 角色](#USER_Monitoring.OS.Enabling.Prerequisites)
+ [打开和关闭增强监控](#USER_Monitoring.OS.Enabling.Procedure)
+ [防范混淆代理问题](#USER_Monitoring.OS.confused-deputy)

## 为增强监控创建 IAM 角色
<a name="USER_Monitoring.OS.Enabling.Prerequisites"></a>

增强监测需要代表您执行操作的权限来向 CloudWatch Logs发送操作系统指标信息。您使用 AWS Identity and Access Management（IAM）角色授予增强监控权限。您可以在启用增强监控时创建此角色，也可以事先创建该角色。

**Topics**
+ [在启用增强监控时创建 IAM 角色](#USER_Monitoring.OS.Enabling.Prerequisites.creating-role-automatically)
+ [在启用增强监控之前创建 IAM 角色](#USER_Monitoring.OS.Enabling.Prerequisites.creating-role-manually)

### 在启用增强监控时创建 IAM 角色
<a name="USER_Monitoring.OS.Enabling.Prerequisites.creating-role-automatically"></a>

在 RDS 控制台中启用增强监控后，Amazon RDS 可以为您创建所需的 IAM 角色。该角色命名为 `rds-monitoring-role`。RDS 将此角色用于指定的数据库实例、只读副本或多可用区数据库集群。

**在启用增强监控时创建 IAM 角色的方法**

1. 按[打开和关闭增强监控](#USER_Monitoring.OS.Enabling.Procedure)中的步骤操作。

1. 在选择角色的步骤中，将**监视角色**设置为**默认值**。

### 在启用增强监控之前创建 IAM 角色
<a name="USER_Monitoring.OS.Enabling.Prerequisites.creating-role-manually"></a>

您可以在启用增强监控之前创建所需的角色。在启用增强监控时，请指定新角色的名称。如果使用 AWS CLI 或 RDS API 启用增强监测，则必须创建此必需角色。

必须向启用增强监控的用户授予 `PassRole` 权限。有关更多信息，请参阅 *IAM 用户指南*的[授予向 AWS 服务传递角色的用户权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)中的示例 2。<a name="USER_Monitoring.OS.IAMRole"></a>

**为 Amazon RDS 增强监控创建 IAM 角色**

1. 通过以下网址打开 [IAM 控制台](https://console.aws.amazon.com/iam/home?#home)：[https://console.aws.amazon.com](https://console.aws.amazon.com/)。

1. 在导航窗格中，选择 **Roles (角色)**。

1. 选择 **Create role (创建角色)**。

1. 选择 **AWS service**（Amazon Web Services 服务）选项卡，然后从服务列表中选择 **RDS**。

1. 选择 **RDS - Enhanced Monitoring**（RDS - 增强监测），然后选择 **Next**（下一步）。

1. 确保 **Permissions policies**（权限策略）显示 **AmazonRDSEnhancedMonitoringRole**，然后选择 **Next**（下一步）。

1. 对于**角色名称**，请为您的角色输入一个名称。例如，输入 **emaccess**。

   您角色的可信实体是 AWS 服务 **monitoring.rds.amazonaws.com**。

1. 选择 **Create role (创建角色)**。

## 打开和关闭增强监控
<a name="USER_Monitoring.OS.Enabling.Procedure"></a>

可以使用 AWS 管理控制台、AWS CLI 或 RDS API 管理增强监控。可以为每个数据库实例上的指标收集设置不同的粒度。

### 控制台
<a name="USER_Monitoring.OS.Enabling.Procedure.Console"></a>

您可以在创建数据库实例、多可用区数据库集群或只读副本，或者在修改数据库实例或多可用区数据库集群时打开增强监控。如果修改数据库实例以开启增强监控，则不需要重启数据库实例，更改也会生效。

在 **Databases**（数据库）页面执行以下某种操作时，您可以在 RDS 控制台中打开增强监控：
+ **创建数据库实例或多可用区数据库集群** - 选择 **Create database**（创建数据库）。
+ **Create a read replica**（创建只读副本）：选择 **Actions**（操作），然后选择 **Create read replica**（创建只读副本）。
+ **修改数据库实例或多可用区数据库集群**：选择**修改**。

**在 RDS 控制台中打开或关闭增强监控**

1. 滚动到 **Additional configuration**（其他配置）。

1. 在**监控**中，为数据库实例或只读副本选择**启用增强监控**。取消选择该选项可。

1. 将 **Monitoring Role** 属性设置为您创建的 IAM 角色以允许 Amazon RDS 代表您与 Amazon CloudWatch Logs 通信，或选择 **Default** 让 RDS 为您创建一个名为 `rds-monitoring-role` 的角色。

1. 将**粒度**属性设置成两次为数据库实例或只读副本收集指标之间的间隔，以秒为单位。**Granularity** 属性可以设置为以下值之一：`1`、`5`、`10`、`15`、`30` 或 `60`。

   RDS 控制台最快每 5 秒刷新一次。如果您在 RDS 控制台中将粒度设置为 1 秒，仍然会看到指标每 5 秒更新一次。使用 CloudWatch Logs 可以获得 1 秒的指标更新。

### AWS CLI
<a name="USER_Monitoring.OS.Enabling.Procedure.CLI"></a>

要使用 AWS CLI 打开增强监控，请在以下命令中将 `--monitoring-interval` 选项设置为 `0` 以外的值，并将 `--monitoring-role-arn` 选项设置为您在 [为增强监控创建 IAM 角色](#USER_Monitoring.OS.Enabling.Prerequisites) 中创建的角色。
+ [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html)
+ [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)
+ [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html)（多可用区数据库集群）
+ [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html)（多可用区数据库集群）

`--monitoring-interval` 选项指定收集增强监控指标的时间点之间的间隔，以秒为单位。选项的有效值为 `0`、`1`、`5`、`10`、`15`、`30`、和 `60`。

要使用 AWS CLI 关闭增强监控，请在这些命令中将 `--monitoring-interval` 选项设置为 `0`。

**Example**  
以下示例将打开数据库实例的增强监控：  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --monitoring-interval 30 \
    --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess
```
对于：Windows  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --monitoring-interval 30 ^
    --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess
```

**Example**  
以下示例将打开多可用区数据库集群的增强监控：  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --monitoring-interval 30 \
    --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess
```
对于：Windows  

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --monitoring-interval 30 ^
    --monitoring-role-arn arn:aws:iam::123456789012:role/emaccess
```

### RDS API
<a name="USER_Monitoring.OS.Enabling.Procedure.API"></a>

要使用 RDS API 打开增强监控，请将 `MonitoringInterval` 参数设置为 `0` 以外的值，并将 `MonitoringRoleArn` 参数设置为您在 [为增强监控创建 IAM 角色](#USER_Monitoring.OS.Enabling.Prerequisites) 中创建的角色。在以下操作中设置这些参数：
+ [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html)
+ [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)
+ [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html)（多可用区数据库集群）
+ [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html)（多可用区数据库集群）

`MonitoringInterval` 参数指定收集增强监控指标的时间点之间的间隔，以秒为单位。有效值为 `0`、`1`、`5`、`10`、`15`、`30` 和 `60`。

要使用 RDS API 关闭增强监控，请将 `MonitoringInterval` 设置为 `0`。

## 防范混淆代理问题
<a name="USER_Monitoring.OS.confused-deputy"></a>

混淆代理问题是一个安全性问题，即不具有某操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在 AWS 中，跨服务模拟可能会导致混淆代理问题。一个服务（*呼叫服务*）调用另一项服务（*所谓的服务*）时，可能会发生跨服务模拟。可以操纵调用服务，使用其权限以在其他情况下该服务不应有访问权限的方式对另一个客户的资源进行操作。为防止这种情况，AWS 提供可帮助您保护所有服务的数据的工具，而这些服务中的服务主体有权限访问账户中的资源。有关更多信息，请参阅[混淆代理问题](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)。

要限制 Amazon RDS 授予另一项服务对资源的访问权限，建议在增强监控角色的信任策略中使用 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键。如果使用两个全局条件上下文键，则这两个键必须使用相同的账户 ID。

防范混淆代理问题最有效的方法是使用 `aws:SourceArn` 全局条件上下文键和资源的完整 ARN。对于 Amazon RDS，请将 `aws:SourceArn` 设置为 `arn:aws:rds:Region:my-account-id:db:dbname`。

以下示例在信任策略中使用 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键来防范混淆代理问题。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "monitoring.rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:SourceArn": "arn:aws:rds:Region:my-123456789012:db:dbname"
        },
        "StringEquals": {
          "aws:SourceAccount": "my-123456789012"
        }
      }
    }
  ]
}
```

------

# 在 RDS 控制台中查看操作系统指标
<a name="USER_Monitoring.OS.Viewing"></a>

您可以在 RDS 控制台中查看增强监测报告的操作系统指标，方法是为**监测**选择 **Enhanced monitoring (增强监测)**。

以下示例显示“Enhanced Monitoring（增强监控）”页面。有关增强监控指标的说明，请参阅 [增强监控中的操作系统指标](USER_Monitoring-Available-OS-Metrics.md)。

![\[“Dashboard (控制面板)”视图\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/metrics1.png)


一些数据库实例为数据库实例的数据存储卷使用多个磁盘。在这些数据库实例上，**Physical Devices (物理设备)** 图表显示每一个磁盘的指标。例如，下图显示四个磁盘的指标。

![\[具有多个磁盘的图表\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/enhanced-monitoring-multiple-disks.png)


**注意**  
目前，**Physical Devices (物理设备)** 图表不可用于 Microsoft SQL Server 数据库实例。

在查看聚合的**文件系统**图表时，**rdsdbdata\$1** 设备与 `rdsfilesys/rdsdbdata*` 文件系统相关，后者存储了所有数据库文件和日志。**rootfilesys** 设备与 `/` 文件系统（又称为根）相关，后者存储了与操作系统相关的文件。使用附加存储卷时，请查看 `rdsdbdata2`、`rdsdbdata3` 和 `rdsdbdata4` 卷指标以了解卷特定的信息。

当您查看聚合的**磁盘 I/O** 图表时，**rdsdbdata** 设备与主 `/rdsdbdata` 存储卷相关。使用附加存储卷时，请查看 `rdsdbdata2`、`rdsdbdata3` 和 `rdsdbdata4` 卷指标以了解卷特定的信息。filesystem 设备与文件系统（又称为根）相关，后者存储了与操作系统相关的文件。

**rdsdev** 设备名称已弃用。**rdsdev** 设备仅与主 `/rdsdbdata` 存储卷相关，不包括来自附加存储卷的指标。

![\[显示文件系统使用情况的图表\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/enhanced-monitoring-filesystem.png)


如果数据库实例是多可用区部署，则您可以查看主数据库实例及其多可用区备用副本的操作系统指标。在 **Enhanced monitoring (增强监测)** 视图中，选择 **primary (主)** 来查看主数据库实例的操作系统指标，或选择 **secondary (辅助)** 来查看备用副本的操作系统指标。

![\[增强监测的主和辅助选择\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/enhanced-monitoring-primary-secondary.png)


有关多可用区部署的更多信息，请参阅[配置和管理 Amazon RDS 的多可用区部署](Concepts.MultiAZ.md)。

**注意**  
目前，对于 MariaDB 数据库实例，不支持查看多可用区备用副本的操作系统指标。

如果要查看运行在数据库实例上的进程的详细信息，请为**监测**选择 **OS 进程列表**。

**Process List (进程列表)** 视图如下所示。

![\[“Process list (进程列表)”视图\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/metrics2.png)


**Process list (进程列表)** 视图中所示的增强监测指标按以下方式组织：
+ **RDS child processes (RDS 子进程)** – 显示支持数据库实例的 RDS 进程的摘要，例如 和 `mysqld`（对于 MySQL 数据库实例）。进程线程在父进程下嵌套显示。进程线程仅显示 CPU 使用率，因为进程所有线程的其他指标都相同。控制台最多显示 100 个进程和线程。因此，显示结果将是占用最多 CPU 和内存的进程和线程。如果有超过 50 个进程和超过 50 个线程，则控制台只会显示每种类别的前 50 个。这种显示方式有助于您了解哪些进程对性能影响最大。
+ **RDS processes (RDS 进程)** – 摘要显示 RDS 管理代理所用的资源、诊断监控进程以及支持 RDS 数据库实例所需的其他AWS进程。
+ **OS processes** – 显示内核和系统进程摘要，这些进程通常对性能影响最小。

对每个进程列出的项目有：
+ **VIRT** – 显示进程的虚拟大小。
+ **RES** – 显示进程正在使用的实际物理内存。
+ **CPU%** – 显示进程正在使用的总 CPU 带宽的百分比。
+ **MEM%** – 显示进程使用的总内存的百分比。

RDS 控制台中显示的监控数据是从 Amazon CloudWatch Logs 中检索的。您还可以从 CloudWatch Logs 中检索数据库实例的指标作为日志流。有关更多信息，请参阅“[使用 CloudWatch Logs 查看操作系统指标](USER_Monitoring.OS.CloudWatchLogs.md)”。

以下情况下不会返回增强监测指标：
+ 数据库实例发生了故障转移。
+ 更改了数据库实例的实例类 (扩展计算)。

增强监测指标在重启数据库实例期间返回，因为只会重启数据库引擎。仍会报告操作系统的指标。

# 使用 CloudWatch Logs 查看操作系统指标
<a name="USER_Monitoring.OS.CloudWatchLogs"></a>

为数据库实例或多可用区数据库集群启用增强监控后，您可以使用 CloudWatch Logs 查看其指标，每个日志流表示一个被监控的数据库实例或数据库集群。日志流标识符是数据库实例或数据库集群的资源标识符 (`DbiResourceId`)。

**查看增强监控日志数据**

1. 访问 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 如有必要，请选择数据库实例或多可用区数据库集群所在的 AWS 区域。有关更多信息，请参阅 *Amazon Web Services 一般参考* 中的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/index.html?rande.html)。

1. 在导航窗格中，选择 **Logs (日志)**。

1. 从日志组列表中选择 **RDSOSMetrics**。

   在多可用区数据库实例部署中，名称中附加了 `-secondary` 的日志文件针对多可用区备用副本。  
![\[多可用区备用副本日志文件\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/enhanced-monitoring-cloudwatch-secondary.png)

1. 从日志流列表中选择要查看的日志流。