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

> SDK de Ruby on Rails para ClickStack - ClickHouse Observability Stack

# Ruby on Rails

Esta guía integra:

<table>
  <tbody>
    <tr>
      <td className="pe-2">✖️ Logs</td>
      <td className="pe-2">✖️ ️️Métricas</td>
      <td className="pe-2">✅ Trazas</td>
    </tr>
  </tbody>
</table>

*Para enviar logs a ClickStack, hágalo a través del [OpenTelemetry Collector](/es/clickstack/ingesting-data/collector).*

<div id="getting-started">
  ## Primeros pasos
</div>

<div id="install-otel-packages">
  ### Instalar paquetes de OpenTelemetry
</div>

Utiliza el siguiente comando para instalar el paquete de OpenTelemetry.

```shell theme={null}
bundle add opentelemetry-sdk opentelemetry-instrumentation-all opentelemetry-exporter-otlp
```

<div id="configure-otel-logger-formatter">
  ### Configurar OpenTelemetry + el formateador del logger
</div>

A continuación, tendrás que inicializar la instrumentación de trazado de OpenTelemetry
y configurar el formateador de mensajes de log para el logger de Rails, de modo que los logs puedan
vincularse automáticamente con las trazas. Sin el formateador personalizado, los logs no
se correlacionarán automáticamente en ClickStack.

En la carpeta `config/initializers`, crea un archivo llamado `hyperdx.rb` y agrega lo
siguiente:

```ruby theme={null}
# config/initializers/hyperdx.rb

require 'opentelemetry-exporter-otlp'
require 'opentelemetry/instrumentation/all'
require 'opentelemetry/sdk'

OpenTelemetry::SDK.configure do |c|
  c.use_all() # ¡habilita toda la instrumentación de trazas!
end

Rails.application.configure do
  Rails.logger = Logger.new(STDOUT)
  # Rails.logger.log_level = Logger::INFO # el valor predeterminado es DEBUG, pero puede que prefieras INFO o superior en producción
  Rails.logger.formatter = proc do |severity, time, progname, msg|
    span_id = OpenTelemetry::Trace.current_span.context.hex_span_id
    trace_id = OpenTelemetry::Trace.current_span.context.hex_trace_id
    if defined? OpenTelemetry::Trace.current_span.name
      operation = OpenTelemetry::Trace.current_span.name
    else
      operation = 'undefined'
    end

    { "time" => time, "level" => severity, "message" => msg, "trace_id" => trace_id, "span_id" => span_id,
      "operation" => operation }.to_json + "\n"
  end

  Rails.logger.info "Logger initialized !! 🐱"
end
```

<div id="configure-environment-variables">
  ### Configurar variables de entorno
</div>

Después, deberás configurar las siguientes variables de entorno en tu shell para enviar telemetría a ClickStack a través del OpenTelemetry Collector:

<Tabs>
  <Tab title="Managed ClickStack">
    ```shell theme={null}
    export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 \
    OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
    OTEL_SERVICE_NAME='<NAME_OF_YOUR_APP_OR_SERVICE>' \
    ```
  </Tab>

  <Tab title="ClickStack Open Source">
    ```shell theme={null}
    export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 \
    OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \
    OTEL_SERVICE_NAME='<NAME_OF_YOUR_APP_OR_SERVICE>' \
    OTEL_EXPORTER_OTLP_HEADERS='authorization=<YOUR_INGESTION_API_KEY>'
    ```
  </Tab>
</Tabs>

*La variable de entorno `OTEL_SERVICE_NAME` se utiliza para identificar tu servicio
en la aplicación HyperDX; puede ser cualquier nombre que quieras.*

La variable de entorno `OTEL_EXPORTER_OTLP_HEADERS` contiene la clave de API disponible en la aplicación HyperDX, en `Team Settings → API Keys`.
