OpenTelemetryのデモ環境を使ってNew Relicにデータを送ってみた！

OpenTelemetryを使ってNew Relicにテレメトリデータを送付してみたいと思ったことはないですか？OpenTelemetryにはさっと試せるデモ環境があるのですが、今回は手元のDockerで動かしてテレメトリデータをNew Relicに送ってどのように見えるか試してみたいと思います！

OpenTelemetryのデモ環境の詳細は下記を参照ください。

https://opentelemetry.io/docs/demo/

# 概要

OpenTelemetryのデモ環境ではJava、Python、Goなどの複数の言語のアプリケーションを立ち上げて、[Locust](https://locust.io/) を使って継続的にトランザクションを作り出しています。全体の構成については下記を参照ください。

https://opentelemetry.io/docs/demo/architecture/

デフォルトの設定では、**OpenTelemetry Collectorを通してメトリクスはPrometheusに、トレースはJaegerに、ログはOpenSearchに送付**されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/9f788b56-d995-4ff8-a63f-5e72d41c6366.png)

https://opentelemetry.io/docs/demo/collector-data-flow-dashboard/

本記事では、この**OpenTelemetry Collectorの設定を変更してNew Relicにメトリクス、トレース、ログを送付**します。

# :one: OpenTelemetryのデモ環境をDockerで動かす

デフォルトの設定でOpenTelemetryのデモ環境を動かしてみます。

まずは、リポジトリをクローンして、

```
git clone https://github.com/open-telemetry/opentelemetry-demo.git
```
opentelemetry-demoに移動して、デモ環境を起動します。
```
cd opentelemetry-demo/
make start
```

デフォルトではメトリクスはPrometheusに、トレースはJaegerに、ログはOpenSearchに送付されるようになっています。詳細は下記を参照ください

https://opentelemetry.io/docs/demo/docker-deployment/


# :two: テレメトリデータをNew Relicに送付するように変更

続いて、OpenTelemetry Collectorの設定をNew Relicにメトリクス、トレース、ログを送付するように変更してotel-collectorのコンテナを再起動します。

デモ環境ではOpenTelemetry Collectorの設定は、otelcol-config.ymlにかかれていますが、otelcol-config-extras.ymlに設定を書くことで上書きすることができるのでこちらに変更する設定を記載していきます。

`<New RelicのLicense key>`には、New RelicのAPI Keyでタイプが**Ingest - License**となっているものを使用してください。New Relicの[API Keysの画面](https://one.newrelic.com/launcher/api-keys-ui.api-keys-launcher)で作成可能です。

```yaml:config-extras.yml
exporters:
  otlp/newrelic:
    endpoint: "https://otlp.nr-data.net:4317"
    headers:
      api-key: "<New RelicのLicense key>"

service:
  pipelines:
    traces:
      exporters: [otlp/newrelic, debug, spanmetrics]
    metrics:
      exporters: [otlp/newrelic, debug]
    logs:
      exporters: [otlp/newrelic, debug]
```

設定が書き終わったらotel-collectorのコンテナを再起動します。

OpenTelemetry Collectorの詳細は下記を参照ください。

https://opentelemetry.io/docs/collector/architecture/


# :three: New Relicで取り込んだ結果を確認

まず、All Entitiesを確認すると21個のOpenTelemetryのエンティティを確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/1b1c199f-2604-4aad-b310-2489ee2299d7.png)

adエンティティを選択すると、まずレスポンス、スループット、エラーレートが表示され、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/5ee61ab2-4bc3-420d-a450-43b9edec19e9.png)

View charts byで取り込んだメトリクスとトレースのどちらでチャートを表示するか選ぶことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/6dcf8eca-36f3-45f9-9592-05aaedd7b0f0.png)

また、Frontendエンティティを表示して、Transactionsを選ぶと時間がかかっているものでランキング表示することができ、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/2d43c761-3409-4f6d-9ca2-f9787b24e2d3.png)

トレースを選択することでその詳細な処理を確認したり、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/9ee625d1-4819-4596-845a-b5f66eeaec69.png)

そのトレースに関連するログを確認したりすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/668c7540-1a42-45da-9c79-542048f4b017.png)

ちなみに、デモ環境では下記のリンクからFlagdを使ってエラーを発生させることができます。
http://localhost:8080/feature

例えば、adFailureをonにしたりpaymentFailureを100%にするとadやpaymentでエラーが発生し、Errors inboxでエラーを扱えることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/092c4f2b-cbce-4ba9-99bf-1ca55391f907.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/61b768ea-7459-44f2-ac27-68201fb251d9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/297f8912-6e63-4701-8350-d60be4806192.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/a7d4627a-f629-4087-a2af-9dbce929570e.png)

# まとめ
OpenTelemetryのデモ環境を使ってテレメトリデータをNew Relicに送ってみました。OpenTelemetry Collectorのデータの送り先をNew Relicに変更するだけで、New Relicでトレースとログを紐づけて分析したり、エラーをグループ化して優先順位をつけて分析できたりするのでぜひお試しください。

# その他
New Relicでは、**新しい機能やその活用方法**について、QiitaやXで発信しています！
**無料でアカウント作成**も可能なのでぜひお試しください！

:::note info
New Relic株式会社の[X(旧Twitter)](https://x.com/NewRelicJapan) や [Qiita OrganizationOrganization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::