

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

# 监控和记录 Amazon MQ 代理
<a name="security-logging-monitoring"></a>

监控是维护 AWS 解决方案可靠性、可用性和性能的重要组成部分。您应该从 AWS 解决方案的所有部分收集监控数据，以便在出现多点故障时可以更轻松地对其进行调试。 AWS 提供了多种用于监控您的 Amazon MQ 资源和响应潜在事件的工具：

您可以使用 CloudWatch 来查看和分析您的 Amazon MQ 经纪商的指标。您可以通过 CloudWatch 控制台、或，查看和分析您的经纪商指标 CloudWatch AWS CLI。 AWS CLI CloudWatch Amazon MQ 的指标会自动从经纪人那里进行轮询，然后推送到每分钟。 CloudWatch 对于 ActiveMQ 经纪商 CloudWatch ，仅监控前 1000 个目的地。对于 RabbitMQ 经纪商，仅 CloudWatch 监控前 500 个目的地，按消费者数量排序。

有关 Amazon MQ 指标的完整列表，请参阅[Amazon MQ 适用于 ActiveMQ 经纪商的可用 CloudWatch 指标](activemq-logging-monitoring.md)。

有关为指标创建 CloudWatch 警报的信息，请参阅 *Amazon CloudWatch 用户指南*中的[创建或编辑 CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html)。

# 访问亚马逊 MQ 的 CloudWatch 指标
<a name="amazon-mq-accessing-metrics"></a>

 您可以使用 AWS 管理控制台 AWS CLI、和 API 访问 CloudWatch 指标。

您可能希望在不使用的情况下访问 CloudWatch 指标 AWS 管理控制台。

要使用访问 Amazon MQ 指标 AWS CLI，请使用命令。`[get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html)`有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[获取指标的统计数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/getting-metric-statistics.html)。

要使用 CloudWatch API 访问亚马逊 MQ 指标，请使用操作。`[GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)`有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[获取指标的统计数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/getting-metric-statistics.html)。

## 使用访问 CloudWatch 指标 AWS 管理控制台
<a name="amazon-mq-accessing-metrics-console"></a>

****以下示例向您展示了如何使用访问亚马逊 MQ 的 CloudWatch 指标 AWS 管理控制台。如果您已经登录到 Amazon MQ 控制台，请在经纪人**详情**页面上，选择操作，查看指标。 CloudWatch ****

1. 登录 [CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航面板上，选择 **Metrics**。

1. 选择 **AmazonMQ** 指标命名空间。

1. 选择以下指标维度之一：
   + **代理指标**
   + **代理的队列指标**
   + **代理的主题指标**

   在此示例中，选择了 **Broker Metrics (代理指标)**。

1. 现在可检查 Amazon MQ 指标：
   + 要对指标进行排序，请使用列标题。
   + 要为指标绘制图表，请选中该指标旁边的复选框。
   + 要按指标进行筛选，请选择指标名称，然后选择 **Add to search**。

# Amazon MQ 适用于 ActiveMQ 经纪商的可用 CloudWatch 指标
<a name="activemq-logging-monitoring"></a>

## Amazon MQ for ActiveMQ 指标
<a name="security-logging-monitoring-cloudwatch-metrics"></a>


| 指标 | 单位 | 说明 | 
| --- | --- | --- | 
| AmqpMaximumConnections | 计数 | 您可以使用 AMQP 连接到代理的最大客户端数量。有关连接配额的更多信息，请参阅 [Quotas in Amazon MQ](amazon-mq-limits.md)。 | 
| BurstBalance | 百分比 | Amazon EBS 卷上剩余的突增积分百分比，用于保留吞吐量优化代理的消息数据。如果此余额达到零，Amazon EBS 卷提供的 IOPS 将减少，直到突增余额重新填充。有关 Amazon EBS 中突增余额如何使用的更多信息，请参阅：[I/O 积分和突增性能](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#IOcredit)。 | 
| CpuCreditBalance | 积分（vCPU 分钟） |   该指标仅适用于 `mq.t2.micro` 代理实例类型。 CPU 积分指标仅每 5 分钟提供一次。  实例自启动后已累积获得的 CPU 积分数（包括启动积分数）。积分余额可供代理实例用于支付超出基准 CPU 利用率的突增部分。 在获得积分后，积分将在积分余额中累积；在花费积分后，将从积分余额中扣除。积分余额有上限。达到该限制后，新获得的积分将被丢弃。  | 
| CpuUtilization | 百分比 | 代理当前正在使用的已分配 Amazon EC2 计算单位的百分比。 | 
| CurrentConnectionsCount | 计数 | 当前代理上的活动连接数量。 | 
| EstablishedConnectionsCount | 计数 | 已在代理上建立的活动和非活动连接总数。 | 
| HeapUsage | 百分比 | 代理当前使用的 ActiveMQ JVM 内存限制的百分比。 | 
| InactiveDurableTopicSubscribersCount | 计数 | 非活动持久主题订阅者的数量，最多可达 2000。 | 
| JobSchedulerStorePercentUsage | 百分比 | 作业调度程序存储所使用的磁盘空间的百分比。 | 
| JournalFilesForFastRecovery | 计数 | 干净关闭后将重放的日志文件数。 | 
| JournalFilesForFullRecovery | 计数 | 不干净关闭后将重放的日志文件数。 | 
| MqttMaximumConnections | 计数 | 您可以使用 MQTT 连接到代理的最大客户端数量。有关连接配额的更多信息，请参阅 [Quotas in Amazon MQ](amazon-mq-limits.md)。 | 
| NetworkConnectorConnectionCount | 计数 | 使用经纪商[网络中连接到经纪商的](network-of-brokers.md)节点数量 NetworkConnector。 | 
| NetworkIn | 字节 | 代理的传入流量。 | 
| NetworkOut | 字节 | 代理的传出流量。 | 
| OpenTransactionCount | 计数 | 正在进行的事务总数。 | 
| OpenwireMaximumConnections | 计数 | 您可以使用的最大客户端数量与您的经纪商建立连接 OpenWire。有关连接配额的更多信息，请参阅 [Quotas in Amazon MQ](amazon-mq-limits.md)。 | 
| StompMaximumConnections | 计数 | 您可以使用 STOMP 连接到代理的最大客户端数量。有关连接配额的更多信息，请参阅 [Quotas in Amazon MQ](amazon-mq-limits.md)。 | 
| StorePercentUsage | 百分比 | 存储限制使用的百分比。如果此数值达到 100，代理将拒绝消息。 | 
| TempPercentUsage | 百分比 | 非持久性消息使用的可用临时存储的百分比。 | 
| TotalConsumerCount | 计数 | 订阅当前代理目标的消息使用者数量。 | 
| TotalMessageCount | 计数 | 存储在代理上的消息数量。 | 
| TotalProducerCount | 计数 | 在当前代理上的目标上处于活动状态的消息创建器数量。 | 
| VolumeReadOps | 计数 | 在 Amazon EBS 卷上进行的读取操作数。 | 
| VolumeWriteOps | 计数 | 在 Amazon EBS 卷上进行的写入操作数。 | 
| WsMaximumConnections | 计数 | 您可以使用的最大客户端数量与您的经纪商建立连接 WebSocket。有关连接配额的更多信息，请参阅 [Quotas in Amazon MQ](amazon-mq-limits.md)。 | 

### ActiveMQ 代理指标的维度
<a name="security-logging-monitoring-cloudwatch-dimensions"></a>


| 维度 | 说明 | 
| --- | --- | 
| Broker |  代理的名称 单实例代理具有后缀 -1。高可用性 active/standby 代理的冗余对具有后缀 -1 和 -2。  | 

## ActiveMQ 目标（队列和主题）指标
<a name="security-logging-monitoring-cloudwatch-destination-metrics"></a>

**重要**  
以下指标包括 CloudWatch 轮询期间的每分钟计数。  
`EnqueueCount`
`ExpiredCount`
`DequeueCount`
`DispatchCount`
`InFlightCount`
例如，在五分钟[CloudWatch 的时间段内](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#CloudWatchPeriods)，`EnqueueCount`有五个计数值，每个值代表该时段的一分钟部分。`Minimum` 和 `Maximum` 统计数据提供指定期间内的最低和最高每分钟值。


| 指标 | 单位 | 说明 | 
| --- | --- | --- | 
| ConsumerCount | 计数 | 订阅目标的使用者数量。 | 
| EnqueueCount | 计数 | 每分钟发送到目标的消息数量。 | 
| EnqueueTime | 时间 (毫秒) | 从消息到达代理到发送给消费者的 end-to-end延迟。 `EnqueueTime`不衡量从生产者发送消息到到达代理的延迟，也不能衡量从代理收到消息到代理确认消息的延迟。 end-to-end相反，`EnqueueTime` 是从代理收到消息到成功传递给使用者的毫秒数。  | 
| ExpiredCount | 计数 | 每分钟因过期而无法提供的消息数量。 | 
| DispatchCount | 计数 | 每分钟发送到使用者的消息数量。 | 
| DequeueCount | 计数 | 每分钟使用者确认的消息数量。 | 
| InFlightCount | 计数 | 发送给使用者但尚未确认的消息数量。 | 
| ReceiveCount | 计数 | 已从双工网络连接器的远程代理接收的消息数。 | 
| MemoryUsage | 百分比 | 目标位置当前使用的内存限制的百分比。 | 
| ProducerCount | 计数 | 目标位置的创建者数量。 | 
| QueueSize | 计数 | 队列中的消息数量。 此指标仅适用于队列。  | 
| TotalEnqueueCount | 计数 | 已发送到代理的消息总数。 | 
| TotalDequeueCount | 计数 | 客户端已使用的消息总数。 | 

**注意**  
`TotalEnqueueCount` 和 `TotalDequeueCount` 指标包括有关公告主题的消息。有关咨询主题消息的更多信息，请参阅 [ActiveMQ 文档](https://activemq.apache.org/advisory-message.html)。

### ActiveMQ 目标（队列和主题）指标的维度
<a name="security-logging-monitoring-cloudwatch-destination-dimensions"></a>


| 维度 | 说明 | 
| --- | --- | 
| Broker |  代理的名称。  单实例代理具有后缀 `-1`。用于实现高可用性的 active/standby 代理具有后缀`-1`和冗`-2`余对。   | 
| Topic 或 Queue | 主题或队列的名称。 | 
| NetworkConnector  | 网络连接器的名称。 | 

# 适用于 RabbitMQ 经纪商的亚马逊 MQ 可用 CloudWatch 指标
<a name="rabbitmq-logging-monitoring"></a>

## RabbitMQ 代理指标
<a name="security-logging-monitoring-cloudwatch-metrics-rabbitmq"></a>


| 指标 | 单位 | 说明 | 
| --- | --- | --- | 
| ExchangeCount | 计数 | 在代理上配置的交换器总数。 | 
| QueueCount | 计数 | 在代理上配置的队列总数。 | 
| ConnectionCount | 计数 | 在代理上建立的连接总数。 | 
| ChannelCount | 计数 | 在代理上建立的通道总数。 | 
| ConsumerCount | 计数 | 连接到代理的使用者总数。 | 
| MessageCount | 计数 | 队列中的消息总数。 生成的数字是代理上已就绪和未确认的消息总和。  | 
| MessageReadyCount | 计数 | 队列中已就绪的消息总数。 | 
| MessageUnacknowledgedCount | 计数 | 队列中未确认的消息总数。 | 
| PublishRate | 计数 | 向代理发布消息的速率。生成的数字表示采样时每秒采集的消息数。  | 
| ConfirmRate | 计数 | RabbitMQ 服务器确认已发布消息的速率。您可以将此指标与 PublishRate 进行比较，以更好地了解您的代理的表现。生成的数字表示采样时每秒采集的消息数。 | 
| AckRate | 计数 | 使用者确认消息的速率。生成的数字表示采样时每秒采集的消息数。 | 
| SystemCpuUtilization | 百分比 | 代理当前正在使用的已分配 Amazon EC2 计算单位的百分比。对于集群部署，此值表示所有三个 RabbitMQ 节点的相应指标值的总和。 | 
| RabbitMQMemLimit | 字节 | RabbitMQ 代理的 RAM 限制。对于集群部署，此值表示所有三个 RabbitMQ 节点的相应指标值的总和。 | 
| RabbitMQMemUsed | 字节 | RabbitMQ 代理使用的 RAM 容量。对于集群部署，此值表示所有三个 RabbitMQ 节点的相应指标值的总和。 | 
| RabbitMQDiskFreeLimit | 字节 | RabbitMQ 代理的磁盘限制。对于集群部署，此值表示所有三个 RabbitMQ 节点的相应指标值的总和。该指标因实例大小而异。 | 
| RabbitMQDiskFree | 字节 | RabbitMQ 代理中可用的免费磁盘空间总量。当磁盘使用量超过其限制时，集群将阻止所有生产者连接。对于集群部署，此值表示所有三个 RabbitMQ 节点的相应指标值的总和。 | 
| RabbitMQFdUsed | 计数 | 使用的文件描述符数。对于集群部署，此值表示所有三个 RabbitMQ 节点的相应指标值的总和。 | 
| RabbitMQIOReadAverageTime | 计数 | RabbitMQ 执行一次读取操作的平均时间（以毫秒为单位）。该值与消息大小成正比。 | 
| RabbitMQIOWriteAverageTime | 计数 | RabbitMQ 执行一次写入操作的平均时间（以毫秒为单位）。该值与消息大小成正比。 | 

## RabbitMQ 代理指标的维度
<a name="security-logging-monitoring-cloudwatch-dimensions-rabbitmq"></a>


| 维度 | 说明 | 
| --- | --- | 
| Broker |  代理的名称。  | 

## RabbitMQ 节点指标
<a name="security-logging-monitoring-cloudwatch-destination-metrics-rabbitmq"></a>


| 指标 | 单位 | 说明 | 
| --- | --- | --- | 
| SystemCpuUtilization | 百分比 | 代理当前正在使用的已分配 Amazon EC2 计算单位的百分比。 | 
| RabbitMQMemLimit | 字节 | RabbitMQ 节点的 RAM 限制。 | 
| RabbitMQMemUsed | 字节 | RabbitMQ 节点使用的 RAM 容量。当内存使用量超过限制时，集群将阻止所有生产者连接。 | 
| RabbitMQDiskFreeLimit | 字节 | RabbitMQ 节点的磁盘限制。该指标因实例大小而异。 | 
| RabbitMQDiskFree | 字节 | RabbitMQ 节点中可用的免费磁盘空间总量。当磁盘使用量超过其限制时，集群将阻止所有生产者连接。 | 
| RabbitMQFdUsed | 计数 | 使用的文件描述符数。 | 

## RabbitMQ 节点指标的维度
<a name="security-logging-monitoring-cloudwatch-destination-dimensions-rabbitmq"></a>


| 维度 | 说明 | 
| --- | --- | 
| Node | 节点的名称。 节点名称由两部分组成：前缀（通常为 `rabbit`）和一个主机名。例如，节点名称 `rabbit@ip-10-0-0-230.us-west-2.compute.internal` 的前缀为 `rabbit`，主机名为 `ip-10-0-0-230.us-west-2.compute.internal`。   | 
| Broker |  代理的名称。  | 

## RabbitMQ 队列指标
<a name="security-logging-monitoring-cloudwatch-queue-metrics-rabbitmq"></a>


| 指标 | 单位 | 说明 | 
| --- | --- | --- | 
| ConsumerCount | 计数 | 订阅队列的使用者数量。 | 
| MessageReadyCount | 计数 | 当前可以传送的消息数量。 | 
| MessageUnacknowledgedCount | 计数 | 服务器正在等待确认的消息数量。 | 
| MessageCount | 计数 | MessageReadyCount 和 MessageUnacknowledgedCount 的总数（也称为队列深度）。 | 

## RabbitMQ 队列指标的维度
<a name="security-logging-monitoring-cloudwatch-dimensions-queue-rabbitmq"></a>

**注意**  
Amazon MQ for RabbitMQ 不会为名称包含空格、制表符或其他非 ASCII 字符的虚拟主机和队列发布指标。  
有关维度名称的更多信息，请参阅 *Amazon CloudWatch API 参考*中的[维度](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html#API_Dimension_Contents)。


| 维度 | 说明 | 
| --- | --- | 
| Queue | 队列的名称。 | 
| VirtualHost | 虚拟主机的名称。 | 
| Broker | 代理的名称。 | 

## RabbitMQ 网络指标
<a name="security-logging-monitoring-cloudwatch-network-metrics-rabbitmq"></a>


| 指标 | 单位 | 说明 | 
| --- | --- | --- | 
| NetworkOut | 字节 |  实例在所有网络接口上发送的字节数。此指标用于确定来自单个实例的传出网络流量。报告的数字是该时间段内发送的字节数。如果您使用的是基本（5 分钟）监控且统计数据为 Sum，则可以将此数字除以 300 以获得字节/秒。如果您使用的是详细（1 分钟）监控且统计数据为 Sum，请将其除以 60。您也可以使用 CloudWatch 公制数学函数`DIFF_TIME`来查找每秒的字节数。例如，如果您将图形化 NetworkOut CloudWatch 为`m1`，则指标数学公式将`m1/(DIFF_TIME(m1))`返回以字节/秒为单位的指标。有关 `DIFF_TIME` 和其他指标数学函数的更多信息，请参阅[使用指标数学](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。 **有意义的统计量：**总和、平均值、最小值、最大值  | 
| NetworkIn | 字节 |  实例在所有网络接口上收到的字节数。此指标用于确定流向单个实例的传入网络流量。报告的数量是该期间内接收的字节数。如果您使用的是基本（5 分钟）监控且统计数据为 Sum，则可以将此数字除以 300 以获得字节/秒。如果您使用的是详细（1 分钟）监控且统计数据为 Sum，请将其除以 60。您也可以使用 CloudWatch 公制数学函数`DIFF_TIME`来查找每秒的字节数。例如，如果您将图形化 NetworkIn CloudWatch 为`m1`，则指标数学公式将`m1/(DIFF_TIME(m1))`返回以字节/秒为单位的指标。有关 `DIFF_TIME` 和其他指标数学函数的更多信息，请参阅[使用指标数学](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。 **有意义的统计量：**总和、平均值、最小值、最大值  | 

## RabbitMQ 代理的维度
<a name="security-logging-monitoring-dimensions-rabbitmq"></a>


| 维度 | 说明 | 
| --- | --- | 
| BrokerId | 代理 ID | 

## 配置 Amazon MQ for RabbitMQ 日志
<a name="security-logging-monitoring-rabbitmq"></a>

 当您为 RabbitMQ 代理启用 CloudWatch 日志记录功能时，Amazon MQ 会使用服务相关角色向其发布一般日志。 CloudWatch如果您首次创建代理时不存在与 Amazon MQ 服务相关的角色，Amazon MQ 将自动创建一个角色。所有后续的 RabbitMQ 代理都将使用相同的服务相关角色向其发布日志。 CloudWatch

 有关服务相关角色的更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的[使用服务相关角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/using-service-linked-roles.html)。有关 Amazon MQ 如何使用服务相关角色的更多信息，请参阅[对 Amazon MQ 使用服务相关角色](using-service-linked-roles.md)。

# 使用记录亚马逊 MQ API 调用 AWS CloudTrail
<a name="security-logging-monitoring-cloudtrail"></a>

Amazon MQ 与一项服务集成 AWS CloudTrail，该服务提供用户、角色或服务发起的 Amazon MQ 调用的记录。 AWS CloudTrail 捕获与亚马逊 MQ 代理和配置相关的 API 调用作为事件，包括来自亚马逊 MQ 控制台的调用和来自亚马逊 MQ 的代码调用。 APIs有关的更多信息 CloudTrail，请参阅《*[AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)*。

**注意**  
CloudTrail 不记录与 ActiveMQ 操作（例如，发送和接收消息）或 ActiveMQ Web 控制台相关的 API 调用。要记录与 ActiveMQ 操作相关的信息，您可以将 [Amazon MQ 配置为向亚马逊日志发布一般日志和审核](security-logging-monitoring.md)日志。 CloudWatch 

使用 CloudTrail 收集到的信息，您可以识别对 Amazon MQ API 的特定请求、请求者的 IP 地址、请求者的身份、请求的日期和时间等。如果您配置了*跟踪*，则可以将 CloudTrail 事件持续传输到 Amazon S3 存储桶。如果您未配置跟踪，则可以在 CloudTrail 控制台中查看事件历史记录中的最新事件。有关更多信息，请参阅《AWS CloudTrail 用户指南》[https://docs.aws.amazon.com/awscloudtrail/latest/userguide/](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)**中的[创建跟踪概述](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)。

## 中的亚马逊 MQ 信息 CloudTrail
<a name="security-logging-monitoring-cloudtrail-info"></a>

当您创建 AWS 账户时，已启 CloudTrail 用。当支持的 Amazon MQ 事件活动发生时，会将其与其他 AWS 服务 CloudTrail 事件一起记录在事件历史记录中。您可以查看、搜索和下载 AWS 账户的最新事件。有关更多信息，请参阅《*AWS CloudTrail 用户指南》*中的[使用 CloudTrail 事件历史记录查看事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

跟踪允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。您可以创建跟踪，以便在您的 AWS 账户中持续记录事件。默认情况下，当您使用创建跟踪时 AWS 管理控制台，该跟踪将应用于所有 AWS 区域。该跟踪记录来自所有 AWS 区域的事件，并将日志文件传输到指定的 Amazon S3 存储桶。您还可以配置其他 AWS 服务，以进一步分析和处理 CloudTrail 日志中收集的事件数据。有关更多信息，请参阅《AWS CloudTrail 用户指南》**中的以下主题：
+ [CloudTrail 支持的服务和集成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [配置 Amazon SNS 通知 CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [接收来自多个区域的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)
+ [从多个账户接收 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Amazon MQ 支持将以下内容的请求参数和响应 APIs 作为事件记录在 CloudTrail 日志文件中：
+ [https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configurations.html#rest-api-configurations-methods-post](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configurations.html#rest-api-configurations-methods-post)
+ [https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker.html#rest-api-broker-methods-delete](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker.html#rest-api-broker-methods-delete)
+ [https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-user.html#rest-api-user-methods-delete](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-user.html#rest-api-user-methods-delete)
+ [https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker-reboot.html#rest-api-broker-reboot-methods-post](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker-reboot.html#rest-api-broker-reboot-methods-post)
+ [https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker.html#rest-api-broker-methods-put](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker.html#rest-api-broker-methods-put)

**注意**  
RebootBroker 当您重新启动代理时，日志文件会被记录下来。在维护时段内，服务会自动重新启动，并且不会记录 RebootBroker 日志文件。

**重要**  
对于以下`GET`方法 APIs，会记录请求参数，但会对响应进行编辑：  
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker.html#rest-api-broker-methods-get](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker.html#rest-api-broker-methods-get)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration.html#rest-api-configuration-methods-get](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration.html#rest-api-configuration-methods-get)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration-revision.html#rest-api-configuration-revision-methods-get](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration-revision.html#rest-api-configuration-revision-methods-get)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-user.html#rest-api-user-methods-get](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-user.html#rest-api-user-methods-get)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-brokers.html#rest-api-brokers-methods-get](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-brokers.html#rest-api-brokers-methods-get)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration-revisions.html#rest-api-configuration-revisions-methods-get](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration-revisions.html#rest-api-configuration-revisions-methods-get)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configurations.html#rest-api-configurations-methods-get](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configurations.html#rest-api-configurations-methods-get)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-users.html#rest-api-users-methods-get](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-users.html#rest-api-users-methods-get)
对于以下情况 APIs，`data`和`password`请求参数由星号 () `***` 隐藏：  
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-brokers.html#rest-api-brokers-methods-post](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-brokers.html#rest-api-brokers-methods-post) (`POST`)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-user.html#rest-api-user-methods-post](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-user.html#rest-api-user-methods-post) (`POST`)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration.html#rest-api-configuration-methods-put](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration.html#rest-api-configuration-methods-put) (`PUT`)
[https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-user.html#rest-api-user-methods-put](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-user.html#rest-api-user-methods-put) (`PUT`)

每个事件或日志条目都包含有关请求者的信息。此信息可帮助您确定以下内容：
+ 请求是使用根用户凭证还是 用户凭证发出的？
+ 请求是使用角色还是联合身份用户的临时安全凭证发出的？
+ 请求是由其他 AWS 服务机构发出的？

有关更多信息，请参阅《[CloudTrail用户指南》中的 “*AWS CloudTrail 用户*身份元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)”。

## 示例 Amazon MQ 日志文件条目
<a name="security-logging-monitoring-cloudtrail-example-log"></a>

*跟踪*是一种配置，允许将事件作为日志文件传输到指定的 Amazon S3 存储桶。 CloudTrail 日志文件包含一个或多个日志条目。

*事件*表示来自任何源的单个请求，其中包括有关对 Amazon MQ API 的请求、请求者的 IP 地址、请求者的身份、请求的日期和时间等的信息。

以下示例显示了 [https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-brokers.html#rest-api-brokers-methods-post](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-brokers.html#rest-api-brokers-methods-post)API 调用的 CloudTrail 日志条目。

**注意**  
由于 CloudTrail 日志文件不是公开的有序堆栈跟踪 APIs，因此它们不会按任何特定顺序列出信息。

```
{
    "eventVersion": "1.06",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AKIAIOSFODNN7EXAMPLE",
        "arn": "arn:aws:iam::111122223333:user/AmazonMqConsole",
        "accountId": "111122223333",
        "accessKeyId": "AKIAI44QH8DHBEXAMPLE",
        "userName": "AmazonMqConsole"
    },
    "eventTime": "2018-06-28T22:23:46Z",
    "eventSource": "amazonmq.amazonaws.com",
    "eventName": "CreateBroker",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "203.0.113.0",
    "userAgent": "PostmanRuntime/7.1.5",
    "requestParameters": {
        "engineVersion": "5.15.9",
        "deploymentMode": "ACTIVE_STANDBY_MULTI_AZ",
        "maintenanceWindowStartTime": {
            "dayOfWeek": "THURSDAY",
            "timeOfDay": "22:45",
            "timeZone": "America/Los_Angeles"
        },
        "engineType": "ActiveMQ",
        "hostInstanceType": "mq.m5.large",
        "users": [
            {
                "username": "MyUsername123",
                "password": "***",
                "consoleAccess": true,
                "groups": [
                    "admins",
                    "support"
                ]
            },
            {
                "username": "MyUsername456",
                "password": "***",
                "groups": [
                    "admins"
                ]
            }
        ],
        "creatorRequestId": "1",
        "publiclyAccessible": true,
        "securityGroups": [
            "sg-a1b234cd"
        ],
        "brokerName": "MyBroker",
        "autoMinorVersionUpgrade": false,
        "subnetIds": [
            "subnet-12a3b45c",
            "subnet-67d8e90f"
        ]
    },
    "responseElements": {
        "brokerId": "b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9",
        "brokerArn": "arn:aws:mq:us-east-2:123456789012:broker:MyBroker:b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9"
    },
    "requestID": "a1b2c345-6d78-90e1-f2g3-4hi56jk7l890",
    "eventID": "a12bcd3e-fg45-67h8-ij90-12k34d5l16mn",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

# 配置 Amazon MQ for ActiveMQ 日志
<a name="configure-logging-monitoring-activemq"></a>

要允许 Amazon MQ 将日志发布到 CloudWatch 日志，您必须[向您的 Amazon MQ 用户添加权限](#security-logging-monitoring-configure-cloudwatch-permissions)，[并在创建或重启代理之前为 Amazon MQ 配置基于资源的](#security-logging-monitoring-configure-cloudwatch-resource-permissions)策略。

**注意**  
当您打开日志并从 ActiveMQ Web 控制台发布消息时，消息内容将发送 CloudWatch 到日志并显示在日志中。

以下介绍为 ActiveMQ 代理配置 CloudWatch 日志的步骤。

**Topics**
+ [

## 了解 CloudWatch 日志中登录的结构
](#security-logging-monitoring-configure-cloudwatch-structure)
+ [

## 向 Amazon MQ 用户添加 `CreateLogGroup` 权限
](#security-logging-monitoring-configure-cloudwatch-permissions)
+ [

## 为 Amazon MQ 配置基于资源的策略。
](#security-logging-monitoring-configure-cloudwatch-resource-permissions)
+ [

## 防止跨服务混淆座席
](#security-logging-monitoring-configure-cloudwatch-confused-deputy)

## 了解 CloudWatch 日志中登录的结构
<a name="security-logging-monitoring-configure-cloudwatch-structure"></a>

您可以在创建代理时配置高级代理设置，或在编辑代理时启用*常规*和*审计*日志记录。

常规日志记录启用默认`INFO`日志级别（不支持`DEBUG`日志记录），并发布`activemq.log`到您 CloudWatch 账户中的日志组。日志组的格式如下所示：

```
/aws/amazonmq/broker/b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9/general
```

[审核日志](http://activemq.apache.org/audit-logging.html)允许记录使用 JMX 或 ActiveMQ Web 控制台执行的管理操作，并将其`audit.log`发布到您账户中的日志组。 CloudWatch 日志组的格式如下所示：

```
/aws/amazonmq/broker/b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9/audit
```

根据您是具有[单实例代理](amazon-mq-broker-architecture.md#single-broker-deployment)还是[主动/备用代理](amazon-mq-broker-architecture.md#active-standby-broker-deployment)，Amazon MQ 将在每个日志组中创建一个或两个日志流。日志流的格式如下所示。

```
activemq-b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.log
                activemq-b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-2.log
```

`-1` 和 `-2` 后缀表示单个代理实例。有关更多信息，请参阅 *[Amazon 日志用户指南中的使用日志组和 CloudWatch 日志](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)*[流](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

## 向 Amazon MQ 用户添加 `CreateLogGroup` 权限
<a name="security-logging-monitoring-configure-cloudwatch-permissions"></a>

要允许 Amazon MQ 创建 CloudWatch 日志组，您必须确保创建或重启代理的用户拥有该权限。`logs:CreateLogGroup`

**重要**  
如果您未在 Amazon MQ 用户创建或重启代理之前将 `CreateLogGroup` 权限添加给 Amazon MQ 用户，则 Amazon MQ 不会创建日志组。

以下示例介绍[基于 IAM 的策略](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#identity-based-policies-cwl)为附加此策略的用户授予 `logs:CreateLogGroup` 权限。

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

****  

```
{
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Action": "logs:CreateLogGroup",
                            "Resource": "arn:aws:logs:*:*:log-group:/aws/amazonmq/*"
                        }
                    ]
                    }
```

------

**注意**  
此处，术语“用户”是指*用户*而不是 *Amazon MQ 用户*，后者是在配置新的代理程序时创建的。有关设置用户和配置 IAM policy 的更多信息，请参阅《IAM 用户指南》中的[身份管理概述](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html)部分。

有关更多信息，请参阅 *Amazon CloudWatch 日志 API 参考`[CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)`*中的。

## 为 Amazon MQ 配置基于资源的策略。
<a name="security-logging-monitoring-configure-cloudwatch-resource-permissions"></a>

**重要**  
如果您没有为 Amazon MQ 配置基于资源的策略，则代理无法将日志发布到日志 CloudWatch 。

要允许 Amazon MQ 将日志发布到您的日志 CloudWatch 日志组，请配置基于资源的策略以授予 Amazon MQ 访问以下日志 API 操作的权限： CloudWatch 
+ `[CreateLogStream](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogStream.html)`— 为指定的 CloudWatch 日志组创建日志日志流。
+ `[PutLogEvents](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html)`— 将事件传送到指定的 CloudWatch 日志日志流。

以下基于资源的策略授予对`logs:CreateLogStream`和的权限`logs:PutLogEvents`。 AWS

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

****  

```
{ 
                            "Version":"2012-10-17",		 	 	  
                            "Statement": [ 
                                {
                                    "Effect": "Allow",
                                    "Principal": { "Service": "mq.amazonaws.com" },
                                    "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ],
                                    "Resource": "arn:aws:logs:*:*:log-group:/aws/amazonmq/*"
                                } 
                            ]
                        }
```

------

*必须*使用配置此基于资源的策略， AWS CLI 如以下命令所示。在示例中，将 `us-east-1` 替换为您自己的信息。

```
aws --region us-east-1 logs put-resource-policy --policy-name AmazonMQ-logs \
                        --policy-document "{\"Version\": \"2012-10-17\", \"Statement\":[{ \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"mq.amazonaws.com\" },
                        \"Action\": [\"logs:CreateLogStream\", \"logs:PutLogEvents\"], \"Resource\": \"arn:aws:logs:*:*:log-group:\/aws\/amazonmq\/*\" }]}"
```

**注意**  
由于此示例使用`/aws/amazonmq/`前缀，因此您只需为每个 AWS 账户、每个区域配置一次基于资源的策略。

## 防止跨服务混淆座席
<a name="security-logging-monitoring-configure-cloudwatch-confused-deputy"></a>

 混淆代理问题是一个安全性问题，即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在中 AWS，跨服务模仿可能会导致混乱的副手问题。一个服务（*呼叫服务*）调用另一项服务（*所谓的服务*）时，可能会发生跨服务模拟。可以操纵调用服务以使用其权限对另一个客户的资源进行操作，否则该服务不应有访问权限。为了防止这种情况，我们 AWS 提供了一些工具，帮助您保护所有服务的数据，这些服务委托人已被授予访问您账户中资源的权限。

 我们建议在基于资源的 Amazon MQ 策略中使用`[aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)`和`[aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)`全局条件上下文密钥来限制一个或多个指定代理访问 CloudWatch 日志。

**注意**  
 如果使用两个全局条件上下文键，在同一策略语句中使用时，`aws:SourceAccount` 值和 `aws:SourceArn` 值中的账户必须使用相同的账户 ID。

 以下示例演示了一种基于资源的策略，该策略将 CloudWatch 日志访问权限限制为单个 Amazon MQ 代理。

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

****  

```
{
                        "Version":"2012-10-17",		 	 	 
                        "Statement": [
                            {
                            "Effect": "Allow",
                            "Principal": {
                                "Service": "mq.amazonaws.com"
                            },
                            "Action": [
                                "logs:CreateLogStream",
                                "logs:PutLogEvents"
                            ],
                            "Resource": "arn:aws:logs:*:*:log-group:/aws/amazonmq/*",
                            "Condition": {
                                "StringEquals": {
                                "aws:SourceAccount": "123456789012",
                                "aws:SourceArn": "arn:aws:mq:us-west-1:123456789012:broker:my-broker:123456789012"
                                }
                            }
                            }
                        ]
                        }
```

------

 您还可以将基于资源的策略配置为限制账户中所有经纪人的 CloudWatch 日志访问权限，如下所示。

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

****  

```
{
                            "Version":"2012-10-17",		 	 	 
                            "Statement": [
                            {
                                "Effect": "Allow",
                                "Principal": {
                                "Service": [
                                    "mq.amazonaws.com"
                                ]
                                },
                                "Action": [
                                "logs:CreateLogStream",
                                "logs:PutLogEvents"
                                ],
                                "Resource": "arn:aws:logs:*:*:log-group:/aws/amazonmq/*",
                                "Condition": {
                                "ArnLike": {
                                    "aws:SourceArn": "arn:aws:mq:*:123456789012:broker:*"
                                },
                                "StringEquals": {
                                    "aws:SourceAccount": "123456789012"
                                }
                                }
                            }
                            ]
                        }
```

------

有关混淆代理人安全问题的更多信息，请参阅《用户指南》**中的[混淆代理人问题](https://docs.aws.amazon.com/hIAM/latest/UserGuide/confused-deputy.html)。

# 使用 Amazon MQ 对 CloudWatch 日志配置进行故障排除
<a name="security-logging-monitoring-configure-cloudwatch-troubleshoot"></a>

在某些情况下， CloudWatch 日志可能并不总是按预期运行。此部分概述了常见问题并说明如何解决这些问题。

## 日志组未显示在 CloudWatch
<a name="security-logging-monitoring-configure-cloudwatch-do-not-appear"></a>

[将 `CreateLogGroup` 权限添加给 Amazon MQ 用户](configure-logging-monitoring-activemq.md#security-logging-monitoring-configure-cloudwatch-permissions)并重启代理。这样 Amazon MQ 就可以创建日志组了。

## 日志流不出现在 CloudWatch 日志组中
<a name="security-logging-monitoring-configure-cloudwatch-streams-do-not-appear"></a>

[为 Amazon MQ 配置基于资源的策略](configure-logging-monitoring-activemq.md#security-logging-monitoring-configure-cloudwatch-resource-permissions)。这样代理就可以发布其日志了。