---
title: OpenTelemetry .NETの追加コード不要な計装ライブラリの最初のリリースが出たので試してみた
tags:  #observability #.net #opentelemetry  
author: [Takayoshi Tanaka](https://convert.docswell.com/user/tanaka_733)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/NPJX1V45JX.jpg?width=480
description: 2022/04/28 【オンライン】.NET 5 終了目前！ C# Tokyo イベント での発表スライドです。
published: April 28, 22
canonical: https://convert.docswell.com/s/tanaka_733/ZJNQGK-opentelemetry-dotnet-automatic-instrumentation
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/NPJX1V45JX.jpg)

OpenTelemetry .NETの
追加コード不要な計装ライブラリの
最初のリリースが出たので試してみた
C# To ky o 【 オ ン ライ ン】. NE T 5 終 了 目 前 ！ C# To ky o イ ベ ン ト
2 0 2 2 /04/28
@ t a n a ka_7 33


# Page. 2

![Page Image](https://bcdn.docswell.com/page/63JK2QZR7D.jpg)

自己紹介: @tanaka_733
◦ New Relic K.K. テクニカルサポートマネージャー
◦ C# Tokyo運営メンバー
◦ Microsoft MVP for Azure, Development Technologies
◦ Microsoft Certified Cloud Solution Architect Expert
◦ Certified Kubernetes Administrator &amp; Application Developer
(CKA/CKAD)


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4LE34PDG75.jpg)

OpenTelemetryとは
オブザーバビリティのために
テレメトリーデータを生成し管理するための新しい標準
オブザーバビリティ= アプリケーション（サービス）に問題が起きているか、なぜ起き
ているかを把握できること
テレメトリーデータ=アプリケーションの状態を把握するためのデータ
新しい標準=OSSで広く使われるCNCFプロジェクト
（参考）先日のハンズオンの資料
https://www.docswell.com/s/tanaka_733/KE17N5-202202-open-telemetry-net-handson#p2


# Page. 4

![Page Image](https://bcdn.docswell.com/page/V8EDQLPN7G.jpg)

OpenTelemetryの構成要素
Jaegarなどその他のソース
アプリ (Java)
OTel SDK
異なる言語でも
APIで
標準化され、
言語ごとに
SDKで実装
Collector
(Agent)
Instrumentation
アプリ (C#)
Collector
（Gateway）
Grafana,
New Relic
などのバックエンド
送信するデータの形式を
OTLPとして定める
OTel SDK
Collector
(Agent)
Instrumentation
OpenTelemetry
4
の構成要素


# Page. 5

![Page Image](https://bcdn.docswell.com/page/4V7PL2NNE8.jpg)

OpenTelemetryのコレクター
テレメトリーデータは大まかに以下の3通りの送信方法がある。
1. SDKから直接送信
2. アプリと同じホストのコレクターが送信
3. アプリと同じホストのコレクターとGatewayとなるコレクター
を経由して送信
アプリ (C#)
①
OTel SDK
②
Collector
(Agent)
Instrumentation
③
Collector
（Gateway）
Grafana,
New Relic
などのバックエンド
OpenTelemetry
5
の構成要素


# Page. 6

![Page Image](https://bcdn.docswell.com/page/L2JVQDKYEQ.jpg)

OpenTelemetryでの計装
計装…テレメトリーデータの計測コードを実装すること
自動と手動の2通りの方法を提供
自動計装…
最低限の設定コードで計装できる。ASP.NET CoreやHTTPClientといっ
た広く使われるフレームワーク、ライブラリに提供
手動計装…
SDKの操作を使って、自分で細かく計装する必要あり。自動計装で
サポートしていないライブラリやより詳細な計装をする場合に行う。


# Page. 7

![Page Image](https://bcdn.docswell.com/page/Z5EGWYQW7L.jpg)

ハンズオンでやったのは自動計装
自動とはいえ、こんなコードを書く必要がありました


# Page. 8

![Page Image](https://bcdn.docswell.com/page/V4JQ3MKQJP.jpg)

追加コードが不要な計装ライブラリ
GitHub - open-telemetry/opentelemetry-dotnet-instrumentation: OpenTelemetry .NET AutoInstrumentation
技術的には.NETのプロファイルAPIを利用しています
プロファイリングの概要 - .NET Framework | Microsoft Docs


# Page. 9

![Page Image](https://bcdn.docswell.com/page/DK741VPY71.jpg)

最初のリリースが出ました！
Releases · open-telemetry/opentelemetry-dotnet-instrumentation · GitHub


# Page. 10

![Page Image](https://bcdn.docswell.com/page/PLJ1G39NEG.jpg)

最初のリリースなので制約もありま
す
環境変数をたくさん設定しないといけない
◦ ASP.NET (.NET Framework)もサポートしているけど、
IIS10でないとプロセス単位の環境変数が設定できない
データの送信（Export先）はOTLP、Jaeger、Zipkin、Consoleのみサポート
◦ OTLPは認証ヘッダーの追加はできない模様
◦ 詳しくは次のページで
（手元で動作確認する限り）Macでは動作しなかった。Windowsでは確認ずみ。


# Page. 11

![Page Image](https://bcdn.docswell.com/page/8GJWKPNMJ2.jpg)

認証ヘッダーなしで送信可能なのは？
①で認証が不要な場合（そんなバックエンドがあるのかは謎。New Relicは不可）
Agent方式のコレクターを経由すれば②や③の方法で可能。
• 手軽に利用できるAgentはOTelプロジェクトが提供しているDockerイメージだが、
grpcのみサポート。
この場合、プロジェクトにgrpcのライブラリを追加する必要あり
• Windows環境の場合、手軽にセットアップできるAgentがないのでは…?
アプリ (C#)
OTel SDK
①
②
Collector
(Agent)
Instrumentation
③
Grafana,
New Relic
などのバックエンド
Collector
（Gateway）
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/W4EZZK3ME3.jpg)

動作させる手順
READMEとConfig一覧を確認
GitHub - open-telemetry/opentelemetry-dotnet-instrumentation: OpenTelemetry .NET AutoInstrumentation
opentelemetry-dotnet-instrumentation/config.md at main · open-telemetry/opentelemetrydotnet-instrumentation · GitHub
おおまかには
1.
Export先とCollectorを準備
1.
今回は、otel/opentelemetry-collector イメージをローカルで動かして、New Relicに送信
2.
ビルド済みのバイナリをダウンロードして適当な場所に展開
3.
環境変数をセットして計測対象のアプリを起動


# Page. 13

![Page Image](https://bcdn.docswell.com/page/KY76ZQX57V.jpg)

必要な環境変数


# Page. 14

![Page Image](https://bcdn.docswell.com/page/5G75WRXGJ4.jpg)

計測できました！


# Page. 15

![Page Image](https://bcdn.docswell.com/page/V9J2QDXDER.jpg)

さいごに
こまかい設定手順はあとでブログにまとめます


# Page. 16

![Page Image](https://bcdn.docswell.com/page/5DEYW28M7M.jpg)

おわり


