

# Integración de Amazon MSK
<a name="managed-prometheus-collectors-msk-setup"></a>

Con un recopilador de Prometheus administrado por Amazon CloudWatch, puede detectar y recopilar automáticamente métricas Prometheus de sus clústeres de Amazon MSK. Cuando habilita la supervisión abierta en su clúster de Amazon MSK, las métricas de Prometheus se exponen a través de Java Management Extensions (JMX) Exporter and Node Exporter. El recopilador administrado se conecta a su VPC y extrae estas métricas de todos los agentes mediante la detección de servicios basada en DNS y las envía directamente a CloudWatch. Con esta integración, puede supervisar las métricas por host, las métricas por JVM y las métricas de los agentes de Kafka en CloudWatch sin necesidad de implementar ningún agente.

**nota**  
Cuando un recopilador de Prometheus administrado por Amazon CloudWatch envía sus métricas de Amazon MSK a CloudWatch, enriquece automáticamente cada métrica con atributos que identifican su origen. Cada métrica incluye el alcance de la instrumentación del recopilador, los atributos en la nube que registran la cuenta y región de AWS y una unidad que el recopilador deduce del nombre de la métrica. Puede filtrar y agrupar estos atributos cuando consulte sus métricas con PromQL.

## Requisitos previos
<a name="managed-prometheus-collectors-msk-prerequisites"></a>

En este procedimiento se presupone que está familiarizado con los conceptos de administración de clústeres de Amazon MSK y redes de Amazon VPC.
+ Clúster de Amazon MSK en modo aprovisionado, con agentes estándar o express. Los recopiladores administrados no son compatibles con Amazon MSK sin servidor.
+ La supervisión abierta habilitada en el clúster. Para obtener más información, consulte [Supervisión abierta con Prometheus](https://docs.aws.amazon.com/msk/latest/developerguide/open-monitoring.html) en la *Guía para desarrolladores de Amazon MSK*.
+ Al menos dos subredes en diferentes zonas de disponibilidad.
+ Grupo de seguridad que permita al recopilador acceder a los puertos del agente 11001 y 11002.

## Paso 1: Habilitar la supervisión abierta
<a name="managed-prometheus-collectors-msk-enable-monitoring"></a>

Habilite la supervisión abierta en su clúster de Amazon MSK para exponer las métricas de Prometheus. Para obtener instrucciones sobre cómo habilitar la supervisión abierta, consulte [Supervisión abierta con Prometheus](https://docs.aws.amazon.com/msk/latest/developerguide/open-monitoring.html) en la *Guía para desarrolladores de Amazon MSK*.

```
aws kafka update-monitoring \
  --cluster-arn "arn:aws:kafka:{{us-west-2}}:{{123456789012}}:cluster/{{my-cluster}}/{{abc123-def456}}" \
  --current-version "{{K1A2B3C4D5}}" \
  --open-monitoring '{
    "Prometheus": {
      "JmxExporter": {"EnabledInBroker": true},
      "NodeExporter": {"EnabledInBroker": true}
    }
  }'
```

**nota**  
El parámetro `--open-monitoring` por sí solo expone los puntos de conexión de Prometheus en los puertos 11001 y 11002. Los niveles de supervisión mejorada, como `PER_TOPIC_PER_PARTITION`, son independientes de la supervisión abierta y pueden suponer cargos adicionales, así que defínalos solo si necesita ese nivel de métricas de Amazon MSK.

## Paso 2: Obtener el nombre de DNS de su clúster
<a name="managed-prometheus-collectors-msk-dns"></a>

Amazon MSK proporciona un nombre de DNS por clúster que se resuelve en todas las IP de los agentes. Su uso para la detección de servicios hace que su supervisión sea resistente a las sustituciones de agentes y al escalado de clústeres.

Obtenga el nombre de DNS de su clúster (elimine el prefijo específico del agente, como `b-1.` o `b-2.`):

```
aws kafka get-bootstrap-brokers --cluster-arn "arn:aws:kafka:{{us-west-2}}:{{123456789012}}:cluster/{{my-cluster}}/{{abc123-def456}}"
```

Por ejemplo, si el agente de arranque devuelve `b-1.my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com`, utilice `my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com` como nombre de DNS del clúster.

## Paso 3: Definir la configuración de extracción
<a name="managed-prometheus-collectors-msk-scrape-config"></a>

A continuación, se muestra un ejemplo de configuración de extracción para Amazon MSK. Haga referencia a esta configuración al crear el extractor en el siguiente paso. Para obtener más información acerca de las opciones de configuración de , consulte [Configuración del raspador](managed-prometheus-collectors-scraper-configuration.md).

```
global:
  scrape_interval: 60s
  external_labels:
    cluster_name: {{my-msk-cluster}}

scrape_configs:
  - job_name: 'msk-jmx'
    dns_sd_configs:
      - names:
          - {{my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com}}
        type: A
        port: 11001
    relabel_configs:
      - source_labels: [__meta_dns_name]
        target_label: broker_dns
      - source_labels: [__address__]
        target_label: instance
      - target_label: compute_platform
        replacement: 'msk'

  - job_name: 'msk-node'
    dns_sd_configs:
      - names:
          - {{my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com}}
        type: A
        port: 11002
    relabel_configs:
      - source_labels: [__meta_dns_name]
        target_label: broker_dns
      - source_labels: [__address__]
        target_label: instance
      - target_label: compute_platform
        replacement: 'msk'
```

## Paso 4: creación del analizador
<a name="managed-prometheus-collectors-msk-create-scraper"></a>

Cree el extractor con un destino de CloudWatch utilizando la configuración de extracción de sus agentes de Amazon MSK del paso anterior.

------
#### [ AWS API ]

Utilice la operación de la API `CreateScraper` para crear un extractor con un destino de CloudWatch. Sustituya la información de subred, grupo de seguridad y conjunto de datos por sus propios valores.

```
POST /scrapers HTTP/1.1

{
  "alias": "msk-metrics-scraper",
  "source": {
    "vpcConfiguration": {
      "subnetIds": ["{{subnet-subnet-id-1}}", "{{subnet-subnet-id-2}}"],
      "securityGroupIds": ["{{sg-security-group-id}}"]
    }
  },
  "destination": {
    "cloudWatchConfiguration": {
      "datasetArn": "arn:aws:cloudwatch:{{us-west-2}}:{{123456789012}}:dataset/default"
    }
  },
  "scrapeConfiguration": {
    "configurationBlob": "{{base64-encoded-blob}}"
  }
}
```

------
#### [ AWS CLI ]

Utilice el comando `create-scraper` para crear un extractor con un destino de CloudWatch. Sustituya la información de subred, grupo de seguridad y conjunto de datos por sus propios valores.

```
aws amp create-scraper \
  --alias "msk-metrics-scraper" \
  --source '{
    "vpcConfiguration": {
      "subnetIds": ["{{subnet-subnet-id-1}}", "{{subnet-subnet-id-2}}"],
      "securityGroupIds": ["{{sg-security-group-id}}"]
    }
  }' \
  --scrape-configuration configurationBlob=$(cat {{msk-config.yaml}} | base64 -w 0) \
  --destination '{
    "cloudWatchConfiguration": {
      "datasetArn": "arn:aws:cloudwatch:{{us-west-2}}:{{123456789012}}:dataset/default"
    }
  }'
```

------

## Métricas disponibles
<a name="managed-prometheus-collectors-msk-available-metrics"></a>
+ **JMX Exporter (puerto 11001)**: información interna de los agentes de Kafka, que incluye métricas de temas, métricas de particiones, tasas de solicitudes, desfase del consumidor y particiones infrarreplicadas.
+ **Node Exporter (puerto 11002)**: métricas por host que incluyen CPU, memoria, E/S de disco y rendimiento de la red.

Para ver una lista completa de las métricas disponibles, consulte [Métricas de MSK recopiladas por recopiladores administrados](https://docs.aws.amazon.com/prometheus/latest/userguide/prom-msk-integration.html#prom-msk-metrics) en la *Guía del usuario de Amazon Managed Service para Prometheus*.

## Validación de la recopilación de métricas
<a name="managed-prometheus-collectors-msk-validate"></a>

Para confirmar que el recopilador envíe las métricas de JMX y Node Exporter, ejecute las siguientes consultas en CloudWatch con [Query Studio](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-PromQL-QueryStudio.html). Si cada consulta devuelve puntos de datos, el recopilador está extrayendo correctamente el exportador correspondiente.

La siguiente consulta devuelve una métrica de Kafka por agente de JMX Exporter (puerto 11001). Indica el promedio de la tasa de actividad de los temas de los agentes, como los mensajes y los bytes que circulan a través de ellos. Los puntos de datos confirman que el recopilador está extrayendo las métricas de los agentes de Kafka.

```
kafka_server_BrokerTopicMetrics_MeanRate
```

La siguiente consulta devuelve el uso de la CPU por host desde Node Exporter (puerto 11002). Resta a 100 el promedio de la tasa de CPU inactiva durante un periodo de cinco minutos para obtener el porcentaje de CPU que utilizan los agentes. Los puntos de datos confirman que el recopilador está extrayendo las métricas por host.

```
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
```

## Visualización del panel automático
<a name="managed-prometheus-collectors-msk-dashboards"></a>

Cuando el recopilador comienza a enviar las métricas de Amazon MSK a CloudWatch, la consola de CloudWatch proporciona un panel automático denominado **MSK OTel**. Para abrirlo, consulte [MSK OTel](https://console.aws.amazon.com/cloudwatch/home?#dashboards/templates/msk-otel) o inicie sesión en la Consola de administración de AWS, abra la consola de CloudWatch, elija **Paneles** en el panel de navegación, elija **Paneles automáticos** y, a continuación, elija **MSK OTel**. Puede empezar a supervisar sus clústeres sin necesidad de crear ningún widget o panel usted mismo.

Si el panel automático satisface sus necesidades, puede usarlo tal cual. Para crear una experiencia de supervisión personalizada, puede agregar cualquiera de sus widgets a un panel personalizado. Para obtener más información sobre los paneles personalizados, consulte [Uso de paneles de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html).

## Observabilidad entre cuentas
<a name="managed-prometheus-collectors-msk-cross-account"></a>

Para la supervisión de Amazon MSK entre cuentas, recomendamos utilizar la centralización de métricas de Amazon CloudWatch. Para obtener más información, consulte [Centralización de métricas de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html).

Para obtener información sobre configuraciones alternativas de extractores entre cuentas que utilizan el encadenamiento de roles, consulte [Integración entre cuentas de Amazon MSK](https://docs.aws.amazon.com/prometheus/latest/userguide/prom-msk-cross-account.html) en la *Guía del usuario de Amazon Managed Service para Prometheus*.

## Limitaciones actuales
<a name="managed-prometheus-collectors-msk-limitations"></a>
+ Los recopiladores administrados no son compatibles con los clústeres sin servidor de Amazon MSK.
+ Los recopiladores administrados no admiten el acceso público combinado con el modo de metadatos de KRaft.
+ Cada combinación de clúster de Amazon MSK y conjunto de datos de CloudWatch requiere un recopilador.