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

> ClickStack 向け Ruby on Rails SDK - ClickHouse オブザーバビリティスタック

# Ruby on Rails

export const ClickStackIntegrates = ({signals = []}) => {
  const list = Array.isArray(signals) ? signals : String(signals).split(",");
  const supported = list.map(s => String(s).trim().toLowerCase());
  const pillStyle = {
    display: "inline-flex",
    alignItems: "center",
    padding: "0.125rem 0.625rem",
    borderRadius: "9999px",
    fontSize: "0.8125rem",
    fontWeight: 500,
    lineHeight: 1.6,
    color: "#161517",
    backgroundColor: "#faff69",
    border: "1px solid rgba(0, 0, 0, .1)",
    marginRight: "0.5rem"
  };
  return <div style={{
    margin: "0 0 1.25rem"
  }}>
      <span style={{
    marginRight: "0.5rem"
  }}>このガイドで統合するシグナル:</span>
      {supported.includes("logs") && <span style={pillStyle}>ログ</span>}
      {supported.includes("metrics") && <span style={pillStyle}>メトリクス</span>}
      {supported.includes("traces") && <span style={pillStyle}>トレース</span>}
    </div>;
};

<ClickStackIntegrates signals={['traces']} />

*ログを ClickStack に送信するには、[OpenTelemetry collector](/ja/clickstack/ingesting-data/collector) 経由で送信してください。*

<h2 id="getting-started">
  はじめに
</h2>

<h3 id="install-otel-packages">
  OpenTelemetry パッケージをインストールする
</h3>

次のコマンドで OpenTelemetry パッケージをインストールします。

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

<h3 id="configure-otel-logger-formatter">
  OpenTelemetry + ログ用フォーマッタを設定する
</h3>

次に、OpenTelemetry のトレーシング用インストルメンテーションを初期化し、
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 # デフォルトはDEBUGだが、本番環境ではINFO以上が望ましい場合がある
  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
```

<h3 id="configure-environment-variables">
  環境変数を設定する
</h3>

続いて、OpenTelemetry Collector 経由で ClickStack にテレメトリーを送信するため、シェルで以下の環境変数を設定する必要があります。

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

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

*`OTEL_SERVICE_NAME` 環境変数は HyperDX アプリでサービスを識別するために使用されます。値には任意の名前を指定できます。*

`OTEL_EXPORTER_OTLP_HEADERS` 環境変数には、HyperDX アプリの `Team Settings → API Keys` で確認できる API key を指定します。
