> ## 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 Ruby on Rails pour ClickStack - La stack d’observabilité ClickHouse

# Ruby on Rails

Ce guide prend en charge :

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

*Pour envoyer des logs à ClickStack, utilisez le [collecteur OpenTelemetry](/fr/clickstack/ingesting-data/collector).*

<div id="getting-started">
  ## Prise en main
</div>

<div id="install-otel-packages">
  ### Installer les paquets OpenTelemetry
</div>

Installez le paquet OpenTelemetry à l’aide de la commande suivante.

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

<div id="configure-otel-logger-formatter">
  ### Configurer OpenTelemetry + le formateur du logger
</div>

Ensuite, vous devrez initialiser l’instrumentation de tracing OpenTelemetry
et configurer le formateur des messages du logger Rails afin que les logs puissent être
automatiquement rattachés aux traces. Sans ce formateur personnalisé, les logs ne seront pas
automatiquement corrélés dans ClickStack.

Dans le dossier `config/initializers`, créez un fichier nommé `hyperdx.rb` et ajoutez-y
ce qui suit :

```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() # enables all trace instrumentation!
end

Rails.application.configure do
  Rails.logger = Logger.new(STDOUT)
  # Rails.logger.log_level = Logger::INFO # default is DEBUG, but you might want INFO or above in production
  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">
  ### Configurer les variables d’environnement
</div>

Ensuite, vous devez configurer les variables d’environnement suivantes dans votre shell pour acheminer la télémétrie vers ClickStack via le collecteur OpenTelemetry :

<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 d’environnement `OTEL_SERVICE_NAME` sert à identifier votre service
dans l’application HyperDX ; vous pouvez lui donner le nom de votre choix.*

La variable d’environnement `OTEL_EXPORTER_OTLP_HEADERS` contient la clé d’API disponible dans l’application HyperDX, sous `Team Settings → API Keys`.
