> ## 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.

> حزمة Ruby on Rails لـ ClickStack - حزمة ClickHouse لأوبزرفابيليتي

# Ruby on Rails

يدعم هذا الدليل:

<table>
  <tbody>
    <tr>
      <td className="pe-2">✖️ السجلات</td>
      <td className="pe-2">✖️ ️️المقاييس</td>
      <td className="pe-2">✅ التتبعات</td>
    </tr>
  </tbody>
</table>

*لإرسال السجلات إلى ClickStack، يُرجى إرسالها عبر [OpenTelemetry Collector](/ar/clickstack/ingesting-data/collector).*

<div id="getting-started">
  ## البدء
</div>

<div id="install-otel-packages">
  ### تثبيت حزم OpenTelemetry
</div>

استخدم الأمر التالي لتثبيت حزمة OpenTelemetry.

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

<div id="configure-otel-logger-formatter">
  ### تهيئة OpenTelemetry + مُنسِّق logger
</div>

بعد ذلك، ستحتاج إلى تهيئة آلية التتبّع في OpenTelemetry
وضبط مُنسِّق رسائل السجل لـ logger الخاص بـ Rails بحيث يمكن ربط السجلات
بالتتبّعات تلقائيًا. ومن دون المُنسِّق المخصّص، لن تُربط السجلات
بالتتبّعات تلقائيًا داخل ClickStack.

في المجلد `config/initializers`، أنشئ ملفًا باسم `hyperdx.rb` وأضف إليه
ما يلي:

```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">
  ### تهيئة متغيرات البيئة
</div>

بعد ذلك، ستحتاج إلى تهيئة متغيرات البيئة التالية في الصدفة لإرسال بيانات القياس عن بُعد إلى ClickStack عبر 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>

*يُستخدم متغير البيئة `OTEL_SERVICE_NAME` للتعرّف على خدمتك
في تطبيق HyperDX، ويمكن أن يكون أي اسم تختاره.*

يحتوي متغير البيئة `OTEL_EXPORTER_OTLP_HEADERS` على مفتاح API المتاح عبر تطبيق HyperDX في `Team Settings → API Keys`.
