# エクスポーター

LLMS index: [llms.txt](/llms.txt)

---


[OpenTelemetryコレクター](/docs/collector/)にテレメトリーを送信し、正しくエクスポートされることを確認してください。
本番環境でコレクターを使用することはベストプラクティスです。
テレメトリーを可視化するために、[Jaeger](https://jaegertracing.io/)、[Zipkin](https://zipkin.io/)、
[Prometheus](https://prometheus.io/)、または[ベンダー固有](/ecosystem/vendors/)のようなバックエンドにエクスポートしてください。



## 使用可能なエクスポーター {#available-exporters}

レジストリには、[Ruby 用のエクスポーターのリスト][reg]が含まれています。





エクスポーターの中でも、[OpenTelemetry Protocol (OTLP)][OTLP]エクスポーターは、OpenTelemetryのデータモデルを考慮して設計されており、OTelデータを情報の損失なく出力します。
さらに、多くのテレメトリーデータを扱うツールがOTLPに対応しており（たとえば、[Prometheus][]、[Jaeger][]やほとんどの[ベンダー][vendors]）、必要なときに高い柔軟性を提供します。
OTLPについて詳細に学習したい場合は、[OTLP仕様][OTLP]を参照してください。

[Jaeger]: /blog/2022/jaeger-native-otlp/
[OTLP]: /docs/specs/otlp/
[Prometheus]: https://prometheus.io/docs/prometheus/2.55/feature_flags/#otlp-receiver
[reg]: </ecosystem/registry/?component=exporter&language=ruby>
[vendors]: /ecosystem/vendors/



このページでは、主要なOpenTelemetry Ruby エクスポーターとその設定方法について説明します。






{{__hugo_ctx/}}


## OTLPエンドポイント {#otlp-endpoint}

OTLPエンドポイント（[コレクター](/docs/collector)やJaegerなど）にトレースデータを送信するには、`opentelemetry-exporter-otlp`のようなエクスポーターパッケージを使用します。

   <ul class="nav nav-tabs" id="tabs-1" role="tablist">
  <li class="nav-item">
      <button class="nav-link active"
          id="tabs-01-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-00" role="tab"
          data-td-tp-persist="bundler" aria-controls="tabs-01-00" aria-selected="true">
        bundler
      </button>
    </li><li class="nav-item">
      <button class="nav-link"
          id="tabs-01-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-01" role="tab"
          data-td-tp-persist="gem" aria-controls="tabs-01-01" aria-selected="false">
        gem
      </button>
    </li>
</ul>

<div class="tab-content" id="tabs-1-content">
    <div class="tab-body tab-pane fade show active"
        id="tabs-01-00" role="tabpanel" aria-labelled-by="tabs-01-00-tab" tabindex="1">
        <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">bundle add opentelemetry-exporter-otlp
</span></span></code></pre></div>
    </div>
    <div class="tab-body tab-pane fade"
        id="tabs-01-01" role="tabpanel" aria-labelled-by="tabs-01-01-tab" tabindex="1">
        <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">gem install opentelemetry-exporter-otlp
</span></span></code></pre></div>
    </div>
</div>


次に、OTLPエンドポイントを指定するようにエクスポーターを設定します。
たとえば、[Getting Started](../getting-started/)の `config/initializers/opentelemetry.rb` に `require 'opentelemetry-exporter-otlp'` を追加し、次のようなコードに更新できます。

```ruby
# config/initializers/opentelemetry.rb
require 'opentelemetry/sdk'
require 'opentelemetry/instrumentation/all'
require 'opentelemetry-exporter-otlp'
OpenTelemetry::SDK.configure do |c|
  c.service_name = 'dice-ruby'
  c.use_all() # すべての計装を有効化します！
end
```

アプリケーションを実行すると、OTLPを使用してトレースがエクスポートされます。

```sh
rails server -p 8080
```

デフォルトでは、トレースはlocalhost:4318でリッスンしているOTLPエンドポイントに送信されます。
`OTEL_EXPORTER_OTLP_ENDPOINT` を適切に設定することで、エンドポイントを変更できます。

```sh
env OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318" rails server -p 8080
```

すぐにOTLPエクスポーターを試して、受信側でトレースが視覚化されていることを確認するには、DockerコンテナでJaegerを実行します。

```shell
docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
  -e COLLECTOR_OTLP_ENABLED=true \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 4317:4317 \
  -p 4318:4318 \
  -p 14250:14250 \
  -p 14268:14268 \
  -p 14269:14269 \
  -p 9411:9411 \
  jaegertracing/all-in-one:latest
```

ブラウザで`localhost:16686`にアクセスして、JaegerのトレースUIを介してトレースを視覚化できます。

## Zipkin {#zipkin}

可能な限り早くZipkinをセットアップするには、Dockerコンテナで実行します。

```shell
docker run --rm -d -p 9411:9411 --name zipkin openzipkin/zipkin
```

アプリケーションの依存関係としてエクスポーターパッケージをインストールします。

   <ul class="nav nav-tabs" id="tabs-2" role="tablist">
  <li class="nav-item">
      <button class="nav-link active"
          id="tabs-02-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-00" role="tab"
          data-td-tp-persist="bundle" aria-controls="tabs-02-00" aria-selected="true">
        bundle
      </button>
    </li><li class="nav-item">
      <button class="nav-link"
          id="tabs-02-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-01" role="tab"
          data-td-tp-persist="gem" aria-controls="tabs-02-01" aria-selected="false">
        gem
      </button>
    </li>
</ul>

<div class="tab-content" id="tabs-2-content">
    <div class="tab-body tab-pane fade show active"
        id="tabs-02-00" role="tabpanel" aria-labelled-by="tabs-02-00-tab" tabindex="2">
        <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">bundle add opentelemetry-exporter-zipkin
</span></span></code></pre></div>
    </div>
    <div class="tab-body tab-pane fade"
        id="tabs-02-01" role="tabpanel" aria-labelled-by="tabs-02-01-tab" tabindex="2">
        <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">gem install opentelemetry-exporter-zipkin
</span></span></code></pre></div>
    </div>
</div>


エクスポーターを使用してZipkinバックエンドにデータを送信するようにOpenTelemetry構成を更新します。

```ruby
# config/initializers/opentelemetry.rb
require 'opentelemetry/sdk'
require 'opentelemetry/instrumentation/all'

require 'opentelemetry-exporter-zipkin'
OpenTelemetry::SDK.configure do |c|
  c.service_name = 'dice-ruby'
  c.use_all() # すべての計装を有効化します！
end
```

アプリケーションを実行する場合は、環境変数 `OTEL_TRACES_EXPORTER` をZipkinに設定します。

```sh
env OTEL_TRACES_EXPORTER=zipkin rails server
```

デフォルトでは、トレースはlocalhost:9411でリッスンしているZipkinエンドポイントに送信されます。
`OTEL_EXPORTER_ZIPKIN_ENDPOINT` を適切に設定することで、エンドポイントを変更できます。

```sh
env OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:9411" rails server
```
