

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

# 访问 Prometheus 指标
<a name="rabbitmq-prometheus-metrics"></a>

**注意**  
Prometheus 指标仅适用于 RabbitMQ 4.2 及更高版本。ActiveMQ 经纪商不支持 Prometheus 指标。

亚马逊 MQ 现在支持 RabbitMQ 经纪商的亚马逊 MQ 的 Prometheus 指标。Prometheus 指标使您能够将经纪商的可观察性集成到现有的监控基础架构中，从而使您可以统一了解经纪商绩效以及其他服务。借助 Prometheus 指标，您可以设置精细的警报和仪表板，以主动检测和响应消息传递工作负载中的问题。

从 RabbitMQ 4.2 开始，适用于 RabbitMQ 的亚马逊 MQ 支持 Prometheus 指标，允许您使用 Prometheus 监控系统获取经纪商指标。支持以下端点：
+ `/metrics`
+ `/metrics/detailed`
+ `/metrics/memory-breakdown`

不支持该`/metrics/per-object`终端节点。

有关每个端点公开的指标的更多信息，请参阅 RabbitMQ 文档[中的 Prometheus](https://www.rabbitmq.com/docs/prometheus#metric-aggregation) 指标。

## Prometheus 指标与指标 CloudWatch
<a name="rabbitmq-prometheus-metrics-vs-cloudwatch"></a>

适用于 RabbitMQ 的 Amazon MQ 通过 Prometheus 终端节点和. CloudWatch 虽然两者都提供了对经纪人运行状况的可见性，但它们的范围和用法各不相同。

Prometheus 端点公开了一组关于 RabbitMQ 经纪人健康状况的更丰富的汇总指标，涵盖了更广泛的经纪商内部数据，例如连接流失、频道活动、队列和交易所统计数据以及 Raft 共识指标。它们适合与基于 Prometheus 的现有监控基础架构和细粒度警报集成。

CloudWatch 指标是从 Prometheus 端点获取的经纪商指标的精选子集。有关可用 CloudWatch 指标的完整列表，请参阅[适用于 RabbitMQ 经纪商的亚马逊 MQ 可用 CloudWatch 指标](rabbitmq-logging-monitoring.md)。

在中 CloudWatch，指标始终以至少 60 秒的时间间隔进行聚合，然后再进行可视化。相比之下，Prometheus 公开了原始指标数据点，而像 Grafana 这样的仪表板解决方案默认情况下无需聚合即可对单个数据点进行可视化。因此，相同指标的可视化效果可能会在 Prometheus 和 CloudWatch Prometheus 之间存在差异，具体取决于中使用的统计数据 CloudWatch

**注意**  
我们建议使用 Prometheus 对亚马逊 MQ 的 RabbitMQ 运营指标进行非汇总监控。

## 获取和访问 Prometheus 端点
<a name="rabbitmq-prometheus-metrics-endpoint"></a>

您可以使用或获取 Amazon MQ for RabbitMQ 代理的 Prometheus 终端节点。 AWS 管理控制台 AWS CLI
+ **AWS 管理控制台****— 导航到亚马逊 MQ 控制台，打开您的经纪商的详细信息页面，然后在 “连接” 部分下找到 Prometheus 终端节点。**
+ **AWS CLI**— 使用以下`describe-broker`命令：

  ```
  aws mq describe-broker --broker-id <broker-id>
  ```

  Prometheus 端点将在下的响应中返回。`BrokerInstances.Endpoints`

适用于 RabbitMQ 的 Amazon MQ Prometheus 支持使用与代理相同的身份验证方案。有关支持的身份验证方法的更多信息，请参阅[适用于 RabbitMQ 身份验证和授权的亚马逊 MQ](rabbitmq-authentication.md)。要了解如何在 Prometheus 中配置身份验证，请参阅 Prometheus 文档中的 [http](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_config) \_config。

## Prometheus 配置最佳实践
<a name="rabbitmq-prometheus-metrics-best-practices"></a>
+ 将抓取周期配置为 60 秒或更长。出于操作安全考虑，建议这样做。

## 抓取配置示例
<a name="rabbitmq-prometheus-metrics-sample-config"></a>

以下各节提供了适用于 RabbitMQ 的亚马逊 MQ 的 Prometheus 抓取配置示例。`<broker-prometheus-endpoint>`替换为您的经纪商的 Prometheus 终端节点主机名，`<username>`并`<password>`替换为您的经纪人凭证。

### 建议的配置
<a name="rabbitmq-prometheus-metrics-sample-config-recommended"></a>

对于大多数用例，建议使用以下配置。抓取`/metrics`终端节点可提供有关集群整体运行状况的精心汇总的指标，使您可以清楚地了解代理性能，而无需花费详细的指标收集开销。

```
global:
  scrape_interval: 60s

scrape_configs:
  - job_name: 'rabbitmq-aws-cluster'
    scheme: https
    basic_auth:
      username: <username>
      password: <password>
    metrics_path: '/metrics'
    static_configs:
      - targets:
        - '<broker-prometheus-endpoint>:16001'
        - '<broker-prometheus-endpoint>:16002'
        - '<broker-prometheus-endpoint>:16003'
```

### 详细的指标配置
<a name="rabbitmq-prometheus-metrics-sample-config-detailed"></a>

以下配置收集了更多详细的指标系列，以便更深入地观察特定的经纪商组件。

```
global:
  scrape_interval: 60s

scrape_configs:
  - job_name: 'rabbitmq-connection-churn'
    scheme: https
    basic_auth:
      username: <username>
      password: <password>
    metrics_path: '/metrics/detailed'
    params:
      family: ['connection_churn_metrics']
    static_configs:
      - targets:
        - '<broker-prometheus-endpoint>:16001'
        - '<broker-prometheus-endpoint>:16002'
        - '<broker-prometheus-endpoint>:16003'
  - job_name: 'rabbitmq-ra'
    scheme: https
    basic_auth:
      username: <username>
      password: <password>
    metrics_path: '/metrics/detailed'
    params:
      family: ['ra_metrics']
    static_configs:
      - targets:
        - '<broker-prometheus-endpoint>:16001'
        - '<broker-prometheus-endpoint>:16002'
        - '<broker-prometheus-endpoint>:16003'
  - job_name: 'rabbitmq-queue'
    scheme: https
    basic_auth:
      username: <username>
      password: <password>
    metrics_path: '/metrics/detailed'
    params:
      family: ['queue_metrics']
    static_configs:
      - targets:
        - '<broker-prometheus-endpoint>:16001'
        - '<broker-prometheus-endpoint>:16002'
        - '<broker-prometheus-endpoint>:16003'
  - job_name: 'rabbitmq-exchange'
    scheme: https
    basic_auth:
      username: <username>
      password: <password>
    metrics_path: '/metrics/detailed'
    params:
      family: ['exchange_metrics']
    static_configs:
      - targets:
        - '<broker-prometheus-endpoint>:16001'
        - '<broker-prometheus-endpoint>:16002'
        - '<broker-prometheus-endpoint>:16003'
  - job_name: 'rabbitmq-connection'
    scheme: https
    basic_auth:
      username: <username>
      password: <password>
    metrics_path: '/metrics/detailed'
    params:
      family: ['connection_metrics']
    static_configs:
      - targets:
        - '<broker-prometheus-endpoint>:16001'
        - '<broker-prometheus-endpoint>:16002'
        - '<broker-prometheus-endpoint>:16003'
  - job_name: 'rabbitmq-channel'
    scheme: https
    basic_auth:
      username: <username>
      password: <password>
    metrics_path: '/metrics/detailed'
    params:
      family: ['channel_metrics']
    static_configs:
      - targets:
        - '<broker-prometheus-endpoint>:16001'
        - '<broker-prometheus-endpoint>:16002'
        - '<broker-prometheus-endpoint>:16003'
  - job_name: 'rabbitmq-exchange-count'
    scheme: https
    basic_auth:
      username: <username>
      password: <password>
    metrics_path: '/metrics/detailed'
    params:
      family: ['exchange_names']
    static_configs:
      - targets:
        - '<broker-prometheus-endpoint>:16001'
        - '<broker-prometheus-endpoint>:16002'
        - '<broker-prometheus-endpoint>:16003'
```