# リソース

Site [llms.txt](/ja/llms.txt)

---

<!-- markdownlint-disable no-duplicate-heading -->


  
[リソース](/docs/concepts/resources/)は、リソース属性としてテレメトリーを生成するエンティティを表します。
たとえば、Kubernetes上のコンテナで実行されているテレメトリーを生成するOTP リリースは、OTP リリース名、ポッド名、ネームスペース、および場合によってはデプロイメント名を持ちます。
これらの4つの属性すべてをリソースに含めることができます。

オブザーバビリティバックエンドでは、リソース情報を使用して興味深い動作をより詳細に調査できます。
たとえば、トレースまたはメトリクスデータがシステムのレイテンシーを示している場合、それを特定のコンテナ、ポッド、またはKubernetesデプロイメントに絞り込むことができます。


## リソース検出器の使用 {#using-resource-detectors}

リソース検出器はさまざまなソースからリソース属性を取得します。
デフォルトの検出器は、OS 環境変数 `OTEL_RESOURCE_ATTRIBUTES` と `opentelemetry` OTP アプリケーション環境変数 `resource` を使用します。

使用する検出器はモジュール名のリストであり、アプリケーション設定で構成できます。

   <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="erlang" aria-controls="tabs-01-00" aria-selected="true">
        Erlang
      </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="elixir" aria-controls="tabs-01-01" aria-selected="false">
        Elixir
      </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-erlang" data-lang="erlang"><span class="line"><span class="cl"><span class="c">%% sys.config
</span></span></span><span class="line"><span class="cl"><span class="p">{</span><span class="n">opentelemetry</span><span class="p">,</span> <span class="p">{</span><span class="n">resource_detectors</span><span class="p">,</span> <span class="p">[</span><span class="n">otel_resource_env_var</span><span class="p">,</span> <span class="n">otel_resource_app_env</span><span class="p">]}}</span>
</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-elixir" data-lang="elixir"><span class="line"><span class="cl"><span class="c1">## runtime.exs</span>
</span></span><span class="line"><span class="cl"><span class="n">config</span> <span class="ss">:opentelemetry</span><span class="p">,</span> <span class="ss">resource_detectors</span><span class="p">:</span> <span class="p">[</span><span class="ss">:otel_resource_env_var</span><span class="p">,</span> <span class="ss">:otel_resource_app_env</span><span class="p">]</span>
</span></span></code></pre></div>
    </div>
</div>


または、環境変数 `OTEL_RESOURCE_DETECTORS` を使用します。

```sh
OTEL_RESOURCE_DETECTORS=otel_resource_env_var,otel_resource_app_env
```

すべてのリソース検出器はタイムアウト（ミリ秒単位）で保護されており、タイムアウト後は空の値を返します。
これにより、リソース検出器がネットワークアクセスのような処理を行う際に、プログラム全体が無期限にハングする可能性を防ぎます。
デフォルトは5000ミリ秒で、環境変数 `OTEL_RESOURCE_DETECTOR_TIMEOUT` またはアプリケーション変数 `otel_resource_detector_timeout` で設定できます。

## OS および OTP アプリケーション環境変数によるリソースの追加 {#adding-resources-with-os-and-otp-application-environment-variables}

2つのデフォルトリソース検出器が有効な状態で、OS 環境変数 `OTEL_RESOURCE_ATTRIBUTES` を使ってリソース属性を設定できます。

```sh
OTEL_RESOURCE_ATTRIBUTES="deployment.environment=development"
```

または、`sys.config` や `runtime.exs` の `opentelemetry` アプリケーション設定にある `resource` OTP アプリケーション環境変数を使用します。

   <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="erlang" aria-controls="tabs-02-00" aria-selected="true">
        Erlang
      </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="elixir" aria-controls="tabs-02-01" aria-selected="false">
        Elixir
      </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-erlang" data-lang="erlang"><span class="line"><span class="cl"><span class="c">%% sys.config
</span></span></span><span class="line"><span class="cl"><span class="p">{</span><span class="n">opentelemetry</span><span class="p">,</span> <span class="p">{</span><span class="n">resource</span><span class="p">,</span> <span class="p">#{</span><span class="n">deployment</span> <span class="o">=&gt;</span> <span class="p">#{</span><span class="n">environment</span> <span class="o">=&gt;</span> <span class="o">&lt;&lt;</span><span class="s">&#34;development&#34;</span><span class="o">&gt;&gt;</span><span class="p">}}}}</span>
</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-elixir" data-lang="elixir"><span class="line"><span class="cl"><span class="c1">## runtime.exs</span>
</span></span><span class="line"><span class="cl"><span class="n">config</span> <span class="ss">:opentelemetry</span><span class="p">,</span> <span class="ss">resource</span><span class="p">:</span> <span class="p">%{</span><span class="ss">deployment</span><span class="p">:</span> <span class="p">%{</span><span class="ss">environment</span><span class="p">:</span> <span class="s2">&#34;development&#34;</span> <span class="p">}}</span>
</span></span></code></pre></div>
    </div>
</div>


`resource` OTP アプリケーション環境変数内のリソース属性はフラット化され、`.` で結合されます。
そのため、`#{deployment => #{environment => <<"development">> }` は `#{'deployment.environment' => <<"development">>}` と同じです。

## カスタムリソース検出器 {#custom-resource-detectors}

カスタムリソース検出器は、[`otel_resource_detector` ビヘイビア](https://hexdocs.pm/opentelemetry/1.3.0/otel_resource_detector.html#callbacks)を実装することで作成できます。
このビヘイビアには、[`otel_resource`](https://hexdocs.pm/opentelemetry/1.3.0/otel_resource.html) を返す単一のコールバック `get_resource/1` が含まれています。

新しいリソース属性を追加する際に該当する場合は、`resource` に対して定義されている[セマンティック規約](/docs/specs/semconv/resource/)に従うべきであることに注意してください。
