> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Opciones de configuración del plugin de fuente de datos ClickHouse en Grafana

# Configurar la fuente de datos ClickHouse en Grafana

export const ClickHouseSupportedBadge = () => {
  return <div className="ClickHouseSupportedBadge">
            <div className="ClickHouseSupportedIcon">
                <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                    <path d="M1.30762 1.39073C1.30762 1.3103 1.37465 1.22986 1.46849 1.22986H2.64824C2.72868 1.22986 2.80912 1.29689 2.80912 1.39073V14.4886C2.80912 14.5691 2.74209 14.6495 2.64824 14.6495H1.46849C1.38805 14.6495 1.30762 14.5825 1.30762 14.4886V1.39073Z" fill="currentColor" />
                    <path d="M4.2832 1.39073C4.2832 1.3103 4.35023 1.22986 4.44408 1.22986H5.62383C5.70427 1.22986 5.7847 1.29689 5.7847 1.39073V14.4886C5.7847 14.5691 5.71767 14.6495 5.62383 14.6495H4.44408C4.36364 14.6495 4.2832 14.5825 4.2832 14.4886V1.39073Z" fill="currentColor" />
                    <path d="M7.25977 1.39073C7.25977 1.3103 7.3268 1.22986 7.42064 1.22986H8.60039C8.68083 1.22986 8.76127 1.29689 8.76127 1.39073V14.4886C8.76127 14.5691 8.69423 14.6495 8.60039 14.6495H7.42064C7.3402 14.6495 7.25977 14.5825 7.25977 14.4886V1.39073Z" fill="currentColor" />
                    <path d="M10.2354 1.39073C10.2354 1.3103 10.3024 1.22986 10.3962 1.22986H11.576C11.6564 1.22986 11.7369 1.29689 11.7369 1.39073V14.4886C11.7369 14.5691 11.6698 14.6495 11.576 14.6495H10.3962C10.3158 14.6495 10.2354 14.5825 10.2354 14.4886V1.39073Z" fill="currentColor" />
                    <path d="M13.2256 6.6057C13.2256 6.52526 13.2926 6.44482 13.3865 6.44482H14.5662C14.6466 6.44482 14.7271 6.51186 14.7271 6.6057V9.27354C14.7271 9.35398 14.6601 9.43442 14.5662 9.43442H13.3865C13.306 9.43442 13.2256 9.36739 13.2256 9.27354V6.6057Z" fill="currentColor" />
                </svg>
            </div>
            Compatible con ClickHouse
        </div>;
};

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<ClickHouseSupportedBadge />

La forma más sencilla de modificar una configuración es desde la UI de Grafana, en la página de configuración del plugin, pero las fuentes de datos también se pueden [aprovisionar con un archivo YAML](https://grafana.com/docs/grafana/latest/administration/provisioning/#data-sources).

Esta página muestra una lista de opciones de configuración disponibles en el plugin de ClickHouse, así como fragmentos de configuración para quienes aprovisionan una fuente de datos con YAML.

Para obtener una visión general rápida de todas las opciones, puedes consultar [aquí](#all-yaml-options) la lista completa de opciones de configuración.

<div id="common-settings">
  ## Configuración común
</div>

Pantalla de configuración de ejemplo:

<Image size="sm" img="https://mintcdn.com/private-7c7dfe99/PWQnWTwcu17exYX2/images/integrations/data-visualization/grafana/config_common.webp?fit=max&auto=format&n=PWQnWTwcu17exYX2&q=85&s=ef8007c65279bb9df23fb52a0c6361d7" alt="Ejemplo de configuración nativa segura" border width="601" height="813" data-path="images/integrations/data-visualization/grafana/config_common.webp" />

Ejemplo de configuración YAML para la configuración común:

```yaml theme={null}
jsonData:
  host: 127.0.0.1 # (required) server address.
  port: 9000      # (required) server port. For native, defaults to 9440 secure and 9000 insecure. For HTTP, defaults to 8443 secure and 8123 insecure.

  protocol: native # (required) the protocol used for the connection. Can be set to "native" or "http".
  secure: false    # set to true if the connection is secure.

  username: default # the username used for authentication.

  tlsSkipVerify:     <boolean> # skips TLS verification when set to true.
  tlsAuth:           <boolean> # set to true to enable TLS client authentication.
  tlsAuthWithCACert: <boolean> # set to true if CA certificate is provided. Required for verifying self-signed TLS certificates.

secureJsonData:
  password: secureExamplePassword # the password used for authentication.

  tlsCACert:     <string> # TLS CA certificate
  tlsClientCert: <string> # TLS client certificate
  tlsClientKey:  <string> # TLS client key
```

Ten en cuenta que se añade una propiedad `version` cuando la configuración se guarda desde la UI. Esto indica la versión del plugin con la que se guardó la configuración.

<div id="http-protocol">
  ### Protocolo HTTP
</div>

Si eliges conectarte mediante el protocolo HTTP, se mostrarán más opciones de configuración.

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/PWQnWTwcu17exYX2/images/integrations/data-visualization/grafana/config_http.webp?fit=max&auto=format&n=PWQnWTwcu17exYX2&q=85&s=173a06bd7c26a19b181299cbf4e60f59" alt="Opciones adicionales de configuración HTTP" border width="975" height="442" data-path="images/integrations/data-visualization/grafana/config_http.webp" />

<div id="http-path">
  #### Ruta HTTP
</div>

Si el servidor HTTP está expuesto en una ruta URL diferente, puedes especificarla aquí.

```yaml theme={null}
jsonData:
  # excluye la primera barra
  path: additional/path/example
```

<div id="custom-http-headers">
  #### Encabezados HTTP personalizados
</div>

Puede añadir encabezados personalizados a las solicitudes enviadas a su servidor.

Los encabezados pueden ser de texto sin formato o seguros.
Todas las claves de los encabezados se almacenan en texto sin formato, mientras que los valores de los encabezados seguros se guardan en la configuración segura (de forma similar al campo `password`).

<Warning>
  **Valores seguros a través de HTTP**

  Aunque los valores de los encabezados seguros se almacenan de forma segura en la configuración, el valor seguirá enviándose por HTTP si la conexión segura está deshabilitada.
</Warning>

Ejemplo de YAML para encabezados de texto sin formato/seguros:

```yaml theme={null}
jsonData:
  httpHeaders:
  - name: X-Example-Plain-Header
    value: plain text value
    secure: false
  - name: X-Example-Secure-Header
    # "value" se omite
    secure: true
secureJsonData:
  secureHttpHeaders.X-Example-Secure-Header: secure header value
```

<div id="additional-settings">
  ## Ajustes adicionales
</div>

Estos ajustes adicionales son opcionales.

<Image size="sm" img="https://mintcdn.com/private-7c7dfe99/PWQnWTwcu17exYX2/images/integrations/data-visualization/grafana/config_additional.webp?fit=max&auto=format&n=PWQnWTwcu17exYX2&q=85&s=335542c340901788318c16cd8625b5c3" alt="Ejemplo de ajustes adicionales" border width="406" height="452" data-path="images/integrations/data-visualization/grafana/config_additional.webp" />

YAML de ejemplo:

```yaml theme={null}
jsonData:
  defaultDatabase: default # default database loaded by the query builder. Defaults to "default".
  defaultTable: <string>   # default table loaded by the query builder.

  dialTimeout: 10    # dial timeout when connecting to the server, in seconds. Defaults to "10".
  queryTimeout: 60   # query timeout when running a query, in seconds. Defaults to 60. This requires permissions on the user, if you get a permission error try setting it to "0" to disable it.
  validateSql: false # when set to true, will validate the SQL in the SQL editor.
```

<div id="opentelemetry">
  ### OpenTelemetry
</div>

OpenTelemetry (OTel) está profundamente integrado en el plugin.
Los datos de OpenTelemetry se pueden exportar a ClickHouse mediante nuestro [plugin exportador](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/clickhouseexporter).
Para un uso óptimo, se recomienda configurar OTel tanto para [logs](#logs) como para [trazas](#traces).

También es necesario configurar estos valores predeterminados para habilitar [enlaces de datos](/docs/es/integrations/connectors/data-visualization/grafana/query-builder#data-links), una función que permite flujos de trabajo de observabilidad muy potentes.

<div id="logs">
  ### Logs
</div>

Para agilizar la [creación de consultas para logs](/docs/es/integrations/connectors/data-visualization/grafana/query-builder#logs), puedes configurar una base de datos/tabla predeterminada, así como las columnas para la consulta de logs. Esto precargará el generador de consultas con una consulta de logs lista para ejecutar, lo que acelera la exploración en la página Explore para la observabilidad.

Si usas OpenTelemetry, debes activar el interruptor "**Usar OTel**" y establecer la **tabla de logs predeterminada** en `otel_logs`.
Esto sustituirá automáticamente las columnas predeterminadas para usar la versión del esquema OTel seleccionada.

Aunque OpenTelemetry no es obligatorio para los logs, usar un único conjunto de datos para logs/trazas ayuda a disponer de un flujo de trabajo de observabilidad más fluido con el [enlaces de datos](/docs/es/integrations/connectors/data-visualization/grafana/query-builder#data-links).

Ejemplo de pantalla de configuración de logs:

<Image size="sm" img="https://mintcdn.com/private-7c7dfe99/PWQnWTwcu17exYX2/images/integrations/data-visualization/grafana/config_logs.webp?fit=max&auto=format&n=PWQnWTwcu17exYX2&q=85&s=657c4d40f4f9875dc6c33ff8a538ed51" alt="Configuración de logs" border width="460" height="402" data-path="images/integrations/data-visualization/grafana/config_logs.webp" />

Ejemplo de YAML de configuración de logs:

```yaml theme={null}
jsonData:
  logs:
    defaultDatabase: default # default log database.
    defaultTable: otel_logs  # default log table. If you're using OTel, this should be set to "otel_logs".

    otelEnabled: false  # set to true if OTel is enabled.
    otelVersion: latest # the otel collector schema version to be used. Versions are displayed in the UI, but "latest" will use latest available version in the plugin.

    # Default columns to be selected when opening a new log query. Will be ignored if OTel is enabled.
    timeColumn:       <string> # the primary time column for the log.
    levelColumn:   <string> # the log level/severity of the log. Values typically look like "INFO", "error", or "Debug".
    messageColumn: <string> # the log's message/content.
```

<div id="traces">
  ### Trazas
</div>

Para agilizar la [creación de consultas para trazas](/docs/es/integrations/connectors/data-visualization/grafana/query-builder#traces), puedes establecer una base de datos/tabla predeterminada, así como las columnas de la consulta de trazas. Esto precargará el generador de consultas con una consulta de búsqueda de trazas lista para ejecutar, lo que agiliza la navegación en la página Explore para tareas de observabilidad.

Si usas OpenTelemetry, debes activar el interruptor "**Usar OTel**" y establecer la **tabla de trazas predeterminada** en `otel_traces`.
Esto sustituirá automáticamente las columnas predeterminadas para usar la versión del esquema de OTel seleccionada.
Aunque OpenTelemetry no es obligatorio, esta función funciona mejor cuando se utiliza su esquema para trazas.

Pantalla de ejemplo de configuración de trazas:

<Image size="sm" img="https://mintcdn.com/private-7c7dfe99/PWQnWTwcu17exYX2/images/integrations/data-visualization/grafana/config_traces.webp?fit=max&auto=format&n=PWQnWTwcu17exYX2&q=85&s=08216481b97764c5ffd49b94716ea0aa" alt="Configuración de trazas" border width="476" height="625" data-path="images/integrations/data-visualization/grafana/config_traces.webp" />

YAML de ejemplo de configuración de trazas:

```yaml theme={null}
jsonData:
  traces:
    defaultDatabase: default  # default trace database.
    defaultTable: otel_traces # default trace table. If you're using OTel, this should be set to "otel_traces".

    otelEnabled: false  # set to true if OTel is enabled.
    otelVersion: latest # the otel collector schema version to be used. Versions are displayed in the UI, but "latest" will use latest available version in the plugin.

    # Default columns to be selected when opening a new trace query. Will be ignored if OTel is enabled.
    traceIdColumn:       <string>    # trace ID column.
    spanIdColumn:        <string>    # span ID column.
    operationNameColumn: <string>    # operation name column.
    parentSpanIdColumn:  <string>    # parent span ID column.
    serviceNameColumn:   <string>    # service name column.
    durationTimeColumn:  <string>    # duration time column.
    durationUnitColumn:  <time unit> # duration time unit. Can be set to "seconds", "milliseconds", "microseconds", or "nanoseconds". For OTel the default is "nanoseconds".
    startTimeColumn:     <string>    # start time column. This is the primary time column for the trace span.
    tagsColumn:          <string>    # tags column. This is expected to be a map type.
    serviceTagsColumn:   <string>    # service tags column. This is expected to be a map type.
```

<div id="column-aliases">
  ### Alias de columnas
</div>

Los alias de columnas son una forma práctica de consultar tus datos con distintos nombres y tipos.
Mediante alias, puedes tomar un esquema anidado y aplanarlo para seleccionarlo fácilmente en Grafana.

El uso de alias puede resultarte útil si:

* Conoces tu esquema y la mayoría de sus propiedades o tipos anidados
* Almacenas tus datos en tipos Map
* Almacenas JSON como cadenas
* A menudo aplicas funciones para transformar las columnas que seleccionas

<div id="table-defined-alias-columns">
  #### Columnas ALIAS definidas en la tabla
</div>

ClickHouse admite alias de columna de forma nativa y funciona con Grafana desde el primer momento.
Las columnas alias pueden definirse directamente en la tabla.

```sql theme={null}
CREATE TABLE alias_example (
  TimestampNanos DateTime(9),
  TimestampDate ALIAS toDate(TimestampNanos)
)
```

En el ejemplo anterior, creamos un alias llamado `TimestampDate` que convierte la marca de tiempo en nanosegundos al tipo `Date`.
Estos datos no se almacenan en disco como la primera columna, sino que se calculan en tiempo de consulta.
Los alias definidos en la tabla no se incluyen en `SELECT *`, pero esto se puede configurar en la configuración del servidor.

Para obtener más información, consulta la documentación del tipo de columna [ALIAS](/docs/es/reference/statements/create/table#alias).

<div id="column-alias-tables">
  #### Tablas de alias de columnas
</div>

De forma predeterminada, Grafana ofrecerá sugerencias de columnas basadas en la respuesta de `DESC table`.
En algunos casos, puede que quieras sustituir por completo las columnas que Grafana ve.
Esto ayuda a ocultar tu esquema en Grafana al seleccionar columnas, lo que puede mejorar la experiencia de usuario en función de la complejidad de tu tabla.

La ventaja de esto frente a los alias definidos en la tabla es que puedes actualizarlos fácilmente sin tener que modificarla. En algunos esquemas, esto puede llegar a tener miles de entradas, lo que puede recargar la definición de la tabla subyacente. También permite ocultar columnas que quieres que el usuario ignore.

Grafana requiere que la tabla de alias tenga la siguiente estructura de columnas:

```sql theme={null}
CREATE TABLE aliases (
  `alias` String,  -- The name of the alias, as seen in the Grafana column selector
  `select` String, -- The SELECT syntax to use in the SQL generator
  `type` String    -- The type of the resulting column, so the plugin can modify the UI options to match the data type.
)
```

Así podríamos replicar el comportamiento de la columna `ALIAS` usando la tabla de alias:

```sql theme={null}
CREATE TABLE example_table (
  TimestampNanos DateTime(9)
);

CREATE TABLE example_table_aliases (`alias` String, `select` String, `type` String);

INSERT INTO example_table_aliases (`alias`, `select`, `type`) VALUES
('TimestampNanos', 'TimestampNanos', 'DateTime(9)'), -- Preserve original column from table (optional)
('TimestampDate', 'toDate(TimestampNanos)', 'Date'); -- Add new column that converts TimestampNanos to a Date
```

Luego podemos configurar esta tabla para usarla en Grafana. Ten en cuenta que el nombre puede ser cualquiera, o incluso definirse en una base de datos independiente:

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/PWQnWTwcu17exYX2/images/integrations/data-visualization/grafana/alias_table_config_example.webp?fit=max&auto=format&n=PWQnWTwcu17exYX2&q=85&s=0b8151e07c947f2afba1a4f91b86086b" alt="Ejemplo de configuración de una tabla de alias" border width="974" height="199" data-path="images/integrations/data-visualization/grafana/alias_table_config_example.webp" />

Ahora Grafana verá los resultados de la tabla de alias en lugar de los resultados de `DESC example_table`:

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/PWQnWTwcu17exYX2/images/integrations/data-visualization/grafana/alias_table_select_example.webp?fit=max&auto=format&n=PWQnWTwcu17exYX2&q=85&s=e04230ca34881112baab14f67b8ec663" alt="Ejemplo de selección de una tabla de alias" border width="508" height="188" data-path="images/integrations/data-visualization/grafana/alias_table_select_example.webp" />

Ambos tipos de alias pueden usarse para realizar conversiones de tipos complejas o extraer campos JSON.

<div id="all-yaml-options">
  ## Todas las opciones de YAML
</div>

Estas son todas las opciones de configuración en YAML que ofrece el complemento.
Algunos campos incluyen valores de ejemplo, mientras que otros simplemente muestran el tipo de campo.

Consulta la [documentación de Grafana](https://grafana.com/docs/grafana/latest/administration/provisioning/#data-sources) para obtener más información sobre el aprovisionamiento de fuentes de datos con YAML.

```yaml theme={null}
datasources:
  - name: Example ClickHouse
    uid: clickhouse-example
    type: grafana-clickhouse-datasource
    jsonData:
      host: 127.0.0.1
      port: 9000
      protocol: native
      secure: false
      username: default
      tlsSkipVerify: <boolean>
      tlsAuth: <boolean>
      tlsAuthWithCACert: <boolean>
      defaultDatabase: default
      defaultTable: <string>
      dialTimeout: 10
      queryTimeout: 60
      validateSql: false
      httpHeaders:
      - name: X-Example-Plain-Header
        value: plain text value
        secure: false
      - name: X-Example-Secure-Header
        secure: true
      logs:
        defaultDatabase: default
        defaultTable: otel_logs
        otelEnabled: false
        otelVersion: latest
        timeColumn: <string>
        levelColumn: <string>
        messageColumn: <string>
      traces:
        defaultDatabase: default
        defaultTable: otel_traces
        otelEnabled: false
        otelVersion: latest
        traceIdColumn: <string>
        spanIdColumn: <string>
        operationNameColumn: <string>
        parentSpanIdColumn: <string>
        serviceNameColumn: <string>
        durationTimeColumn: <string>
        durationUnitColumn: <time unit>
        startTimeColumn: <string>
        tagsColumn: <string>
        serviceTagsColumn: <string>
    secureJsonData:
      tlsCACert:     <string>
      tlsClientCert: <string>
      tlsClientKey:  <string>
      secureHttpHeaders.X-Example-Secure-Header: secure header value
```
