> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Monitoreo de logs de Kafka con ClickStack

> Monitoreo de logs de Kafka con ClickStack

export const TrackedLink = ({href, eventName, children, ...rest}) => {
  const handleClick = () => {
    try {
      if (typeof window !== "undefined" && window.galaxy && eventName) {
        window.galaxy.track(eventName, {
          interaction: "click"
        });
      }
    } catch (e) {}
  };
  return <a href={href} onClick={handleClick} {...rest}>
      {children}
    </a>;
};

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

<Info>
  **En resumen**

  Recopila y visualiza los logs del broker de Kafka (formato Log4j) en ClickStack mediante el receptor `filelog` de OTel. Incluye un conjunto de datos de demostración y un dashboard preconfigurado.
</Info>

<div id="existing-kafka">
  ## Integración con Kafka existente
</div>

Esta sección explica cómo configurar una instalación existente de Kafka para enviar los logs del broker a ClickStack modificando la configuración del OTel collector de ClickStack.
Si desea probar la integración de logs de Kafka antes de configurar su propio entorno, puede hacerlo con nuestra configuración preconfigurada y datos de ejemplo en la sección ["conjunto de datos de demostración"](/es/clickstack/integration-examples/kafka-logs#demo-dataset).

<div id="prerequisites">
  ### Requisitos previos
</div>

* Instancia de ClickStack en funcionamiento
* Instalación existente de Kafka (versión 2.0 o posterior)
* Acceso a los archivos de registro de Kafka (`server.log`, `controller.log`, etc.)

<Steps>
  <Step>
    #### Verifique la configuración de logging de Kafka

    Kafka usa Log4j y escribe los logs en el directorio especificado por la propiedad del sistema `kafka.logs.dir` o la variable de entorno `LOG_DIR`. Compruebe la ubicación de su archivo de log:

    ```bash theme={null}
    # Ubicaciones predeterminadas
    ls $KAFKA_HOME/logs/      # Apache Kafka estándar (por defecto en <install-dir>/logs/)
    ls /var/log/kafka/        # Instalaciones de paquetes RPM/DEB
    ```

    Principales archivos de registro de Kafka:

    * **`server.log`**: Registros generales del broker (inicio, conexiones, replicación, errores)
    * **`controller.log`**: Eventos específicos del controlador (elección del líder, reasignación de particiones)
    * **`state-change.log`**: Transiciones de estado de particiones y réplicas

    El patrón predeterminado de Log4j de Kafka genera líneas como:

    ```text theme={null}
    [2026-03-09 14:23:45,123] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
    ```

    <Note>
      Para despliegues de Kafka basados en Docker (por ejemplo, `confluentinc/cp-kafka`), la configuración predeterminada de Log4j solo incluye un appender de consola; no hay ningún appender de archivo, por lo que los logs se escriben únicamente en stdout. Para usar el receiver `filelog`, tendrás que redirigir los logs a un archivo, ya sea añadiendo un appender de archivo a `log4j.properties` o redirigiendo stdout mediante una tubería (por ejemplo, `| tee /var/log/kafka/server.log`).
    </Note>
  </Step>

  <Step>
    #### Cree una configuración personalizada del OTel collector para Kafka

    ClickStack le permite ampliar la configuración base de OpenTelemetry Collector montando un archivo de configuración personalizado y definiendo una variable de entorno. La configuración personalizada se combina con la configuración base administrada por HyperDX mediante OpAMP.

    Cree un archivo llamado `kafka-logs-monitoring.yaml` con la siguiente configuración:

    ```yaml theme={null}
    receivers:
      filelog/kafka:
        include:
          - /var/log/kafka/server.log
          - /var/log/kafka/controller.log  # opcional, solo existe si log4j está configurado con appenders de archivo independientes
          - /var/log/kafka/state-change.log  # opcional, igual que el caso anterior
        start_at: beginning
        multiline:
          line_start_pattern: '^\[\d{4}-\d{2}-\d{2}'
        operators:
          - type: regex_parser
            regex: '^\[(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})\] (?P<severity>\w+) (?P<message>.*)'
            parse_from: body
            parse_to: attributes
            timestamp:
              parse_from: attributes.timestamp
              layout: '%Y-%m-%d %H:%M:%S,%L'
            severity:
              parse_from: attributes.severity

          - type: move
            from: attributes.message
            to: body

          - type: add
            field: attributes.source
            value: "kafka"

          - type: add
            field: resource["service.name"]
            value: "kafka-production"

    service:
      pipelines:
        logs/kafka:
          receivers: [filelog/kafka]
          processors:
            - memory_limiter
            - transform
            - batch
          exporters:
            - clickhouse
    ```

    <Note>
      * En la configuración personalizada, solo defines nuevos receivers y pipelines. Los processors (`memory_limiter`, `transform`, `batch`) y exporters (`clickhouse`) ya están definidos en la configuración base de ClickStack; solo los referencias por nombre.
      * La configuración `multiline` garantiza que las trazas de pila se capturen como una sola entrada de registro.
      * Esta configuración usa `start_at: beginning` para leer todos los logs existentes cuando se inicia el collector. En implementaciones de producción, cámbialo a `start_at: end` para evitar volver a ingestar los logs cuando el collector se reinicie.
    </Note>
  </Step>

  <Step>
    #### Configura ClickStack para cargar una configuración personalizada

    Para habilitar una configuración personalizada del collector en tu despliegue actual de ClickStack, debes hacer lo siguiente:

    1. Montar el archivo de configuración personalizado en `/etc/otelcol-contrib/custom.config.yaml`
    2. Establecer la variable de entorno `CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml`
    3. Montar el directorio de logs de Kafka para que el collector pueda leerlos

    <Tabs>
      <Tab title="Docker Compose">
        Actualiza la configuración de despliegue de ClickStack:

        ```yaml theme={null}
        services:
          clickstack:
            # ... configuración existente ...
            environment:
              - CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml
              # ... otras variables de entorno ...
            volumes:
              - ./kafka-logs-monitoring.yaml:/etc/otelcol-contrib/custom.config.yaml:ro
              - /var/log/kafka:/var/log/kafka:ro
              # ... otros volúmenes ...
        ```
      </Tab>

      <Tab title="Docker Run (imagen todo en uno)">
        Si estás usando la imagen todo en uno con Docker, ejecuta:

        ```bash theme={null}
        docker run --name clickstack \
          -p 8080:8080 -p 4317:4317 -p 4318:4318 \
          -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
          -v "$(pwd)/kafka-logs-monitoring.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
          -v /var/log/kafka:/var/log/kafka:ro \
          clickhouse/clickstack-all-in-one:latest
        ```
      </Tab>
    </Tabs>

    <Note>
      Asegúrate de que el collector de ClickStack tenga los permisos adecuados para leer los archivos de log de Kafka. En producción, usa montajes de solo lectura (`:ro`) y sigue el principio de privilegio mínimo.
    </Note>
  </Step>

  <Step>
    #### Verificar los logs en HyperDX

    Una vez completada la configuración, inicia sesión en HyperDX y verifica que los logs se estén recibiendo:

    <Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/zXCQbzXFHfeD9FBK/images/clickstack/kafka/logs/search-view.png?fit=max&auto=format&n=zXCQbzXFHfeD9FBK&q=85&s=762c318a8816d4a0eddd46d538edd561" alt="Vista de búsqueda" width="3838" height="1934" data-path="images/clickstack/kafka/logs/search-view.png" />

    <Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/zXCQbzXFHfeD9FBK/images/clickstack/kafka/logs/log-view.png?fit=max&auto=format&n=zXCQbzXFHfeD9FBK&q=85&s=dbc3108701e4d04d6f8996b114adc8d0" alt="Vista de logs" width="3838" height="1934" data-path="images/clickstack/kafka/logs/log-view.png" />
  </Step>
</Steps>

<div id="demo-dataset">
  ## Conjunto de datos de demostración
</div>

Prueba la integración de logs de Kafka con un conjunto de datos de ejemplo pregenerado antes de configurar tus sistemas de producción.

<Steps>
  <Step>
    #### Descarga el conjunto de datos de ejemplo

    Descarga el archivo de logs de ejemplo:

    ```bash theme={null}
    curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/kafka/server.log
    ```
  </Step>

  <Step>
    #### Crea la configuración del collector de prueba

    Crea un archivo llamado `kafka-logs-demo.yaml` con la siguiente configuración:

    ```yaml theme={null}
    cat > kafka-logs-demo.yaml << 'EOF'
    receivers:
      filelog/kafka:
        include:
          - /tmp/kafka-demo/server.log
        start_at: beginning
        multiline:
          line_start_pattern: '^\[\d{4}-\d{2}-\d{2}'
        operators:
          - type: regex_parser
            regex: '^\[(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})\] (?P<severity>\w+) (?P<message>.*)'
            parse_from: body
            parse_to: attributes
            timestamp:
              parse_from: attributes.timestamp
              layout: '%Y-%m-%d %H:%M:%S,%L'
            severity:
              parse_from: attributes.severity

          - type: move
            from: attributes.message
            to: body

          - type: add
            field: attributes.source
            value: "kafka-demo"

          - type: add
            field: resource["service.name"]
            value: "kafka-demo"

    service:
      pipelines:
        logs/kafka-demo:
          receivers: [filelog/kafka]
          processors:
            - memory_limiter
            - transform
            - batch
          exporters:
            - clickhouse
    EOF
    ```
  </Step>

  <Step>
    #### Ejecuta ClickStack con la configuración de demostración

    Ejecuta ClickStack con los logs de demostración y esta configuración:

    ```bash theme={null}
    docker run --name clickstack-demo \
      -p 8080:8080 -p 4317:4317 -p 4318:4318 \
      -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
      -v "$(pwd)/kafka-logs-demo.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
      -v "$(pwd)/server.log:/tmp/kafka-demo/server.log:ro" \
      clickhouse/clickstack-all-in-one:latest
    ```

    ## Verifica los logs en HyperDX

    Una vez que ClickStack esté en ejecución:

    1. Abre [HyperDX](http://localhost:8080/) e inicia sesión en tu cuenta (puede que primero tengas que crear una cuenta)
    2. Ve a la vista Search y establece la fuente en `Logs`
    3. Ajusta el intervalo de tiempo para que incluya **2026-03-09 00:00:00 - 2026-03-10 00:00:00 (UTC)**

    <Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/zXCQbzXFHfeD9FBK/images/clickstack/kafka/logs/search-view.png?fit=max&auto=format&n=zXCQbzXFHfeD9FBK&q=85&s=762c318a8816d4a0eddd46d538edd561" alt="Vista Search" width="3838" height="1934" data-path="images/clickstack/kafka/logs/search-view.png" />

    <Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/zXCQbzXFHfeD9FBK/images/clickstack/kafka/logs/log-view.png?fit=max&auto=format&n=zXCQbzXFHfeD9FBK&q=85&s=dbc3108701e4d04d6f8996b114adc8d0" alt="Vista Log" width="3838" height="1934" data-path="images/clickstack/kafka/logs/log-view.png" />
  </Step>
</Steps>

<div id="dashboards">
  ## Dashboards y visualización
</div>

<Steps>
  <Step>
    #### <TrackedLink href={'/es/examples/kafka-logs-dashboard.json'} download="kafka-logs-dashboard.json" eventName="docs.kafka_logs_monitoring.dashboard_download">Descargar</TrackedLink> la configuración del dashboard
  </Step>

  <Step>
    #### Importar dashboard preconfigurado

    1. Abre HyperDX y ve a la sección Dashboards.
    2. Haz clic en "Import Dashboard" en la esquina superior derecha, en el menú de tres puntos.

    <Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/zXCQbzXFHfeD9FBK/images/clickstack/import-dashboard.png?fit=max&auto=format&n=zXCQbzXFHfeD9FBK&q=85&s=eace17d7f86efbec4d3151bbf428941a" alt="Importar dashboard" width="3024" height="556" data-path="images/clickstack/import-dashboard.png" />

    3. Sube el archivo kafka-logs-dashboard.json y haz clic en Finalizar importación.

    <Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/zXCQbzXFHfeD9FBK/images/clickstack/kafka/logs/finish-import.png?fit=max&auto=format&n=zXCQbzXFHfeD9FBK&q=85&s=33143ecaedfa5186fd21b4399186901f" alt="Finalizar la importación del dashboard de logs de Kafka" width="3382" height="1934" data-path="images/clickstack/kafka/logs/finish-import.png" />
  </Step>

  <Step>
    #### El dashboard se creará con todas las visualizaciones preconfiguradas

    Para el dataset de demostración, establece el intervalo de tiempo para incluir **2026-03-09 00:00:00 - 2026-03-10 00:00:00 (UTC)**.

    <Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/zXCQbzXFHfeD9FBK/images/clickstack/kafka/logs/example-dashboard.png?fit=max&auto=format&n=zXCQbzXFHfeD9FBK&q=85&s=1707b45e67dfaeb39a86bd684dd9a0ef" alt="Dashboard de ejemplo de logs de Kafka" width="3838" height="1934" data-path="images/clickstack/kafka/logs/example-dashboard.png" />
  </Step>
</Steps>

<div id="troubleshooting">
  ## Solución de problemas
</div>

**Verifica que la configuración efectiva incluya tu receptor filelog:**

```bash theme={null}
docker exec <container> cat /etc/otel/supervisor-data/effective.yaml | grep -A 10 filelog
```

**Compruebe si hay errores en el collector:**

```bash theme={null}
docker exec <container> cat /etc/otel/supervisor-data/agent.log
```

**Verifique que el formato de los logs de Kafka coincida con el patrón esperado:**

```bash theme={null}
tail -1 /var/log/kafka/server.log
```

Si tu instalación de Kafka usa un pattern de Log4j personalizado, ajusta la regex de `regex_parser` según corresponda.

<div id="next-steps">
  ## Siguientes pasos
</div>

* Configura [alertas](/es/clickstack/features/alerts) para eventos críticos (fallos del broker, errores de replicación, problemas con el grupo de consumidores)
* Combínalo con [Métricas de Kafka](/es/clickstack/integration-examples/kafka-metrics) para una monitorización integral de Kafka
* Crea [dashboards](/es/clickstack/features/dashboards/overview) adicionales para casos de uso específicos (eventos del controlador, reasignación de particiones)

<div id="going-to-production">
  ## Puesta en producción
</div>

Esta guía amplía el OpenTelemetry Collector integrado de ClickStack para facilitar una configuración rápida. Para implementaciones en producción, recomendamos ejecutar su propio OTel Collector y enviar los datos al endpoint OTLP de ClickStack. Consulte [Envío de datos de OpenTelemetry](/es/clickstack/ingesting-data/opentelemetry) para la configuración de producción.
