Slide 1

Slide 1 text

OpenTelemetry のサービス という概念について azukiazusa

Slide 2

Slide 2 text

自己紹介 ● Web フロントエンドが得意 ● https://azukiazusa.dev/ ● 趣味 ○ 読書 ○ 麻雀 ○ ポーカー azukiazusa

Slide 3

Slide 3 text

OpenTelemetry における サービスとは

Slide 4

Slide 4 text

テレメトリが計装された アプリケーションの 名前やバージョンを表す属性

Slide 5

Slide 5 text

http.requests.total{service.name=”payment”}

Slide 6

Slide 6 text

Semantic Conventions (意味規則)

Slide 7

Slide 7 text

メトリック名、属性名などの 共通命名や要求レベルの定義

Slide 8

Slide 8 text

多くの規則がある ● HTTP ● DataBase ● Resource ● FaaS ● Exception ● …

Slide 9

Slide 9 text

例 ● HTTP サーバーリクエストの継続時間のメトリック ○ http.server.request.duration ● HTTP メソッドを表す属性 ○ http.request.method ● HTTP ステータスコードを表す属性 ○ http.response.status_code

Slide 10

Slide 10 text

もし Semantic Conventions がなかったら...

Slide 11

Slide 11 text

マイクロサービスのダッシュボード作るぞ!

Slide 12

Slide 12 text

アプリケーションでの計装は準備できてる! あとはクエリを書くだけ!

Slide 13

Slide 13 text

はぁ? こっちは http.request.method だけどあっちは method だから注意してね あ、このテレメトリどこから送信されるかわからないか らよろしく

Slide 14

Slide 14 text

言語のライブラリごとに属性の名前が違う... どういうクエリを書けばいいの...

Slide 15

Slide 15 text

よく使う属性は命名統一して! あとどのアプリケーションから来たデータかわかる 属性は必須にして!

Slide 16

Slide 16 text

Semantic Conventions は実 装間の差異をなくし共通化す る意味で重要

Slide 17

Slide 17 text

サービスは Resource を 表す属性

Slide 18

Slide 18 text

テレメトリを生成するエンティティの情報 ● 例えば、Kubernetes なら... ○ プロセス名 ○ Pod 名 ○ 名前空間 ○ Deployment 名 Resource

Slide 19

Slide 19 text

Service 属性 説明 service.name サービスの論理名 必須 service.version サービスのバージョン service.instance.id サービスインスタンスの ID 一意の文字列 である必要がある 実験的 service.namespace サービスのグループを区別する名前空 間。`service.namespace` 内で `service.name` は一意である 実験的

Slide 20

Slide 20 text

service.name は SDK によっ て必ず提供されていなければ ならない

Slide 21

Slide 21 text

ココに 注目

Slide 22

Slide 22 text

もしくは環境変数 OTEL_SERVICE_NAME

Slide 23

Slide 23 text

● service.name は必須の属性だが、SDK を初期化する 際の `resource` は必須ではない ● `resource` が指定されない場合 `service.name` は `unknown_service:` + プロセス実行可能ファイルの 名前になる ○ `unknown_service:bash` SDK 使用時の注意点

Slide 24

Slide 24 text

service.name は必ず指定すべき

Slide 25

Slide 25 text

監視バックエンドも service.name が指定されて いること前提の UI となって ることが多い

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

● OpenTelemetry におけるサービスは Semantic Conventions で定義されている属性 ● テレメトリを送信するサービスの情報を表す ● サービスの名前を表す `service.name` は必ず指定し たほうがいい まとめ