├── .github
└── CODEOWNERS
├── .gitmodules
├── LICENSE
├── README.md
└── specification
├── Makefile
├── README.md
├── internal
└── img
│ ├── api-lifecycle.png
│ ├── architecture.png
│ ├── dynamic-config-service.png
│ ├── library-design.png
│ ├── library-full.png
│ ├── library-minimal.png
│ └── long-term-support.png
├── semantic_conventions
├── README.md
├── resource
│ ├── cloud.yaml
│ ├── cloud_provider
│ │ └── aws
│ │ │ ├── ecs.yaml
│ │ │ ├── eks.yaml
│ │ │ └── logs.yaml
│ ├── container.yaml
│ ├── deployment_environment.yaml
│ ├── faas.yaml
│ ├── host.yaml
│ ├── k8s.yaml
│ ├── os.yaml
│ ├── process.yaml
│ ├── service.yaml
│ ├── telemetry.yaml
│ └── webengine.yaml
├── syntax.md
├── trace
│ ├── database.yaml
│ ├── exception.yaml
│ ├── faas.yaml
│ ├── general.yaml
│ ├── http.yaml
│ ├── instrumentation
│ │ └── aws-sdk.yml
│ ├── messaging.yaml
│ └── rpc.yaml
└── version.properties
├── spec-compliance-matrix.md
└── specification
├── baggage
└── api.md
├── common
├── attribute-and-label-naming.md
└── common.md
├── compatibility
├── opencensus.md
├── openmetrics.md
└── opentracing.md
├── context
├── api-propagators.md
└── context.md
├── document-status.md
├── error-handling.md
├── glossary.md
├── library-guidelines.md
├── library-layout.md
├── logs
├── data-model.md
├── img
│ ├── app-to-file-logs-fb.png
│ ├── app-to-file-logs-otelcol.png
│ ├── app-to-otelcol.png
│ ├── application-api-sdk.png
│ ├── separate-collection.png
│ └── unified-collection.png
└── overview.md
├── metrics
├── README.md
├── api.md
├── datamodel.md
├── img
│ ├── accumulator-detail.png
│ ├── metrics-sdk.png
│ ├── model-cumulative-sum.png
│ ├── model-delta-sum.png
│ ├── model-event-layer.png
│ ├── model-layers-stream.png
│ └── model-layers.png
├── new_api.md
└── semantic_conventions
│ ├── README.md
│ ├── http-metrics.md
│ ├── openmetrics-guidelines.md
│ ├── process-metrics.md
│ ├── rpc.md
│ ├── runtime-environment-metrics.md
│ └── system-metrics.md
├── overview.md
├── performance-benchmark.md
├── performance.md
├── protocol
├── README.md
├── design-goals.md
├── exporter.md
├── img
│ ├── otlp-client-server.png
│ ├── otlp-concurrent.png
│ ├── otlp-multi-destination.png
│ ├── otlp-request-response.png
│ └── otlp-sequential.png
├── otlp.md
└── requirements.md
├── resource
├── sdk.md
└── semantic_conventions
│ ├── README.md
│ ├── cloud.md
│ ├── cloud_provider
│ └── aws
│ │ ├── README.md
│ │ ├── ecs.md
│ │ ├── eks.md
│ │ └── logs.md
│ ├── container.md
│ ├── deployment_environment.md
│ ├── faas.md
│ ├── host.md
│ ├── k8s.md
│ ├── os.md
│ ├── process.md
│ └── webengine.md
├── sdk-configuration.md
├── sdk-environment-variables.md
├── trace
├── api.md
├── sdk.md
├── sdk_exporters
│ ├── jaeger.md
│ ├── non-otlp.md
│ └── zipkin.md
└── semantic_conventions
│ ├── README.md
│ ├── database.md
│ ├── exceptions.md
│ ├── faas.md
│ ├── http.md
│ ├── instrumentation
│ ├── aws-lambda.md
│ └── aws-sdk.md
│ ├── messaging.md
│ ├── rpc.md
│ └── span-general.md
├── vendors.md
└── versioning-and-stability.md
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @ymotongpoo @katzchang @shirou
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "original/specification"]
2 | path = original/specification
3 | url = git@github.com:open-telemetry/opentelemetry-specification.git
4 | [submodule "original/community"]
5 | path = original/community
6 | url = git@github.com:open-telemetry/community.git
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OpenTelemetry ドキュメント日本語化プロジェクト
2 |
3 | > [!IMPORTANT]
4 | > このレポジトリはアーカイブされたので、新規のIssueやPull Requestは受け付けていません。
5 | > OpenTelemetryのドキュメントとウェブサイトのローカライズは[ウェブサイトのレポジトリ](https://github.com/open-telemetry/opentelemetry.io)で行っています。
6 | >
7 | > This repository is archived and will not receive any updates or accept issues or pull requests
8 | >
9 | > Localizations for the OpenTelemetry documentation and website are now part of the [website repository](https://github.com/open-telemetry/opentelemetry.io)
10 |
11 | OpenTelemetry documents Japanese translation poject
12 |
13 | ## 翻訳対象ドキュメント (Target repositories)
14 |
15 | * [community](https://github.com/open-telemetry/community)
16 | * 67d8f20a8b0cb49e3fd9033545c3f9e5865de7cf (2021-02-11バージョン)
17 | * [specification](https://github.com/open-telemetry/opentelemetry-specification)
18 | * v1.3.0
19 |
20 | ## 翻訳に取り掛かる前に
21 |
22 | ### 訳語について
23 |
24 | 翻訳プロジェクトへようこそ。この翻訳プロジェクトでは、全体的に翻訳に統一感を出すための工夫をしています。
25 |
26 | * 訳語一覧: [wikiのDictionary](https://github.com/open-telemetry/docs-ja/wiki/Dictionary) で英語と日本語の対訳の一覧を作成しているので、翻訳時にこちらに揃えてください。
27 | * 助動詞について: 原文はBCP 14に準ずると[明記しているので](https://github.com/open-telemetry/opentelemetry-specification#notation-conventions-and-compliance)、日本語訳もそれに従います。
28 | * 参照: https://www.nic.ad.jp/ja/tech/ipa/RFC2119JA.html
29 |
30 | **TODO: textlintなどの方法である程度自動化する**
31 |
32 | ### 機械翻訳の使用について
33 |
34 | 機械翻訳を利用して翻訳作業を行うことは技術の正しい利用方法だと思います。
35 | しかしながら、サービスによっては次のような問題があるため注意が必要です。
36 |
37 | * 翻訳結果の著作権(例: DeepL無料版、Google翻訳など)
38 | * 翻訳結果自体の品質
39 |
40 | したがって、機械翻訳を利用する場合には、上記の懸念が明確にないと確認できる状況以外では、機械翻訳による翻訳結果をそのままレポジトリにpushすることは避けてください。(各種サービスがCNCFのCLAにサインしたわけでもないため)
41 |
42 | ## コントリビューションワークフロー
43 |
44 | 1. Issueより対象のドキュメントに対し作業に取り掛かる旨コメントしてください。
45 | 2. 作業ドキュメントは原文の英語ドキュメントをコピーし、翻訳を進めるにあたりそれをコメントアウトする形で勧めてください。([参考](https://raw.githubusercontent.com/open-telemetry/docs-ja/main/specification/specification/library-guidelines.md))
46 | 4. 作業中は `WIP` をつけたブランチを作成しPRを早めに出してください。
47 | 5. Reviewerがレビューを行ってapproveされるまで修正をお願いします。
48 | 6. ApproveされたものはCODEOWNERSの誰かがsquash mergeします。
49 |
50 | もし翻訳等で質問がある場合はIssueでコメントしてください。
51 |
52 | ## チャット
53 |
54 | 翻訳プロジェクトのチャットはこちらのdiscordの `#otel-docs-ja` チャンネルで行っています。
55 |
56 | https://discord.gg/vYKuzFK
57 |
58 | ## 翻訳者ミーティング
59 |
60 | よりオープンなプロジェクトにするために、オープンな定期ミーティングを計画しています。
61 |
--------------------------------------------------------------------------------
/specification/Makefile:
--------------------------------------------------------------------------------
1 | # All documents to be used in spell check.
2 | ALL_DOCS := $(shell find . -name '*.md' -not -path './.github/*' -type f | grep -v ^./node_modules | sort)
3 | PWD := $(shell pwd)
4 |
5 | TOOLS_DIR := ./internal/tools
6 | MISSPELL_BINARY=bin/misspell
7 | MISSPELL = $(TOOLS_DIR)/$(MISSPELL_BINARY)
8 | MARKDOWN_LINK_CHECK=markdown-link-check
9 | MARKDOWN_LINT=markdownlint
10 | # see https://github.com/open-telemetry/build-tools/releases for semconvgen updates
11 | SEMCONVGEN_VERSION=0.3.1
12 |
13 | .PHONY: install-misspell
14 | install-misspell:
15 | # TODO: Check for existence before installing
16 | cd $(TOOLS_DIR) && go build -o $(MISSPELL_BINARY) github.com/client9/misspell/cmd/misspell
17 |
18 | .PHONY: misspell
19 | misspell:
20 | $(MISSPELL) -error $(ALL_DOCS)
21 |
22 | .PHONY: misspell-correction
23 | misspell-correction:
24 | $(MISSPELL) -w $(ALL_DOCS)
25 |
26 | .PHONY: install-markdown-link-check
27 | install-markdown-link-check:
28 | # TODO: Check for existence before installing
29 | npm install -g $(MARKDOWN_LINK_CHECK)
30 |
31 | .PHONY: markdown-link-check
32 | markdown-link-check:
33 | @for f in $(ALL_DOCS); do $(MARKDOWN_LINK_CHECK) --quiet --config .markdown_link_check_config.json $$f; done
34 |
35 | .PHONY: install-markdownlint
36 | install-markdownlint:
37 | # TODO: Check for existence before installing
38 | npm install -g markdownlint-cli
39 |
40 | .PHONY: markdownlint
41 | markdownlint:
42 | @for f in $(ALL_DOCS); do echo $$f; $(MARKDOWN_LINT) -c .markdownlint.yaml $$f || exit 1; done
43 |
44 | # Generate markdown tables from YAML definitions
45 | .PHONY: table-generation
46 | table-generation:
47 | docker run --rm -v $(PWD)/semantic_conventions:/source -v $(PWD)/specification:/spec \
48 | otel/semconvgen:$(SEMCONVGEN_VERSION) -f /source markdown -md /spec
49 |
50 | # Check if current markdown tables differ from the ones that would be generated from YAML definitions
51 | .PHONY: table-check
52 | table-check:
53 | docker run --rm -v $(PWD)/semantic_conventions:/source -v $(PWD)/specification:/spec \
54 | otel/semconvgen:$(SEMCONVGEN_VERSION) -f /source markdown -md /spec --md-check
55 |
56 | # Run all checks in order of speed / likely failure.
57 | .PHONY: check
58 | check: misspell markdownlint markdown-link-check
59 | @echo "All checks complete"
60 |
61 | # Attempt to fix issues / regenerate tables.
62 | .PHONY: fix
63 | fix: table-generation misspell-correction
64 | @echo "All autofixes complete"
65 |
66 | # Attempt to install all the tools
67 | .PHONY: install-tools
68 | install-tools: install-misspell install-markdownlint install-markdown-link-check
69 | @echo "All tools installed"
70 |
--------------------------------------------------------------------------------
/specification/README.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenTelemetry 仕様
6 |
7 | [](https://github.com/open-telemetry/opentelemetry-specification/actions?query=workflow%3A%22Checks%22+branch%3Amain)
8 | 
9 |
10 | 
11 |
12 |
15 |
16 | _OpenTelemetryが何であるかについて興味がありますか?私たちの[ウェブサイト](https://opentelemetry.io)で説明をチェックしてみてください!_。
17 |
18 |
21 |
22 | OpenTelemetry仕様は、すべてのOpenTelemetry実装に対する言語横断的な要求事項と期待事項を記述したものです。仕様に対する実質的な変更は、[OpenTelemetry Enhancement Proposal](https://github.com/open-telemetry/oteps)プロセスを使って提案しなければなりません。明瞭化、表現の変更、スペルや文法の修正などの小さな変更は、プルリクエストを通じて直接行うことができます。
23 |
24 |
32 |
33 | さらに注意が必要な質問は、通常の仕様会議に持ち込むことができます。EUとアメリカのタイムゾーンに合わせたミーティングは、毎週火曜日の午前8時(太平洋時間)に行われます。ミーティングノートは[google doc](https://docs.google.com/document/d/1-bCYkN-DWJq4jw1ybaDZYYmx-WAe6HnwfWbkm8d57v8/edit?usp=sharing)にあります。APACのタイムゾーンフレンドリーミーティングは、毎週火曜日の午後4時(太平洋時間)に開催されます。[OpenTelemetry calendar](https://github.com/open-telemetry/community#calendar)をご覧ください。
34 |
35 |
41 |
42 | 技術委員会へのエスカレーションは、[e-mail](https://github.com/open-telemetry/community#tc-technical-committee)で行うことができます。技術委員会は定期的に開催され、ノートは[こちら](https://docs.google.com/document/d/17v2RMZlJZkgoPYHZhIFTVdDqQMIAH8kzo8Sl2kP3cbY/edit?usp=sharing)にあります。
43 |
44 |
47 |
48 | ## 目次
49 |
50 |
80 |
81 | - [概要](specification/overview.md)
82 | - [用語集](specification/glossary.md)
83 | - [OpenTelemetryクライアントのバージョニングと安定性](specification/versioning-and-stability.md)
84 | - [ライブラリガイドライン](specification/library-guidelines.md)
85 | - [パッケージ/ライブラリレイアウト](specification/library-layout.md)
86 | - [エラー処理ガイドライン](specification/error-handling.md)
87 | - API仕様
88 | - [Context](specification/context/context.md)
89 | - [Propagators](specification/context/api-propagators.md)
90 | - [Baggage](specification/baggage/api.md)
91 | - [Tracing](specification/trace/api.md)
92 | - [Metrics](specification/metrics/api.md)
93 | - [Metrics](specification/metrics/datamodel.md)
94 | - [Logs](specification/logs/data-model.md)
95 | - SDK仕様
96 | - [Tracing](specification/trace/sdk.md)
97 | - [Resource](specification/resource/sdk.md)
98 | - [Configuration](specification/sdk-configuration.md)
99 | - Data仕様
100 | - [セマンティック規約](specification/overview.md#semantic-conventions)
101 | - [Protocol](specification/protocol/README.md)
102 | - このプロジェクトについて
103 | - [タイムライン](#プロジェクトタイムライン)
104 | - [表記規則とコンプライアンス](#表記規則とコンプライアンス)
105 | - [仕様のバージョニング](#仕様のバージョニング)
106 | - [略語](#略語)
107 | - [貢献](#貢献)
108 | - [ライセンス](#license)
109 |
110 |
113 |
114 | ## プロジェクトタイムライン
115 |
116 |
120 |
121 | 現在のプロジェクトの状況や、注目すべき過去のリリースに関する情報は、[OpenTelemetryプロジェクトのページ](https://opentelemetry.io/project-status/)に掲載されています。
122 |
123 |
127 |
128 | 現在の作業と将来の開発計画に関する情報は、[仕様開発マイルストーン](https://github.com/open-telemetry/opentelemetry-specification/milestones)にあります。
129 |
130 |
133 |
134 | ## 表記規則とコンプライアンス
135 |
136 |
139 |
140 | [仕様書](./specification/overview.md)に記載されているキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、「OPTIONAL」は、[BCP 14](https://tools.ietf.org/html/bcp14) 、[[RFC2119](https://tools.ietf.org/html/rfc2119)]、[[RFC8174](https://tools.ietf.org/html/rfc8174)]に記載されているとおりに解釈されます。これらはすべて大文字で表示されている場合に限り、解釈されます。
141 |
142 |
143 |
147 |
148 | [仕様書](./specification/overview.md)の実装は、[仕様書](./specification/overview.md)で定義されている「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」のうち、1つ以上の要件を満たしていない場合、準拠していません。逆に、[仕様書](./specification/overview.md)の実装は、[仕様書](./specification/overview.md)で定義されている「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」のすべての要件を満たす場合、準拠していることになります。
149 |
150 |
153 |
154 | ## 仕様のバージョニング
155 |
156 |
159 |
160 | [仕様書](./specification/overview.md)への変更は、[Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html)に従ってバージョン管理され、[CHANGELOG.md](CHANGELOG.md)に記述されます。レイアウトの変更はバージョン管理されません。本仕様の特定の実装では、どのバージョンを実装するかを指定する必要があります。
161 |
162 |
165 |
166 | 変更プロセス自体の変更は、現在はバージョン管理されていませんが、将来的には独立してバージョン管理される可能性があります。
167 |
168 |
171 |
172 | ## 略語
173 |
174 |
177 |
178 | OpenTelemetryプロジェクトで使用されている公式の略語は "OTel"です。
179 |
180 |
183 |
184 | 現在は廃止された "OpenTracing"プロジェクトとの混同を避けるために、"OT"の使用は控えてください。
185 |
186 |
189 |
190 | ## 貢献
191 |
192 |
195 |
196 | コントリビューションプロセスの詳細については、[CONTRIBUTING.md](CONTRIBUTING.md)を参照してください。
197 |
198 |
201 |
202 | ## ライセンス
203 |
204 |
207 |
208 | OpenTelemetry 仕様のリポジトリに貢献することで、あなたの貢献が[Apache 2.0 License](https://github.com/open-telemetry/specification/blob/main/LICENSE)の下でライセンスされることに同意することになります。
--------------------------------------------------------------------------------
/specification/internal/img/api-lifecycle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/internal/img/api-lifecycle.png
--------------------------------------------------------------------------------
/specification/internal/img/architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/internal/img/architecture.png
--------------------------------------------------------------------------------
/specification/internal/img/dynamic-config-service.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/internal/img/dynamic-config-service.png
--------------------------------------------------------------------------------
/specification/internal/img/library-design.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/internal/img/library-design.png
--------------------------------------------------------------------------------
/specification/internal/img/library-full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/internal/img/library-full.png
--------------------------------------------------------------------------------
/specification/internal/img/library-minimal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/internal/img/library-minimal.png
--------------------------------------------------------------------------------
/specification/internal/img/long-term-support.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/internal/img/long-term-support.png
--------------------------------------------------------------------------------
/specification/semantic_conventions/README.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # セマンティック規約のためのYAMLモデル
6 |
7 |
12 |
13 | このディレクトリに含まれるセマンティック規約のYAML記述は、セマンティック関連のコードの自動生成を支援するために、様々なOpenTelemetryの各言語向け実装によって使用されることを意図しています。
14 |
15 |
16 |
19 |
20 | ## セマンティック規約の書き方
21 |
22 |
25 |
26 | YAMLファイルの書き方については、[syntax](./syntax.md)を参考にしてください。
27 |
28 |
31 |
32 | ## 世代
33 |
34 |
38 |
39 | これらのYAMLファイルはmakeターゲットの`table-generation`によって仕様のすべてのセマンティック規約のために、一貫してフォーマットされたMarkdownテーブルを生成するために使われます。このリポジトリの直下からコマンドを使って実行してください。
40 |
41 |
42 | ```
43 | make table-generation
44 | ```
45 |
46 |
52 |
53 | 詳細については、OpenTelemetry ビルドツールのリポジトリにある [セマンティック規約ジェネレータ](https://github.com/open-telemetry/build-tools/tree/main/semantic-conventions) を参照してください。このビルドツールを使用すると、OpenTelemetry言語プロジェクトで使用するコードを生成することも可能です。
54 |
55 |
58 |
59 | こちらも参考:
60 |
61 |
65 |
66 | * [Markdownテーブル](https://github.com/open-telemetry/build-tools/tree/main/semantic-conventions#markdown-tables)
67 | * [コード生成](https://github.com/open-telemetry/build-tools/tree/main/semantic-conventions#code-generator)
68 |
69 |
72 |
73 | ## モデルの説明
74 |
75 |
78 |
79 | フィールドとその期待値は、[syntax.md] (./syntax.md)で示されています。
80 |
81 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/cloud.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: cloud
3 | prefix: cloud
4 | brief: >
5 | クラウド環境 (例: GCP, Azure, AWS)
6 | attributes:
7 | - id: provider
8 | type:
9 | allow_custom_values: true
10 | members:
11 | - id: AWS
12 | value: 'aws'
13 | brief: 'Amazon Web Services'
14 | - id: Azure
15 | value: 'azure'
16 | brief: 'Microsoft Azure'
17 | - id: GCP
18 | value: 'gcp'
19 | brief: 'Google Cloud Platform'
20 | brief: >
21 | クラウドプロバイダの名前
22 | examples: 'gcp'
23 | - id: account.id
24 | type: string
25 | brief: >
26 | リソースが割り当てられているクラウドのアカウントID
27 | examples: ['111111111111', 'opentelemetry']
28 | - id: region
29 | type: string
30 | brief: >
31 | リソースが動作している地理的な地域。[AWSリージョン](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)、[Azureリージョン](https://azure.microsoft.com/en-us/global-infrastructure/geographies/)、[Google Cloudリージョン](https://cloud.google.com/about/locations)など、利用可能なリージョンについては、プロバイダーのドキュメントを参照してください。
32 | examples: ['us-central1', 'us-east-1']
33 | - id: availability_zone
34 | type: string
35 | brief: >
36 | クラウドのリージョンは、可用性を高めるために、ゾーンと呼ばれる複数の隔離された場所を持つことが多いです。アベイラビリティゾーンは、リソースが稼働しているゾーンを表します。
37 | note: >
38 | Google Cloudでは、アベイラビリティー・ゾーンを"Zone"と呼んでいます。
39 | examples: ['us-east-1c']
40 | - id: platform
41 | type:
42 | allow_custom_values: true
43 | members:
44 | - id: aws_ec2
45 | value: 'aws_ec2'
46 | brief: AWS Elastic Compute Cloud
47 | - id: aws_ecs
48 | value: 'aws_ecs'
49 | brief: AWS Elastic Container Service
50 | - id: aws_eks
51 | value: 'aws_eks'
52 | brief: AWS Elastic Kubernetes Service
53 | - id: aws_lambda
54 | value: 'aws_lambda'
55 | brief: AWS Lambda
56 | - id: aws_elastic_beanstalk
57 | value: 'aws_elastic_beanstalk'
58 | brief: AWS Elastic Beanstalk
59 | - id: azure_vm
60 | value: 'azure_vm'
61 | brief: Azure Virtual Machines
62 | - id: azure_container_instances
63 | value: 'azure_container_instances'
64 | brief: Azure Container Instances
65 | - id: azure_aks
66 | value: 'azure_aks'
67 | brief: Azure Kubernetes Service
68 | - id: azure_functions
69 | value: 'azure_functions'
70 | brief: Azure Functions
71 | - id: azure_app_service
72 | value: 'azure_app_service'
73 | brief: Azure App Service
74 | - id: gcp_compute_engine
75 | value: 'gcp_compute_engine'
76 | brief: Google Cloud Compute Engine (GCE)
77 | - id: gcp_cloud_run
78 | value: 'gcp_cloud_run'
79 | brief: Google Cloud Run
80 | - id: gcp_kubernetes_engine
81 | value: 'gcp_kubernetes_engine'
82 | brief: Google Cloud Kubernetes Engine (GKE)
83 | - id: gcp_cloud_functions
84 | value: 'gcp_cloud_functions'
85 | brief: Google Cloud Functions (GCF)
86 | - id: gcp_app_engine
87 | value: 'gcp_app_engine'
88 | brief: Google Cloud App Engine (GAE)
89 | brief: >
90 | 使用中のクラウドプラットフォームのリソース
91 | note: >
92 | サービスのプレフィックスは `cloud.provider` で指定されたものと一致するべきです(SHOULD)。
93 | examples: ['aws_ec2', 'azure_vm', 'gcp_compute_engine']
94 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/cloud_provider/aws/ecs.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: aws.ecs
3 | prefix: aws.ecs
4 | brief: >
5 | AWS Elastic Container Service(ECS)が利用するResource。
6 | attributes:
7 | - id: container.arn
8 | type: string
9 | brief: >
10 | [ECSコンテナインスタンス](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html)のAmazon Resource Name(ARN)。
11 | examples: ['arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9']
12 | - id: cluster.arn
13 | type: string
14 | brief: >
15 | [ECSクラスタ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html)のARN。
16 | examples: ['arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster']
17 | - id: launchtype
18 | type:
19 | allow_custom_values: false
20 | members:
21 | - id: ec2
22 | value: "ec2"
23 | - id: fargate
24 | value: "fargate"
25 | brief: >
26 | ECSタスクの[起動タイプ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)。
27 | examples: ['ec2', 'fargate']
28 | - id: task.arn
29 | type: string
30 | brief: >
31 | [ECSタスク定義](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)のARN。
32 | examples: ['arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b']
33 | - id: task.family
34 | type: string
35 | brief: >
36 | このタスク定義が属するタスク定義ファミリ。
37 | examples: ['opentelemetry-family']
38 | - id: task.revision
39 | type: string
40 | brief: >
41 | このタスク定義のリビジョン
42 | examples: ["8", "26"]
43 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/cloud_provider/aws/eks.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: aws.eks
3 | prefix: aws.eks
4 | brief: >
5 | AWS Elastic Kubernetes Service(EKS)が使用するリソース
6 | attributes:
7 | - id: cluster.arn
8 | type: string
9 | brief: >
10 | EKSクラスターのARN
11 | examples: ['arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster']
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/cloud_provider/aws/logs.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: aws.log
3 | prefix: aws.log
4 | brief: >
5 | Amazon Web Servicesに特化したリソース。
6 | attributes:
7 | - id: group.names
8 | type: string[]
9 | brief: >
10 | アプリケーションが書き込んでいるAWS log groupの名前。
11 | examples: ['/aws/lambda/my-function', 'opentelemetry-service']
12 | note: >
13 | マルチコンテナアプリケーションのように1つのアプリケーションにサイドカーコンテナがあり、それぞれがそれぞれのロググループに書き込むような場合があるため、複数のロググループをサポートする必要があります。
14 | - id: group.arns
15 | type: string[]
16 | brief: >
17 | AWSロググループのAmazon Resource Name(ARN)。
18 | examples: ['arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*']
19 | note: >
20 | [ロググループ ARN 形式のドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format) を参照してください。
21 | - id: stream.names
22 | type: string[]
23 | brief: >
24 | アプリケーションが書き込んでいるAWSログストリームの名前。
25 | examples: ['logs/main/10838bed-421f-43ef-870a-f43feacbbb5b']
26 | - id: stream.arns
27 | type: string[]
28 | brief: >
29 | AWSログストリームのARN。
30 | examples: ['arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b']
31 | note: >
32 | [ログストリーム ARN 形式のドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format)を参照してください。1つのロググループには複数のログストリームを含むことができるので、これらのARNは必然的にロググループとログストリームの両方を識別する必要があります。
33 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/container.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: container
3 | prefix: container
4 | brief: >
5 | コンテナインスタンス
6 | attributes:
7 | - id: name
8 | type: string
9 | brief: >
10 | コンテナ名
11 | examples: ['opentelemetry-autoconf']
12 | - id: id
13 | type: string
14 | brief: >
15 | コンテナID。通常はUUIDで、例えば[Dockerコンテナの識別子](https://docs.docker.com/engine/reference/run/#container-identification)]に使用されます。UUIDが略されている場合があります。
16 | examples: ['a3bf90e006b2']
17 | - id: runtime
18 | type: string
19 | brief: >
20 | このコンテナを管理しているコンテナランタイム
21 | examples: ['docker', 'containerd', 'rkt']
22 | - id: image.name
23 | type: string
24 | brief: >
25 | コンテナイメージの名前
26 | examples: ['gcr.io/opentelemetry/operator']
27 | - id: image.tag
28 | type: string
29 | brief: >
30 | コンテナイメージタグ
31 | examples: ['0.1']
32 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/deployment_environment.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: deployment
3 | prefix: deployment
4 | brief: >
5 | ソフトウェアのデプロイ
6 | attributes:
7 | - id: environment
8 | type: string
9 | brief: >
10 | [デプロイ環境](https://en.wikipedia.org/wiki/Deployment_environment)の名前(別名:配置層)
11 | examples: ['staging', 'production']
12 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/faas.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: faas_resource
3 | prefix: faas
4 | brief: >
5 | サーバーレスインスタンス
6 | attributes:
7 | - id: name
8 | type: string
9 | required: always
10 | brief: >
11 | 実行される関数名
12 | examples: ['my-function']
13 | - id: id
14 | type: string
15 | required: always
16 | brief: >
17 | 実行される関数の一意なID
18 | note: >
19 | このフィールドは、例えばAWS Lambdaでは[ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)の値に、GCPではリソースのURIに、Azureでは[FunctionDirectory](https://github.com/Azure/azure-functions-host/wiki/Retrieving-information-about-the-currently-running-function)の値に対応しています。
20 | examples: ['arn:aws:lambda:us-west-2:123456789012:function:my-function']
21 | - id: version
22 | type: string
23 | brief: >
24 | [バージョン属性](.../.../resource/semantic_conventions/README.md#version-attributes)で定義されている、実行される関数のバージョン文字列。
25 | examples: ['2.0.0']
26 | - id: instance
27 | type: string
28 | brief: >
29 | 実行環境のID文字列。
30 | examples: ['my-function:instance-0001']
31 | - id: max_memory
32 | type: int
33 | brief: >
34 | サーバーレス関数を実行する際のメモリをMiBで記述したもの
35 | note: >
36 | メモリが少なすぎるとJavaのAWS Lambda関数が正常に動作しなくなることがあるので、この属性を設定しておくことをお勧めします。AWS Lambda上では、環境変数 `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` がこの情報を提供します。
37 | examples: 128
38 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/host.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: host
3 | prefix: host
4 | brief: >
5 | ホストは一般的なコンピューティングインスタンスとして定義されます。
6 | attributes:
7 | - id: id
8 | type: string
9 | brief: >
10 | 一意のホスト ID。クラウドの場合、これはクラウドプロバイダーによって割り当てられた instance_id である必要があります。
11 | examples: ['opentelemetry-test']
12 | - id: name
13 | type: string
14 | brief: >
15 | ホストの名前。Unix システムでは、hostname コマンドが返すもの、完全修飾されたホスト名、あるいはユーザが指定した別の名前が含まれます。
16 | examples: ['opentelemetry-test']
17 | - id: type
18 | type: string
19 | brief: >
20 | ホストの種類。クラウドの場合は、マシンタイプである必要があります。
21 | examples: ['n1-standard-1']
22 | - id: arch
23 | type:
24 | allow_custom_values: true
25 | members:
26 | - id: amd64
27 | value: 'amd64'
28 | brief: "AMD64"
29 | - id: arm32
30 | value: 'arm32'
31 | brief: "ARM32"
32 | - id: arm64
33 | value: 'arm64'
34 | brief: "ARM64"
35 | - id: ia64
36 | value: 'ia64'
37 | brief: "Itanium"
38 | - id: ppc32
39 | value: 'ppc32'
40 | brief: "32-bit PowerPC"
41 | - id: ppc64
42 | value: 'ppc64'
43 | brief: "64-bit PowerPC"
44 | - id: x86
45 | value: 'x86'
46 | brief: "32-bit x86"
47 | brief: >
48 | ホストシステムが動いているCPUアーキテクチャ
49 | - id: image.name
50 | type: string
51 | brief: >
52 | ホストがインスタンス化されたVMイメージまたはOSのインストール名。
53 | examples: ['infra-ami-eks-worker-node-7d4ec78312', 'CentOS-8-x86_64-1905']
54 | - id: image.id
55 | type: string
56 | brief: >
57 | VM イメージ ID。クラウドの場合、この値はプロバイダのものです。
58 | examples: ['ami-07b06b442921831e5']
59 | - id: image.version
60 | type: string
61 | brief: >
62 | [バージョン属性](README.md#version-attributes)で定義されているVMイメージのバージョン文字列。
63 | examples: ['0.1']
64 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/k8s.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: k8s.cluster
3 | prefix: k8s.cluster
4 | brief: >
5 | Kubernetesクラスター
6 | attributes:
7 | - id: name
8 | type: string
9 | brief: >
10 | クラスターの名前。
11 | examples: ['opentelemetry-cluster']
12 |
13 | - id: k8s.node
14 | prefix: k8s.node
15 | brief: >
16 | Kubernetes Nodeのオブジェクト
17 | attributes:
18 | - id: name
19 | type: string
20 | brief: >
21 | Nodeの名前
22 | examples: ['node-1']
23 | - id: uid
24 | type: string
25 | brief: >
26 | NodeのUID
27 | examples: ['1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2']
28 |
29 | - id: k8s.namespace
30 | prefix: k8s.namespace
31 | brief: >
32 | KubernetesのNamespace
33 | attributes:
34 | - id: name
35 | type: string
36 | brief: >
37 | Podが動作しているnamespaceの名前
38 | examples: ['default']
39 |
40 | - id: k8s.pod
41 | prefix: k8s.pod
42 | brief: >
43 | KubernetesのPodのオブジェクト
44 | attributes:
45 | - id: uid
46 | type: string
47 | brief: >
48 | PodのUID
49 | examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff']
50 | - id: name
51 | type: string
52 | brief: >
53 | Podの名前
54 | examples: ['opentelemetry-pod-autoconf']
55 |
56 | - id: k8s.container
57 | prefix: k8s.container
58 | brief: >
59 | [PodTemplate](https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates)の中のコンテナ。
60 | attributes:
61 | - id: name
62 | type: string
63 | brief: >
64 | PodTemplate の中のコンテナの名前
65 | examples: ['redis']
66 |
67 | - id: k8s.replicaset
68 | prefix: k8s.replicaset
69 | brief: >
70 | KubernetesのReplicaSet オブジェクト
71 | attributes:
72 | - id: uid
73 | type: string
74 | brief: >
75 | ReplicaSetのUID
76 | examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff']
77 | - id: name
78 | type: string
79 | brief: >
80 | ReplicaSetの名前
81 | examples: ['opentelemetry']
82 |
83 | - id: k8s.deployment
84 | prefix: k8s.deployment
85 | brief: >
86 | Kubernetes Deployment オブジェクト
87 | attributes:
88 | - id: uid
89 | type: string
90 | brief: >
91 | DeploymentのUID
92 | examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff']
93 | - id: name
94 | type: string
95 | brief: >
96 | Deploymentの名前
97 | examples: ['opentelemetry']
98 |
99 | - id: k8s.statefulset
100 | prefix: k8s.statefulset
101 | brief: >
102 | Kubernetes StatefulSet オブジェクト
103 | attributes:
104 | - id: uid
105 | type: string
106 | brief: >
107 | StatefulSetのUID
108 | examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff']
109 | - id: name
110 | type: string
111 | brief: >
112 | StatefulSetの名前
113 | examples: ['opentelemetry']
114 |
115 | - id: k8s.daemonset
116 | prefix: k8s.daemonset
117 | brief: >
118 | Kubernetes DaemonSet オブジェクト
119 | attributes:
120 | - id: uid
121 | type: string
122 | brief: >
123 | DaemonSetのUID
124 | examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff']
125 | - id: name
126 | type: string
127 | brief: >
128 | DaemonSetの名前
129 | examples: ['opentelemetry']
130 |
131 | - id: k8s.job
132 | prefix: k8s.job
133 | brief: >
134 | Kubernetes Job オブジェクト
135 | attributes:
136 | - id: uid
137 | type: string
138 | brief: >
139 | JobのUID
140 | examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff']
141 | - id: name
142 | type: string
143 | brief: >
144 | Jobの名前
145 | examples: ['opentelemetry']
146 |
147 | - id: k8s.cronjob
148 | prefix: k8s.cronjob
149 | brief: >
150 | Kubernetes CronJob オブジェクト
151 | attributes:
152 | - id: uid
153 | type: string
154 | brief: >
155 | CronJobのUID
156 | examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff']
157 | - id: name
158 | type: string
159 | brief: >
160 | CronJobの名前
161 | examples: ['opentelemetry']
162 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/os.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: os
3 | prefix: os
4 | brief: >
5 | このリソースで表されるプロセスが実行されているオペレーティングシステム(OS)
6 | note: >
7 | 仮想化環境の場合、これはプロセスのOS、すなわち基礎となるホストではなく仮想化されたゲストのOSです。
8 | attributes:
9 | - id: type
10 | type:
11 | allow_custom_values: true
12 | members:
13 | - id: windows
14 | value: 'windows'
15 | brief: "Microsoft Windows"
16 | - id: linux
17 | value: 'linux'
18 | brief: "Linux"
19 | - id: darwin
20 | value: 'darwin'
21 | brief: "Apple Darwin"
22 | - id: freebsd
23 | value: 'freebsd'
24 | brief: "FreeBSD"
25 | - id: netbsd
26 | value: 'netbsd'
27 | brief: "NetBSD"
28 | - id: openbsd
29 | value: 'openbsd'
30 | brief: "OpenBSD"
31 | - id: dragonflybsd
32 | value: 'dragonflybsd'
33 | brief: "DragonFly BSD"
34 | - id: hpux
35 | value: 'hpux'
36 | brief: "HP-UX (Hewlett Packard Unix)"
37 | - id: aix
38 | value: 'aix'
39 | brief: "AIX (Advanced Interactive eXecutive)"
40 | - id: solaris
41 | value: 'solaris'
42 | brief: "Oracle Solaris"
43 | - id: z_os
44 | value: 'z_os'
45 | brief: "IBM z/OS"
46 | required: always
47 | brief: 'The operating system type.'
48 | - id: description
49 | type: string
50 | brief: >
51 | 人間が読める (解析を意図していない) OS のバージョン情報で、例えば `ver` や `lsb_release -a` コマンドで得られるような文字列です。
52 | examples: ['Microsoft Windows [Version 10.0.18363.778]', 'Ubuntu 18.04.1 LTS']
53 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/process.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: process
3 | prefix: process
4 | brief: >
5 | OSのプロセス
6 | attributes:
7 | - id: pid
8 | type: int
9 | brief: >
10 | プロセスの識別子(PID)
11 | examples: [1234]
12 | - id: executable.name
13 | type: string
14 | required:
15 | conditional: "See below"
16 | brief: >
17 | 実行可能なプロセスの名前。Linuxベースのシステムでは、`proc/[pid]/status` の `Name` を設定できます。Windowsでは、`GetProcessImageFileNameW`のBaseNameを設定できます。
18 | examples: ['otelcol']
19 | - id: executable.path
20 | type: string
21 | required:
22 | conditional: "See below"
23 | brief: >
24 | 実行可能なプロセスへのフルパス。Linuxベースのシステムでは、`proc/[pid]/exe` を設定できます。Windowsでは、`GetProcessImageFileNameW`の結果を設定できます。
25 | examples: ['/usr/bin/cmd/otelcol']
26 | - id: command
27 | type: string
28 | required:
29 | conditional: "See below"
30 | brief: >
31 | プロセスを起動するために使用されたコマンド (すなわち、コマンド名)。Linuxベースのシステムでは、`proc/[pid]/cmdline`の0番目の文字列を設定できます。Windowsでは、`GetCommandLineW`から抽出した最初のパラメータを設定できます。
32 | examples: ['cmd/otelcol']
33 | - id: command_line
34 | type: string
35 | required:
36 | conditional: "See below"
37 | brief: >
38 | プロセスを起動するために使用された完全なコマンドを1つの文字列で表します。Windowsでは、`GetCommandLineW`の結果を設定できます。モニタリングのためだけに構築する必要がある場合は設定しないでください。代わりに `process.command_args` を使ってください。
39 | examples: ['C:\cmd\otecol --config="my directory\config.yaml"']
40 | - id: command_args
41 | type: string[]
42 | required:
43 | conditional: "See below"
44 | brief: >
45 | プロセスが受け取ったすべてのコマンド引数(コマンド/実行可能なもの自体を含む)。Linuxベースのシステム(およびprocfsをサポートする他のいくつかのUnix系システム)では、`proc/[pid]/cmdline`から抽出されたNULLで区切られた文字列のリストを設定できます。libcベースの実行ファイルの場合、これは `main` に渡される完全な argv ベクトルになります。
46 | examples: ['cmd/otecol', '--config=config.yaml']
47 | - id: owner
48 | type: string
49 | brief: >
50 | プロセスを所有するユーザーのユーザー名。
51 | examples: 'root'
52 | - id: process.runtime
53 | prefix: process.runtime
54 | brief: >
55 | 監視対象の単一の(言語)ランタイムインスタンス。
56 | attributes:
57 | - id: name
58 | type: string
59 | brief: >
60 | このプロセスのランタイムの名前。コンパイルされたネイティブバイナリの場合、これはコンパイラの名前であるべきです[SHOULD]。
61 | examples: ['OpenJDK Runtime Environment']
62 | - id: version
63 | type: string
64 | brief: >
65 | ランタイムが修正せずに返した、このプロセスのランタイムのバージョン。
66 | examples: '14.0.2'
67 | - id: description
68 | type: string
69 | brief: >
70 | プロセスのランタイムに関する追加の記述、例えば、ランタイム環境の特定のベンダのカスタマイズなど。
71 | examples: 'Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0'
72 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/service.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: service
3 | prefix: service
4 | brief: >
5 | サービスのインスタンス
6 | attributes:
7 | - id: name
8 | type: string
9 | required: always
10 | brief: >
11 | サービスの論理名。
12 | note: >
13 | 水平方向にスケールされたサービスのすべてのインスタンスに対して同じ値を指定しなければなりません(MUST)。値が指定されていない場合、SDKは `unknown_service:` を [`process.executeable.name`](process.md#process) で連結したもの、例えば `unknown_service:bash` などにフォールバックしなければなりません(MUST)。もし `process.executeable.name` が利用できない場合は、`unknown_service` を設定しなければなりません(MUST)。
14 | examples: ["shoppingcart"]
15 | - id: namespace
16 | type: string
17 | brief: >
18 | `service.name`の名前空間。
19 | note: >
20 | サービスのグループを区別するのに役立つ意味を持つ文字列値。例えば、サービスのグループを所有するチーム名などです。
21 | `service.name` は同じ名前空間内で一意であることが期待されます。`service.namespace` がResourceに指定されていない場合、`service.name` は明示的な名前空間が定義されていないすべてのサービスに対して一意であることが期待されます (つまり、空の/未指定の名前空間は単に有効な名前空間の1つに過ぎません)。長さ0の名前空間文字列は、未指定の名前空間と同じとみなされます。
22 | examples: ["Shop"]
23 | - id: instance.id
24 | type: string
25 | brief: >
26 | サービスインスタンスを表すID文字列。
27 | note: >
28 | 同じ `service.namespace,service.name` のペアの各インスタンスに対して一意でなければなりません(言い換えれば、`service.namespace,service.name,service.instance.id` の一組はグローバルに一意でなければなりません(MUST)。IDは、同時に存在する同じサービスのインスタンスを区別するのに役立ちます(例えば、水平方向にスケーリングされたサービスのインスタンス)。ID は永続的で、サービスインスタンスの寿命の間は同じであることが望ましいですが、サービスの重要な寿命イベント(サービスの再起動など)の間に ID が変化しても構いません。サービスがこの属性の値として使用できる固有のユニークなIDを持たない場合、ランダムなバージョン1またはバージョン4のRFC 4122 UUIDを生成することが推奨されます(再現可能なUUIDを目指すサービスはバージョン5を使用することもできます。より多くの推奨事項についてはRFC 4122を参照してください)。
29 | examples: ["627cc493-f310-47de-96bd-71410b7dec09"]
30 | - id: version
31 | type: string
32 | brief: >
33 | サービスAPIまたは実装のバージョン文字列。
34 | examples: ["2.0.0"]
35 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/telemetry.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: telemetry
3 | prefix: telemetry
4 | brief: >
5 | 計装ライブラリで記録されたデータをキャプチャするために使用されるテレメトリSDKです。
6 | attributes:
7 | - id: sdk.name
8 | type: string
9 | brief: >
10 | 上記で定義したテレメトリSDKの名前。
11 | examples: ["opentelemetry"]
12 | - id: sdk.language
13 | type:
14 | allow_custom_values: true
15 | members:
16 | - id: cpp
17 | value: "cpp"
18 | - id: dotnet
19 | value: "dotnet"
20 | - id: erlang
21 | value: "erlang"
22 | - id: go
23 | value: "go"
24 | - id: java
25 | value: "java"
26 | - id: nodejs
27 | value: "nodejs"
28 | - id: php
29 | value: "php"
30 | - id: python
31 | value: "python"
32 | - id: ruby
33 | value: "ruby"
34 | - id: webjs
35 | value: "webjs"
36 | brief: >
37 | テレメトリSDKの言語。
38 | - id: sdk.version
39 | type: string
40 | brief: >
41 | テレメトリSDKのバージョン文字列。
42 | examples: ["1.2.3"]
43 | - id: auto.version
44 | type: string
45 | brief: >
46 | 使用されている場合は、自動インストルメンテーションエージェントのバージョン文字列。
47 | examples: ["1.2.3"]
48 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/resource/webengine.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: webengine_resource
3 | prefix: webengine
4 | brief: >
5 | アプリケーション・コードを実行するパッケージ・ソフトウェアを記述するリソース。Webエンジンは、通常、process.runtimeを使用して実行されます。
6 | attributes:
7 | - id: name
8 | type: string
9 | required: always
10 | brief: >
11 | Webエンジンの名前
12 | examples: ['WildFly']
13 | - id: version
14 | type: string
15 | brief: >
16 | Webエンジンのバージョン
17 | examples: ['21.0.0']
18 | - id: description
19 | type: string
20 | brief: >
21 | Webエンジンの追加説明(詳細なバージョンとエディション情報など)
22 | examples: ['WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final']
--------------------------------------------------------------------------------
/specification/semantic_conventions/trace/exception.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: exception
3 | prefix: exception
4 | brief: >
5 | このドキュメントでは、Spanに関連する単一の例外を報告するための属性を定義しています。
6 | attributes:
7 | - id: type
8 | type: string
9 | brief: >
10 | 例外のタイプ(該当する場合は、完全修飾クラス名)。例外の動的な型をサポートする言語では、静的型よりも動的型を優先すべきです。
11 | examples: ["java.net.ConnectException","OSError"]
12 | - id: message
13 | type: string
14 | brief: 例外のメッセージ
15 | examples: ["Division by zero","Can't convert 'int' object to str implicitly"]
16 | - id: stacktrace
17 | type: string
18 | brief: >
19 | スタックトレースは、言語ランタイムの自然な表現の文字列です。この表現は各言語のSIGが決定し、文書化することになっています。
20 | examples: 'Exception in thread "main" java.lang.RuntimeException: Test exception\n
21 | at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n
22 | at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n
23 | at com.example.GenerateTrace.main(GenerateTrace.java:5)'
24 | - id: escaped
25 | type: boolean
26 | brief: >
27 | 例外がSpanの範囲を逸脱していることが分かっている場所で例外イベントが記録された場合、trueに設定するべきです(SHOULD)。
28 | note: |-
29 | 例外が論理的に"飛行中(in flight)"である間にSpanが終了した場合、例外はSpanの範囲から脱出(または離脱)したとみなされます。これは、言語によっては実際に"飛行中"かもしれませんが(例:Pythonで例外がContext managerの`__exit__`メソッドに渡された場合)、ほとんどの言語では例外を記録した時点で捕捉されるのが普通です。
30 | 例外が投げられた時点で、その例外がSpanのスコープから外れるかどうかを判断することは通常できません。しかし、[上記の例](#exception-end-example)のように、Spanを終了する直前にアクティブな例外があるかどうかをチェックすれば、例外がエスケープされるかどうかを知ることは簡単です。
31 | これによると、`exception.escaped` 属性が設定されていなかったり、false に設定されていたりしても、例外がSpanのスコープを抜け出す可能性があります。これは、例外が抜け出すかどうかがはっきりしない時点でイベントが記録されている可能性があるからです。
32 | constraints:
33 | - any_of:
34 | - "exception.type"
35 | - "exception.message"
36 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/trace/faas.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: faas_span
3 | prefix: faas
4 | brief: >
5 | このセマンティクス規約は、サーバーのプロビジョニングや管理を行わずに実行される関数(サーバーレス関数やFunction as a Service(FaaS)とも呼ばれる)のインスタンスをSpanで記述します。
6 | attributes:
7 | - id: trigger
8 | required:
9 | conditional: >
10 | FaaSインスタンスでは、着信時にfaas.trigger属性を設定しなければなりません(MUST)。FaaSインスタンスを起動しているクライアントは、クライアントに知られている場合、発信される起動に`faas.trigger`を設定しなければなりません(MUST)。例えば、トランスポートレイヤーがFaaSクライアントフレームワークで抽象化されていて、その設定にアクセスできない場合は、この限りではありません。
11 | brief: '関数が実行されるトリガーのタイプ。'
12 | type:
13 | allow_custom_values: false
14 | members:
15 | - id: datasource
16 | value: 'datasource'
17 | brief: 'データベースやファイルシステムの読み取り/書き込みなど、データソースの操作に対する応答の関数。'
18 | - id: http
19 | value: 'http'
20 | brief: '受信したHTTPリクエストへの応答の関数。'
21 | - id: pubsub
22 | value: 'pubsub'
23 | brief: 'メッセージングシステムにメッセージが送信されたときに実行される設定の関数。'
24 | - id: timer
25 | value: 'timer'
26 | brief: '定期的に実行されるように予定されている関数。'
27 | - id: other
28 | value: 'other'
29 | brief: '他に該当するものがない関数'
30 | - id: execution
31 | type: string
32 | brief: '現在実行されている関数の実行ID。'
33 | examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
34 |
35 | - id: faas_span.datasource
36 | prefix: faas.document
37 | extends: faas_span
38 | brief: >
39 | データベースやファイルシステムの読み書きなど、データソースの操作に反応して起動するFaaSのセマンティック規約。
40 | attributes:
41 | - id: collection
42 | type: string
43 | required: always
44 | brief: >
45 | トリガー操作が行われたソースの名前。例えば、Cloud StorageやS3であればバケット名、Cosmos DBであればデータベース名に対応します。
46 | examples: ['myBucketName', 'myDbName']
47 | - id: operation
48 | required: always
49 | type:
50 | allow_custom_values: true
51 | members:
52 | - id: insert
53 | value: 'insert'
54 | brief: '新しいオブジェクトが作成されたとき'
55 | - id: edit
56 | value: 'edit'
57 | brief: 'オブジェクトが変更されたとき'
58 | - id: delete
59 | value: 'delete'
60 | brief: 'オブジェクトが削除されたとき'
61 | brief: 'データに対して行われた操作の種類を記述します。'
62 | - id: time
63 | type: string
64 | required: always
65 | brief: >
66 | データにアクセスした時刻を[ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)形式で、[UTC](https://www.w3.org/TR/NOTE-datetime)で表した文字列。
67 | examples: "2020-01-23T13:47:06Z"
68 | - id: name
69 | type: string
70 | brief: >
71 | 操作の対象となるドキュメント名/テーブル名。例えば、クラウドストレージやS3ではファイル名、Cosmos DBではテーブル名となります。
72 | examples: ["myFile.txt", "myTableName"]
73 |
74 | - id: faas_span.http
75 | extends: faas_span
76 | brief: >
77 | TODO: databaseの話になってるのはtypo?
78 | Semantic Convention for FaaS triggered as a response to some data
79 | source operation such as a database or filesystem read/write.
80 | constraints:
81 | - include: http.server
82 |
83 | - id: faas_span.pubsub
84 | extends: faas_span
85 | brief: >
86 | メッセージングシステムにメッセージが送信されたときに実行されるFaaSセットのセマンティック規約。
87 | constraints:
88 | - include: messaging
89 |
90 | - id: faas_span.timer
91 | extends: faas_span
92 | prefix: faas
93 | brief: >
94 | 定期的に実行されることが予定されているFaaSのセマンティック規約。
95 | attributes:
96 | - id: time
97 | type: string
98 | required: always
99 | brief: >
100 | [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html)形式で、[UTC](https://www.w3.org/TR/NOTE-datetime)で表現された関数の起動時間を含む文字列です
101 | examples: "2020-01-23T13:47:06Z"
102 | - id: cron
103 | type: string
104 | brief: >
105 | スケジュール期間を[Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm)として含む文字列。
106 | examples: "0/5 * * * ? *"
107 |
108 | - id: faas_span.in
109 | extends: faas_span
110 | span_kind: server
111 | prefix: faas
112 | brief: >
113 | 受信するFaaS Spanの追加属性
114 | attributes:
115 | - id: coldstart
116 | type: boolean
117 | brief: >
118 | サーバーレス機能が初めて実行された場合(コールドスタート)に真となる真偽値。
119 |
120 | - id: faas_span.out
121 | extends: faas_span
122 | span_kind: client
123 | prefix: faas
124 | brief: >
125 | 発信するFaaS Spanの追加属性
126 | attributes:
127 | - id: invoked_name
128 | type: string
129 | required: always
130 | brief: >
131 | 呼び出された関数の名前です。
132 | note: >
133 | 呼び出された関数のリソース属性 `faas.name` と同じ値にすべきです(SHOULD)。
134 | examples: 'my-function'
135 | - id: invoked_provider
136 | type:
137 | allow_custom_values: true
138 | members:
139 | - id: AWS
140 | value: 'aws'
141 | brief: 'Amazon Web Services'
142 | - id: Azure
143 | value: 'azure'
144 | brief: 'Microsoft Azure'
145 | - id: GCP
146 | value: 'gcp'
147 | brief: 'Google Cloud Platform'
148 | required: always
149 | brief: >
150 | 呼び出された関数のクラウドプロバイダー。
151 | note: >
152 | 呼び出された関数のリソース属性である `cloud.provider` と同じ値にすべきです(SHOULD)。
153 | examples: 'aws'
154 | - id: invoked_region
155 | type: string
156 | required:
157 | conditional: >
158 | AWSやGCPなどの一部のクラウドプロバイダーでは、関数を一意に識別するためにその関数がホストされているリージョンが不可欠な情報であり、またエンドポイントの一部でもあります。リージョンは呼び出されるエンドポイントの一部であるため、クライアントは常にリージョンを知っています。このような場合には、`faas.invoked_region` を適宜設定しなければなりません(MUST)。リージョンがクライアントに知られていない場合や、呼び出された関数を識別するのに必要ない場合は、`faas.invoked_region`の設定は任意です。
159 | brief: >
160 | 呼び出された関数が動いているリージョン
161 | note: >
162 | 呼び出された関数のリソース属性である `cloud.region` と同じ値にすべきです(SHOULD)。
163 | examples: 'eu-central-1'
164 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/trace/general.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: network
3 | prefix: net
4 | brief: >
5 | これらの属性は、ネットワーク関連のあらゆる操作に使用できます。
6 | attributes:
7 | - id: transport
8 | type:
9 | allow_custom_values: false
10 | members:
11 | - id: ip_tcp
12 | value: "ip_tcp"
13 | - id: ip_udp
14 | value: "ip_udp"
15 | - id: ip
16 | value: "ip"
17 | brief: '他の IP-based プロトコル'
18 | - id: unix
19 | value: "unix"
20 | brief: 'Unix Domain socket. 下記参照'
21 | - id: pipe
22 | value: "pipe"
23 | brief: 'Named あるいは anonymous pipe. 下記注釈参照'
24 | - id: inproc
25 | value: "inproc"
26 | brief: 'In-process communication.'
27 | note: >
28 | 通常、ネットワークの属性が期待される場合に、「実際の」ネットワークプロトコルを使用しないin-processの通信のみが存在することを示します。通常、この場合、他のネットワーク属性はすべて省くことができます。
29 | - id: other
30 | value: "other"
31 | brief: 'その他 (non IP-based).'
32 | brief: >
33 | Transport protocol used. 下記注釈参照。
34 | examples: 'ip_tcp'
35 | - id: peer.ip
36 | type: string
37 | brief: >
38 | 相手のリモートアドレス(IPv4ではドット10進数、IPv6では[RFC5952](https://tools.ietf.org/html/rfc5952)
39 | examples: '127.0.0.1'
40 | - id: peer.port
41 | type: int
42 | brief: 'リモートのポート番号'
43 | examples: [80, 8080, 443]
44 | - id: peer.name
45 | type: string
46 | brief: 'リモートのホスト名あるいは類似の文字列。下記注釈参照'
47 | examples: 'example.com'
48 | - id: host.ip
49 | type: string
50 | brief: '`net.peer.ip`と同じですが、ホストのIPを指定します。マルチIPのホストの場合に便利です。'
51 | examples: '192.168.0.1'
52 | - id: host.port
53 | type: int
54 | brief: '`net.peer.port`と同じですが、ホストのポートを指定します。'
55 | examples: 35555
56 | - id: host.name
57 | type: string
58 | brief: 'ローカルのホスト名あるいは類似の文字列 下記注釈参照'
59 | examples: 'localhost'
60 | - id: peer
61 | prefix: peer
62 | brief: "あるリモートサービスにアクセスする操作"
63 | attributes:
64 | - id: service
65 | type: string
66 | brief: >
67 | リモートサービスの[`service.name`](../../resource/semantic_conventions/README.md#service)を指定します。リモートサービスの実際の `service.name` リソース属性があれば、それと等しくすべきです(SHOULD)。
68 | examples: "AuthTokenCache"
69 | - id: identity
70 | prefix: enduser
71 | brief: >
72 | これらの属性は、認証および/または認可されたエンドユーザーとのあらゆる操作に使用できます。
73 | attributes:
74 | - id: id
75 | type: string
76 | brief: >
77 | システム外からのインバウンドリクエストのアクセストークンまたは[Authorization](https://tools.ietf.org/html/rfc7235#section-4.2)ヘッダーから抽出したユーザー名またはclient_id。
78 | examples: 'username'
79 | - id: role
80 | type: string
81 | brief: 'トークンやアプリケーションのセキュリティコンテキストから抽出された、クライアントがリクエストを行う際の実際の役割/想定される役割。'
82 | examples: 'admin'
83 | - id: scope
84 | type: string
85 | brief: >
86 | トークンやアプリケーションのセキュリティコンテキストから抽出された、クライアントが現在所有しているスコープや付与された権限。この値は、[OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3)に関連付けられたスコープ、または[SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html)の属性値に由来するものです。
87 | examples: 'read:message, write:files'
88 | - id: thread
89 | prefix: thread
90 | brief: >
91 | これらの属性は、Spanを開始したスレッドに関する情報を保存するためのあらゆる操作に使用できます。
92 | attributes:
93 | - id: id
94 | type: int
95 | brief: >
96 | 現在の「管理された」スレッドID(OSのスレッドIDとは異なります)。
97 | examples: 42
98 | - id: name
99 | type: string
100 | brief: >
101 | 現在のスレッド名
102 | examples: main
103 | - id: code
104 | prefix: code
105 | brief: >
106 | これらの属性により、コードユニットを報告することができます。その結果、Spanに関するより多くの情報を提供することができます。
107 | attributes:
108 | - id: function
109 | type: string
110 | brief: >
111 | メソッド名、関数名、またはそれに相当するもの(通常はコードユニット名の最右端)。
112 | examples: serveRequest
113 | - id: namespace
114 | type: string
115 | brief: >
116 | `code.function`が定義されている「名前空間」です。通常は、修飾されたクラスやモジュールの名前で、 `code.namespace` + 何かの区切り文字 + `code.function` がコードユニットの一意な識別子になります。
117 | examples: com.example.MyHttpService
118 | - id: filepath
119 | type: string
120 | brief: >
121 | コードユニットを可能な限り一意に識別するためのソースコードファイル名(絶対ファイルパスが望ましい)。
122 | examples: /usr/local/MyApplication/content_root/app/index.php
123 | - id: lineno
124 | type: int
125 | brief: >
126 | `code.filepath` の中で、操作を表すのに最適な行番号です。これは `code.function` で指定されたコードユニット内を指すべきです。
127 | examples: 42
128 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/trace/http.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: http
3 | prefix: http
4 | brief: 'この文書では、HTTPクライアントおよびサーバーのSpansのセマンティック規約を定義しています。'
5 | note: >
6 | これらの規約は、httpとhttpsのスキームや、1.1、2、SPDYなどの様々なHTTPバージョンに使用することができます。
7 | attributes:
8 | - id: method
9 | type: string
10 | required: always
11 | brief: 'HTTPリクエストメソッド'
12 | examples: ["GET", "POST", "HEAD"]
13 | - id: url
14 | type: string
15 | brief: >
16 | `scheme://host[:port]/path?query[#fragment]`という形式の完全なHTTPリクエストURLです。
17 | 通常、このフラグメントはHTTPでは送信されませんが、知られている場合は、それにもかかわらず含める必要があります。
18 | note: >
19 | `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`.
20 | In such case the attribute's value should be `https://www.example.com/`.
21 | examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
22 | - id: target
23 | type: string
24 | brief: 'HTTPリクエスト行またはそれに相当するもので渡される、完全なリクエストターゲット。'
25 | examples: ['/path/12314/?q=ddds#123']
26 | - id: host
27 | type: string
28 | brief: >
29 | [HTTP host ヘッダー](https://tools.ietf.org/html/rfc7230#section-5.4)の値です。
30 | ヘッダーが空の場合、または存在しない場合、この属性は同じである必要があります。
31 | examples: ['www.example.org']
32 | - id: scheme
33 | type: string
34 | brief: '使用するプロトコルを示すURIスキーム'
35 | examples: ["http", "https"]
36 | - id: status_code
37 | type: int
38 | required:
39 | conditional: 受信/送信された場合に限ります。
40 | brief: '[HTTP レスポンス status code](https://tools.ietf.org/html/rfc7231#section-6).'
41 | examples: [200]
42 | - id: flavor
43 | type:
44 | # Default value: `true`. If false, it helps the code gen tool to
45 | # encode checks that only accept the listed values.
46 | allow_custom_values: true
47 | members:
48 | - id: HTTP_1_0
49 | value: '1.0'
50 | brief: 'HTTP 1.0'
51 | - id: HTTP_1_1
52 | value: '1.1'
53 | brief: 'HTTP 1.1'
54 | - id: HTTP_2_0
55 | value: '2.0'
56 | brief: 'HTTP 2'
57 | - id: SPDY
58 | value: 'SPDY'
59 | brief: 'SPDY protocol.'
60 | - id: QUIC
61 | value: 'QUIC'
62 | brief: 'QUIC protocol.'
63 | brief: '使われているHTTP protocolの種類'
64 | note: >
65 | `net.transport` が指定されていない場合は、`IP.TCP`と仮定できます。ただし、`http.flavor` が `QUIC` の場合は、`IP.UDP` を想定しています。
66 | examples: ['1.0']
67 | - id: user_agent
68 | type: string
69 | brief: 'クライアントが送信した[HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3)ヘッダの値。'
70 | examples: ['CERN-LineMode/2.15 libwww/2.17b3']
71 | - id: request_content_length
72 | type: int
73 | brief: >
74 | リクエストのペイロードボディのサイズ(バイト)です。これは、ヘッダーを除いて転送されたバイト数で、[Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2)ヘッダーとして表示されることが多いですが、必ずしもそうではありません。トランスポートエンコーディングを使用するリクエストでは、これは圧縮されたサイズでなければなりません。
75 | examples: 3495
76 | - id: request_content_length_uncompressed
77 | type: int
78 | brief: >
79 | トランスポートデコーディング後の、圧縮されていないリクエストペイロードボディのサイズです。トランスポートエンコーディングを使用しない場合は設定されません。
80 | examples: 5493
81 | - id: response_content_length
82 | type: int
83 | brief: >
84 | レスポンスペイロードボディのサイズ(バイト)です。これは、ヘッダーを除いて転送されたバイト数で、[Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2)ヘッダーとして表示されることが多いですが、必ずしもそうではありません。トランスポートエンコーディングを使用するリクエストでは、これは圧縮されたサイズでなければなりません。
85 | examples: 3495
86 | - id: response_content_length_uncompressed
87 | type: int
88 | brief: >
89 | トランスポートデコーディング後の、圧縮されていないレスポンスペイロードボディのサイズです。トランスポートエンコーディングを使用しない場合は設定されません。
90 | examples: 5493
91 | constraints:
92 | - include: network
93 |
94 | - id: http.client
95 | prefix: http
96 | extends: http
97 | span_kind: client
98 | brief: 'HTTP Clientのセマンティック規約'
99 | constraints:
100 | - any_of:
101 | - [http.url]
102 | - [http.scheme, http.host, http.target]
103 | - [http.scheme, net.peer.name, net.peer.port, http.target]
104 | - [http.scheme, net.peer.ip, net.peer.port, http.target]
105 |
106 | - id: http.server
107 | prefix: http
108 | extends: http
109 | span_kind: server
110 | brief: 'HTTP Serverのセマンティック規約'
111 | attributes:
112 | - id: server_name
113 | type: string
114 | brief: >
115 | 一致したバーチャルホストのプライマリサーバー名です。これは設定で取得する必要があります。
116 | そのような設定が得られない場合は、この属性を設定してはいけません(MUST NOT)(`net.host.name`を代わりに使用する必要があります)。
117 | note: >
118 | `http.url`は通常、サーバー側では容易に入手できませんが、他の情報から煩雑で時には損失を伴うプロセスで組み立てなければなりません(例:open-telemetry/opentelemetry-python/pull/148を参照)。
119 | そのため、利用可能な生データを提供することが望ましいです。
120 | examples: ['example.com']
121 | - id: route
122 | type: string
123 | brief: >
124 | マッチしたルート(パステンプレート)
125 | examples: '/users/:userID?'
126 | - id: client_ip
127 | type: string
128 | brief: >
129 | すべてのプロキシの背後にあるオリジナルのクライアントのIPアドレス(既知の場合)(例:[X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)より)
130 | note: >
131 | これは必ずしも`net.peer.ip`と同じではありません。`net.peer.ip`はネットワークレベルのピアを特定するもので、プロキシである可能性もあります。
132 | examples: '83.164.160.102'
133 | constraints:
134 | - any_of:
135 | - [http.scheme, http.host, http.target]
136 | - [http.scheme, http.server_name, net.host.port, http.target]
137 | - [http.scheme, net.host.name, net.host.port, http.target]
138 | - [http.url]
139 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/trace/messaging.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: messaging
3 | prefix: messaging
4 | brief: >
5 | このドキュメントでは、メッセージングシステムで使用される属性を定義しています。
6 | attributes:
7 | - id: system
8 | type: string
9 | required: always
10 | brief: 'メッセージングシステムを識別するための文字列'
11 | examples: ['kafka', 'rabbitmq', 'activemq', 'AmazonSQS']
12 | - id: destination
13 | type: string
14 | required: always
15 | brief: >
16 | メッセージの宛先名です。これは、Span名と同じかもしれませんが、それでも必要です。
17 | examples: ['MyQueue', 'MyTopic']
18 | - id: destination_kind
19 | type:
20 | allow_custom_values: false
21 | members:
22 | - id: queue
23 | value: "queue"
24 | brief: "メッセージはQueueに送られる"
25 | - id: topic
26 | value: "topic"
27 | brief: "メッセージはTopicに送られる"
28 | required:
29 | conditional: 'メッセージの宛先が `queue` または `topic` の場合にのみ必要です。'
30 | brief: 'メッセージの宛先の種類'
31 | - id: temp_destination
32 | type: boolean
33 | required:
34 | conditional: '欠落している場合は、偽であると見なされます'
35 | brief: 'メッセージの送信先が一時的なものである場合に真となる真偽値'
36 | - id: protocol
37 | type: string
38 | brief: 'トランスポートプロトコルの名前'
39 | examples: ['AMQP', 'MQTT']
40 | - id: protocol_version
41 | type: string
42 | brief: 'トランスポートプロトコルのバージョン'
43 | examples: '0.9.1'
44 | - id: url
45 | type: string
46 | brief: '接続文字列'
47 | examples: ['tibjmsnaming://localhost:7222', 'https://queue.amazonaws.com/80398EXAMPLE/MyQueue']
48 | - id: message_id
49 | type: string
50 | brief: 'メッセージングシステムがメッセージの識別子として使用する値で、文字列で表されます。'
51 | examples: '452a7c7c7c7048c2f887f61572b18fc2'
52 | - id: conversation_id
53 | type: string
54 | brief: >
55 | メッセージが属する会話を識別する[会話ID](#conversations)を文字列で表したもの。"Correlation ID"と呼ばれることもあります。
56 | examples: 'MyConversationId'
57 | - id: message_payload_size_bytes
58 | type: int
59 | brief: >
60 | メッセージのペイロードの(圧縮されていない)サイズをバイト単位で示したものです。また、圧縮されたペイロード・サイズと非圧縮のペイロード・サイズのどちらが報告されるかが不明な場合にも、この属性を使用します。
61 | examples: 2738
62 | - id: message_payload_compressed_size_bytes
63 | type: int
64 | brief: 'メッセージのペイロードの圧縮サイズ(バイト)です。'
65 | examples: 2048
66 | - ref: net.peer.name
67 | note: >
68 | これは、この特定のメッセージを送受信するブローカー(または他のネットワークレベルのピア)のIP/ホスト名でなければなりません。
69 | required:
70 | conditional: 利用可能な場合
71 | - ref: net.peer.ip
72 | tag: connection-level
73 | required:
74 | conditional: 利用可能な場合
75 | constraints:
76 | - include: network
77 |
78 | - id: messaging.producer
79 | prefix: messaging
80 | extends: messaging
81 | span_kind: producer
82 | brief: 'メッセージングシステムに送信されるメッセージのプロデューサーのためのセマンティック規約'
83 |
84 | - id: messaging.producer.synchronous
85 | prefix: messaging
86 | extends: messaging
87 | span_kind: client
88 | brief: >
89 | メッセージを生成し、同期的に応答を待つメッセージングシステムのクライアントのためのセマンティック規約。
90 |
91 | - id: messaging.consumer
92 | prefix: messaging
93 | extends: messaging
94 | span_kind: consumer
95 | brief: 'メッセージングシステムから受信したメッセージの消費者のためのセマンティック規約'
96 | attributes:
97 | - id: operation
98 | type:
99 | allow_custom_values: false
100 | members:
101 | - id: receive
102 | value: "receive"
103 | - id: process
104 | value: "process"
105 | brief: >
106 | 上記の[操作名](#operation-names)セクションで定義されているメッセージ消費の種類を識別する文字列です。操作が "send"の場合、この属性は設定してはいけません(MUST NOT)。なぜなら、この場合、操作はspan kindから推測できるからです。
107 |
108 | - id: messaging.consumer.synchronous
109 | prefix: messaging
110 | extends: messaging.consumer
111 | span_kind: server
112 | brief: >
113 | メッセージングシステムから受信したメッセージを消費し、常にそのメッセージのProducerに向けた返信を返すサーバーのためのセマンティックな規約
114 |
115 | - id: messaging.rabbitmq
116 | prefix: messaging.rabbitmq
117 | extends: messaging
118 | brief: >
119 | RabbitMQのための属性
120 | attributes:
121 | - id: routing_key
122 | type: string
123 | required:
124 | conditional: 空でなければ
125 | brief: >
126 | RabbitMQのメッセージルーティングキー。
127 | examples: 'myKey'
128 |
129 | - id: messaging.kafka
130 | prefix: messaging.kafka
131 | extends: messaging
132 | brief: >
133 | Apache Kafkaのための属性
134 | attributes:
135 | - id: message_key
136 | type: string
137 | brief: >
138 | Kafkaのメッセージキーは、同じメッセージが同じパーティションで処理されるようにグループ化するために使用されます。メッセージキーは、`messaging.message_id` とは異なり、一意ではありません。キーが `null` の場合、この属性は設定してはいけません (MUST NOT)。
139 | note: >
140 | キータイプが文字列でない場合は、その文字列表現を属性に与える必要があります。キーが曖昧でない正規の文字列形式を持たない場合、その値を含めてはいけません。
141 | examples: 'myKey'
142 | - id: consumer_group
143 | type: string
144 | brief: >
145 | メッセージを処理しているKafka Consumerグループの名前。Producerではなく、Consumerにのみ適用されます。
146 | examples: 'my-group'
147 | - id: client_id
148 | type: string
149 | brief: >
150 | メッセージを処理しているConsumerまたはProducerのClient Id。
151 | examples: 'client-5'
152 | - id: partition
153 | type: int
154 | brief: >
155 | メッセージの送信先となるパーティション。
156 | examples: 2
157 | - id: tombstone
158 | type: boolean
159 | required:
160 | conditional: '欠落している場合は、偽であると見なされます'
161 | brief: 'メッセージがTombstoneである場合に真となる真偽値'
162 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/trace/rpc.yaml:
--------------------------------------------------------------------------------
1 | groups:
2 | - id: rpc
3 | prefix: rpc
4 | brief: 'この文書では、リモートプロシージャコールのセマンティック規約を定義しています'
5 | attributes:
6 | - id: system
7 | type: string
8 | required: always
9 | brief: 'リモーションシステムを識別する文字列'
10 | examples: ["grpc", "java_rmi", "wcf"]
11 | - id: service
12 | type: string
13 | required:
14 | conditional: "いいえ、しかし推奨です"
15 | brief: '呼び出されるサービスのフルネーム(該当する場合は、パッケージ名も含む)'
16 | examples: "myservice.EchoService"
17 | - id: method
18 | type: string
19 | required:
20 | conditional: "いいえ、しかし推奨です"
21 | brief: '呼び出されるメソッドの名前は、Span名の$method部分と等しくなければなりません。'
22 | examples: "exampleMethod"
23 | - ref: net.peer.ip
24 | - ref: net.peer.name
25 | - ref: net.peer.port
26 | required:
27 | conditional: "下記参照"
28 | - ref: net.transport
29 | required:
30 | conditional: "下記参照"
31 | constraints:
32 | - any_of:
33 | - net.peer.ip
34 | - net.peer.name
35 | - include: network
36 | - id: rpc.grpc
37 | prefix: rpc.grpc
38 | extends: rpc
39 | brief: 'gRPCの技術固有の属性'
40 | attributes:
41 | - id: status_code
42 | type:
43 | members:
44 | - id: OK
45 | value: 0
46 | - id: CANCELLED
47 | value: 1
48 | - id: UNKNOWN
49 | value: 2
50 | - id: INVALID_ARGUMENT
51 | value: 3
52 | - id: DEADLINE_EXCEEDED
53 | value: 4
54 | - id: NOT_FOUND
55 | value: 5
56 | - id: ALREADY_EXISTS
57 | value: 6
58 | - id: PERMISSION_DENIED
59 | value: 7
60 | - id: RESOURCE_EXHAUSTED
61 | value: 8
62 | - id: FAILED_PRECONDITION
63 | value: 9
64 | - id: ABORTED
65 | value: 10
66 | - id: OUT_OF_RANGE
67 | value: 11
68 | - id: UNIMPLEMENTED
69 | value: 12
70 | - id: INTERNAL
71 | value: 13
72 | - id: UNAVAILABLE
73 | value: 14
74 | - id: DATA_LOSS
75 | value: 15
76 | - id: UNAUTHENTICATED
77 | value: 16
78 | required: always
79 | brief: "gRPCリクエストの[numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md)です"
80 | examples: [0, 1, 16]
81 |
--------------------------------------------------------------------------------
/specification/semantic_conventions/version.properties:
--------------------------------------------------------------------------------
1 | version=1
2 |
--------------------------------------------------------------------------------
/specification/specification/common/common.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # 共通な仕様のコンセプト
6 |
7 | **Status**: [Stable, Feature-freeze](../document-status.md)
8 |
9 |
10 |
11 | 目次
12 |
13 |
14 |
17 |
18 | - [属性](#属性)
19 |
20 |
21 |
22 |
25 |
26 | ## 属性
27 |
28 |
31 |
32 | 属性は、0個以上のキーと値のペアのリストです。`アトリビュート`は以下のプロパティを持たなければなりません(MUST)。
33 |
34 |
42 |
43 | - 属性のキーは、非`null`かつ非空の文字列でなければなりません(MUST)。
44 | - 属性の値は、下のいずれかの値です:
45 | - プリミティブタイプ:string、boolean、倍精度浮動小数点(IEEE 754-1985)、符号付き64ビット整数
46 | - プリミティブ型の値の配列。配列内はすべて同じ型でなければならない(MUST)。つまり、異なるタイプの値を含んではならない(MUST NOT)。配列値をネイティブにサポートしていないプロトコルでは、そのような値はJSON文字列として表現されるべきです(SHOULD)。
47 |
48 |
53 |
54 | ゼロの数値、空の文字列、または空の配列を表現する属性値は、意味があるとみなされ、保存されてProcessorやExporterに渡されなければなりません(MUST)。
55 |
56 |
60 |
61 | `null`の属性値は有効ではなく、`null`の値を設定しようとするのは未定義の動作です。
62 |
63 |
75 |
76 | 配列の中に `null` 値を入れてはいけません(SHOULD NOT)。しかし、`null` 値が受け入れられないことを確認するのが不可能な場合 (たとえば、コンパイル時に適切な型チェックを行わない言語の場合)、配列内の `null` 値はそのまま保存されなければなりません (つまり、`null` としてSpanProcessorやExporterに渡されます)。Exporterが `null` 値のエクスポートをサポートしていない場合には、それらの値を 0 や `false` 、あるいは空の文字列で置き換えてもかまいません(MAY)。これは、インデックスが同期している2つの配列として表現されるマップ/辞書構造に必要です(例えば、2つの属性 `header_keys` と `header_values` があり、どちらもマッピング `header_keys[i] -> header_values[i]` を表す文字列の配列を含んでいる場合)。
77 |
78 |
81 |
82 | 命名のガイドラインは、[属性とラベルの命名](attribute-and-label-naming.md)を参照してください。
83 |
84 |
--------------------------------------------------------------------------------
/specification/specification/compatibility/openmetrics.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenMetrics 互換性
6 |
7 |
10 |
11 | **Status**: [Experimental](../document-status.md).
12 |
13 |
19 |
20 | OpenTelemetry metricsは、[OpenMetrics](https://openmetrics.io/)仕様との互換性を提供することを目的としています。互換性の拡張と要件については、[Prometheus Working Group](https://github.com/open-telemetry/wg-prometheus/blob/main/specification.md)に記載されています。
21 |
--------------------------------------------------------------------------------
/specification/specification/context/context.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # Context
6 |
7 |
10 |
11 | **Status**: [Stable, Feature-freeze](../document-status.md).
12 |
13 |
14 | 目次
15 |
16 |
26 |
27 | - [概要](#概要)
28 | - [キーの作成](#キーの作成)
29 | - [値の取得](#値の取得)
30 | - [値の設定](#値の設定)
31 | - [任意のグローバルな操作](#任意のグローバルな操作)
32 | - [現在のContextを取得](#現在のContextを取得)
33 | - [Contextのアタッチ](#Contextのアタッチ)
34 | - [Contextのデタッチ](#Contextのデタッチ)
35 |
36 |
37 |
38 |
39 |
42 |
43 | ## 概要
44 |
45 |
51 |
52 | `Context`は、APIの境界を越えて、論理的に関連付けられた実行ユニット間で、実行スコープ付きの値を伝達する伝搬メカニズムです。横断的な関心事は、同じ共有された `Context` オブジェクトを使用してプロセス内のデータにアクセスします。
53 |
54 |
59 |
60 | `Context` は不変でなければなりません(MUST)し、Contextへの書き込み操作では、元の値と指定された値が更新された新しい `Context` が作成されなければなりません (MUST)。
61 |
62 |
69 |
70 | 言語は、広く使われている単一の `Context` 実装があれば、それを使うことが期待されます。極めて明確な既存のオプションが利用できない場合には、OpenTelemetryは独自の`Context`実装を提供しなければなりません(MUST)。言語によっては、その使用方法は明示的なものにも暗黙的なものにもなる場合があります。
71 |
72 |
79 |
80 | `Context` を暗黙的に使用する言語で計装を実装するユーザは、`Context` API を直接使用することはお勧めできません。そのような場合には、指定した `Context` に対してTrace エントリやBaggageエントリを設定するなどの操作を行うために、代わりに横断的な関心事のAPI を使用して `Context` を操作することになります。
81 |
82 |
86 |
87 | `Context`には、以下のような操作が想定されており、それぞれの言語で違いがあります:
88 |
89 |
92 |
93 | ## キーの作成
94 |
95 |
101 |
102 | キーは、横断的な関心事がローカルな状態へのアクセスを制御するために使用されます。キーは一意であるため、同じContextを使用する他のライブラリが誤って同じキーを使用することはありません。関係者は、自分のキーへの直接のパブリックアクセスを提供するのではなく、APIを介してデータアクセスを仲介することが推奨されます。
103 |
104 |
107 |
108 | このAPIは、以下のパラメータを受け入れなければなりません(MUST)。
109 |
110 |
113 |
114 | - キーの名前。キー名はデバッグのために存在するもので、キーを一意に識別するものではありません。同じ名前で `CreateKey` を複数回呼び出しても、言語上の制約がない限り、同じ値を返すべきではありません(SHOULD NOT)。言語によって、期待される型の制限が異なる場合があるので、このパラメータは実装上の詳細にとどまります。
115 |
116 |
119 |
120 | このAPIは、新しく作成されたキーを表す不透明なオブジェクトを返さなければなりません(MUST)。
121 |
122 |
125 |
126 | ## 値の取得
127 |
128 |
132 |
133 | 横断的な関心事は、`Context`で表される現在の実行状態に保存されている、自分のローカルな状態にアクセスすることができます。
134 |
135 |
138 |
139 | このAPIは、以下のパラメータを受け入れなければなりません(MUST)。
140 |
141 |
145 |
146 | - `Context`
147 | - キー
148 |
149 |
152 |
153 | このAPI は、指定されたキーの `Context` 内の値を返さなければなりません (MUST)。
154 |
155 |
158 |
159 | ## 値の設定
160 |
161 |
165 |
166 | 横断的な関心事は、`Context`で表される現在の実行状態に、自分のローカルな状態を設定できます。
167 |
168 |
171 |
172 | このAPIは、以下のパラメータを受け入れなければなりません(MUST):
173 |
174 |
179 |
180 | - `Context`
181 | - キー
182 | - 設定する値
183 |
184 |
187 |
188 | このAPI は、新しい値を含む新しい `Context` を返さなければなりません。
189 |
190 |
193 |
194 | ## 任意のグローバルな操作
195 |
196 |
202 |
203 | これらの操作は、`Context` を暗黙のうちに使用する言語によってのみ実装されることが期待されており、したがって任意です。これらの操作は、SDKコンポーネントやOpenTelemetry 計装ライブラリによる自動スコープ切り替えの実装や、高レベルAPIの定義にのみ使用されるべき(SHOULD)です。
204 |
205 |
208 |
209 | ### 現在のContextを取得
210 |
211 |
212 |
215 |
216 | このAPIは、呼び出し元の現在の実行ユニットに関連する`Context`を返さなければなりません(MUST)。
217 |
218 |
221 |
222 | ### Contextのアタッチ
223 |
224 |
227 |
228 | 呼び出し元の現在の実行ユニットに `Context` を関連付けます。
229 |
230 |
233 |
234 | このAPIは、以下のパラメータを受け入れなければなりません(MUST)。
235 |
236 |
239 |
240 | - `Context`
241 |
242 |
246 |
247 | このAPI は、以前の `Context` を復元するための `Token` として使用可能な値を返さなければなりません (MUST)。
248 |
249 |
253 |
254 | 注意点として、この操作を行う際には、必ず[Contextのデタッチ](#Contextのデタッチ)を呼び出す必要があります。
255 |
256 |
259 |
260 | ### Contextのデタッチ
261 |
262 |
266 |
267 | 呼び出し元の現在の実行ユニットに関連付けられた `Context` を、指定された `Context` をアタッチする前の値にリセットします。
268 |
269 |
277 |
278 | この操作は、正しい `Context` が呼び出し元の現在の実行ユニットに関連付けられていることを確認するのに役立つことを目的としています。ユーザーはこの操作を頼りに、間違った呼び出し順序、つまり現在のインスタンスではない `Context` を切り離そうとしているかを調べられます。この場合、この操作は、エラーをログに記録したり、エラー値を返したりして、呼び出し順序が間違っていることをユーザーに警告するシグナルを発することができます。
279 |
280 |
283 |
284 | このAPIは、以下のパラメータを受け入れなければなりません(MUST):
285 |
286 |
289 |
290 | - 以前に `Context` をアタッチした際に返された `Token`
291 |
292 |
296 |
297 | このAPI は、操作が成功したかどうかを確認するために使用する値を返してもかまいません(MAY)。
298 |
--------------------------------------------------------------------------------
/specification/specification/document-status.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # 文書ステータスの定義
6 |
7 |
13 |
14 | 仕様書(ファイル)は、"ステータス"を明示的に定義することができます。この場合、"ステータス"は個々の文書にのみ適用され、仕様書全体や他の文書には適用されません。以下の表では、ステータスの意味を説明します。
15 |
16 |
19 |
20 | ## ライフサイクル ステータス
21 |
22 |
25 |
26 | サポート保証と許可された変更は、ドキュメントのライフサイクルによって管理されています。
27 |
28 |
36 |
37 | |ステータス |説明|
38 | |-----------------------|-----------|
39 | |明示的な"ステータス"なし|Experimentalと同じ|
40 | |Experimental |破壊的な変更が許可されている|
41 | |Stable |破壊的な変更はできない。詳細は [安定保証](versioning-and-stability.md#stable) を参照してください|
42 | |Deprecated |編集上の変更を除き、変更はできない|
43 |
44 |
47 |
48 | ## フィーチャーフリーズ
49 |
50 |
53 |
54 | 上記のステータスに加えて、文書には `Feature-freeze` というマークが付けられていることがあります。これらの文書は、技術委員会が仕様の他の分野に集中する時間を確保するため、現在は新しい機能要求を受け付けていない、ということを示します。編集上の変更はまだ受け付けています。既存機能の本番時に起きる問題に対処する変更は引き続き受け付けられています。
55 |
56 |
59 |
60 | フィーチャーフリーズはライフサイクルの状態とは別物です。ライフサイクルは文書のサポート要件を表し、フィーチャフリーズは仕様コミュニティの現在取り組んでいる箇所を示すだけです。フィーチャーフリーズラベルは、どのライフサイクル段階でも文書に適用することができます。定義により、deprecatedの文書には、フィーチャフリーズが適用されます。
61 |
62 |
65 |
66 | ## 混合 (`Mixed`)
67 |
68 |
71 |
72 | いくつかの文書には、異なるステータスを持つ個別のセクションがあります。これらの文書は、わかりやすくするために、上部に `Mixed` というステータスでマークされています。
73 |
--------------------------------------------------------------------------------
/specification/specification/error-handling.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenTelemetryでのエラー処理
6 |
7 |
12 |
13 | OpenTelemetryは、ユーザーがアプリケーションコードを監視するのに役立つテレメトリデータを生成します。ほとんどの場合、ライブラリが実行する作業は、アプリケーション・ビジネス・ロジックの観点からは本質的なものではありません。ユーザーは、ライブラリが計測されたアプリケーションの動作を大幅に変更するよりも、テレメトリデータを失うことを好むと想定しています。
14 |
15 |
20 |
21 | OpenTelemetry は、プラットフォームの拡張メカニズムを介して有効にすることも、実行時に動的にロードすることもできます。これにより、エンドユーザにとってはライブラリの使用が目立たなくなり、アプリケーション開発者の制御外になることさえあります。このため、エラー処理に関していくつかのユニークな要件があります。
22 |
23 |
26 |
27 | ## エラー処理の基本原理
28 |
29 |
32 |
33 | OpenTelemetry の実装は、実行時に未処理の例外を投げてはなりません(MUST NOT)。
34 |
35 |
43 |
44 | 1. APIメソッドは、エンドユーザーが誤って使用した場合に、処理されない例外を投げてはなりません(MUST NOT)。
45 | APIとSDKは、欠落した、または無効な引数に対する安全なデフォルトを提供すべきです(SHOULD)。
46 | 例えば、`Span` の構築時にSpan名の引数に `null` を渡した場合、`empty` のような名前を使用することができます。
47 | 2. API または SDK は、初期化時にアプリケーションを高速で失敗(_fail fast_)させ、アプリケーションを失敗させる可能性があります(例:ユーザー設定や環境が悪いためなど。しかし、アプリケーションが実行時に後で失敗する原因になってはなりません(MUST NOT))
48 | 3. SDK は、独自の操作でエラーが発生した場合、処理されない例外をスローしてはなりません(MUST NOT)。
49 | 例えば、エクスポーターは、テレメトリデータを送信するエンドポイントに到達できない場合に例外をスローしてはなりません。
50 |
51 |
54 |
55 | ## ガイダンス
56 |
57 |
71 |
72 | 1. 外部コールバックを受け入れるAPIメソッドは、すべてのエラーを処理しなければなりません(MUST)。
73 | 2. バックグラウンドタスク(スレッド、非同期タスク、spawnされたプロセスなど)は、例外がエンドユーザーアプリケーションに影響を与えないように、グローバルエラーハンドラのコンテキストで実行されなければなりません。
74 | 3. 長時間実行中のバックグラウンドタスクは、内部エラーに応答して永続的な失敗を起こしてはいけません。
75 | 一般的に、内部例外は例外の原因となったリクエストの実行コンテキストにのみ影響を与えるべきです。
76 | 4. 内部エラー処理は言語固有の規約に従うべきです。
77 | 一般的に、開発者はエラーハンドラの範囲を最小限にし、予想される例外のために特別な処理を追加すべきです。
78 | 5. 外部のコールバックやオーバーライド可能なインタフェースに注意してください。スローすることを期待してください。
79 | 6. APIやSDKのユーザーが明示的に提供していないメソッドをコールバックとして呼び出すことに注意してください。
80 | SDKがユーザオブジェクト上で呼び出すことにしたメソッド `ToString` は、実装が悪いとスタックオーバーフローを起こす可能性があります。
81 | アプリケーションがこのメソッドを呼び出さないことはよくあることで、この実装の悪さがアプリケーションのオーナーに見つかることはありません。
82 | 7. APIコールが`非null`値であると予想される値を返す場合(処理ロジックに誤りがあった場合)、SDKは事前に(_ideally_)割り当てられていてすぐに利用可能な "no-op"またはその他の "default"オブジェクトを返さなければなりません(MUST)。
83 | これにより、APIコールサイトが `null` オブジェクトのメソッドやプロパティにアクセスしようとしてもクラッシュすることはありません。
84 |
85 |
88 |
89 | ## エラー処理とパフォーマンス
90 |
91 |
95 |
96 | エラー処理と広範な入力の検証は、特にコンパイル時に入力オブジェクトの型が保証されていない動的な言語では、パフォーマンスの低下を引き起こす可能性があります。ランタイムの型チェックはパフォーマンスに影響を与え、エラーが発生しやすく、最善の努力にもかかわらず例外が発生する可能性があります。
97 |
98 |
102 |
103 | 例外がユーザーコードに漏れないことを保証するグローバル例外処理ロジックを持つことが推奨されます。そして、SDKのパフォーマンス、より良いエラー時の動作とSDKエラーのトラブルシューティング方法を提供する型チェックの充実度のトレードオフについて、合理的なバランスを取ってください。
104 |
105 |
108 |
109 | ## 自己診断
110 |
111 |
114 |
115 | すべての OpenTelemetry ライブラリ(API、SDK、エクスポート、計装など)は、自己診断メトリック、Span、およびその他のテレメトリを公開することが推奨されています。
116 |
117 |
121 |
122 | このようなテレメトリの良い例の一つは、エクスポータがテレメトリのアップロードにどれくらいの時間を費やしているかを示す`Span` エクスポータです。もう一つの例は、`SpanProcessor`によって公開されるメトリックで、アップロードされるテレメトリデータの現在のキューサイズを公開しています。
123 |
124 |
128 |
129 | ユーザーに公開されているエラーをライブラリが抑制するときはいつでも、ライブラリは言語固有の規約を使用してエラーをログに記録するべきです(SHOULD)。SDKは、エンドユーザーがアプリケーションコードとは別に自己診断を処理できるように、コールバックを公開しても構いません(MAY)。
130 |
131 |
134 |
135 | ## エラーハンドラの設定
136 |
137 |
143 |
144 | SDK の実装では、関連するエラーに対するライブラリのデフォルトのエラー処理動作をエンドユーザーが変更できるようにしなければなりません(MUST)。アプリケーション開発者は、APIの無効な使用や不正な設定をキャッチするために、ステージング環境で厳格なエラー処理を実行したいと思うかもしれません。この方法でカスタムエラーハンドラを設定することは、上記で概説した基本的なエラー処理の原則に対する唯一の例外であることに注意してください。エンドユーザーがカスタムエラーハンドラを設定または登録するメカニズムは、言語固有の規約に従うべきです。
145 |
146 |
149 |
150 | ### 例
151 |
152 |
157 |
158 | これらは、エンドユーザーがカスタム・エラー・ハンドラを登録する方法の例です。例は説明のみを目的としています。OpenTelemetryクライアントの作成者は、そのデザインが上記の要件に合致していれば、これらの例から自由に逸脱できます。
159 |
160 |
161 | #### Go
162 |
163 | ```go
164 | // 基本的なエラー処理のインターフェース
165 | type ErrorHandler interface {
166 | Handle(err error)
167 | }
168 |
169 | func Handler() ErrorHandler
170 | func SetHandler(handler ErrorHandler)
171 | ```
172 |
173 | ```go
174 | // カスタムエラーハンドラーを登録
175 | type IgnoreExporterErrorsHandler struct{}
176 |
177 | func (IgnoreExporterErrorsHandler) Handle(err error) {
178 | switch err.(type) {
179 | case *SpanExporterError:
180 | default:
181 | fmt.Println(err)
182 | }
183 | }
184 |
185 | func main() {
186 | // 他の設定…
187 | opentelemetrysdk.SetHandler(IgnoreExporterErrorsHandler{})
188 | }
189 |
190 | ```
191 |
192 | ##### Java
193 |
194 |
198 |
199 | OpenTelemetry Javaは、[java.util.logging](https://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html)を使用して、エラーを含むすべてのログを出力し、処理します。カスタムハンドラやフィルタは、コード内でも、Javaのロギング設定ファイルを使っても登録することができます。
200 |
201 |
202 | ```properties
203 | ## すべてのエラーログを出力しない
204 | io.opentelemetry.level = OFF
205 | ```
206 |
207 | ```java
208 | // エクスポーターから来たエラーをログ出力しないようにするカスタムフィルターを作成
209 | public class IgnoreExportErrorsFilter implements Filter {
210 |
211 | public boolean isLoggable(LogRecord record) {
212 | return !record.getMessage().contains("Exception thrown by the export");
213 | }
214 | }
215 | ```
216 |
217 | ```properties
218 | ## カスタムフィルターをBatchSpanProcessorに登録
219 | io.opentelemetry.sdk.trace.export.BatchSpanProcessor = io.opentelemetry.extensions.logging.IgnoreExportErrorsFilter
220 | ```
--------------------------------------------------------------------------------
/specification/specification/library-layout.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenTelemetryプロジェクトのパッケージレイアウト
6 |
7 |
12 |
13 | このドキュメントは、OpenTelemetryプロジェクトの基本的なレイアウトの「ルック&フィール」を文書化したものです。このパッケージレイアウトは意図的に一般的なものになっており、言語固有のパッケージ構造を押し付けようとはしていません。
14 |
15 |
18 |
19 | ## API パッケージ
20 |
21 |
24 |
25 | ここでは、OpenTelemetry APIパッケージの一般的なパッケージ構造を提案します。
26 |
27 |
30 |
31 | 典型的なトップレベルディレクトリのレイアウト:
32 |
33 |
47 |
48 | ```
49 | api
50 | ├── context
51 | │ └── propagation
52 | ├── metrics
53 | ├── trace
54 | │ └── propagation
55 | ├── baggage
56 | │ └── propagation
57 | ├── internal
58 | └── logs
59 | ```
60 |
61 |
64 |
65 | > 小文字、CamelCase、Snake Case(snake_caseとしてスタイリング)の名前の使用は、言語によって異なります。
66 |
67 |
70 |
71 | ### `/context`
72 |
73 |
76 |
77 | このディレクトリでは、プロセス中のコンテキスト伝播を提供するAPIについて説明します。
78 |
79 |
82 |
83 | ### [/metrics](./metrics/api.md)
84 |
85 |
88 |
89 | このディレクトリでは、アプリケーション・メトリックを記録するために使用できるMetrics APIについて説明しています。
90 |
91 |
94 |
95 | ### [/baggage](baggage/api.md)
96 |
97 |
101 |
102 | このディレクトリでは、コンテキストプロパゲーションやMetrics関連のラベリングを管理するために使用できるBaggage APIについて説明しています。
103 |
104 |
107 |
108 | ### [/trace](trace/api.md)
109 |
110 |
113 |
114 | このAPIは、いくつかの主要なクラスで構成されています。
115 |
116 |
121 |
122 | - すべての操作には `Tracer` が使われます。[Tracer](trace/api.md#tracer)のセクションを参照してください。
123 | - `Span` は、現在のオペレーション実行に関する情報を格納する可変(mutable)オブジェクトです。[Span](trace/api.md#span)のセクションを参照してください。
124 |
125 |
128 |
129 | ### `/internal` (_任意_)
130 |
131 |
136 |
137 | ユーザーに公開されるべきではないライブラリのコンポーネントや実装。言語によって内部コンポーネントの慣習的なレイアウトが決まっている場合は、その言語の慣習的なスタイルに従ってください。
138 |
139 |
142 |
143 | ### `/logs` (_将来的に_)
144 |
145 |
148 |
149 | > TODO: ログ操作
150 |
151 |
154 |
155 | ## SDK パッケージ
156 |
157 |
160 |
161 | ここでは、OpenTelemetry SDKパッケージの一般的なパッケージ構造を提案します。
162 |
163 |
166 |
167 | 典型的なトップレベルディレクトリのレイアウト:
168 |
169 |
181 |
182 | ```
183 | sdk
184 | ├── context
185 | ├── metrics
186 | ├── resource
187 | ├── trace
188 | ├── baggage
189 | ├── internal
190 | └── logs
191 | ```
192 |
193 |
196 |
197 | > 小文字、CamelCase、Snake Case(snake_caseとしてスタイリング)の名前の使用は、言語によって異なります。
198 |
199 |
202 |
203 | ### `/sdk/context`
204 |
205 |
208 |
209 | api/contextのSDK実装について説明しているディレクトリです。
210 |
211 |
214 |
215 | ### `/sdk/metrics`
216 |
217 |
220 |
221 | api/metricsのSDK実装について説明しているディレクトリです。
222 |
223 |
226 |
227 | ### [/sdk/resource](resource/sdk.md)
228 |
229 |
235 |
236 | リソースディレクトリでは主に、統計やTraceが記録されるエンティティに関する情報をキャプチャする[リソース](overview.md#resources)というタイプが定義されています。例えば、Kubernetesコンテナが公開するメトリックは、クラスタ、名前空間、ポッド、コンテナ名を指定するリソースにリンクできます。
237 |
238 |
241 |
242 | ### `/sdk/baggage`
243 |
244 |
247 |
248 | ### [/sdk/trace](trace/sdk.md)
249 |
250 |
253 |
254 | api/traceのSDK実装について説明しているディレクトリです。
255 |
256 |
259 |
260 | ### `/sdk/internal` (_任意_)
261 |
262 |
267 |
268 | ユーザーに公開されるべきではないライブラリのコンポーネントや実装。言語によって内部コンポーネントの慣習的レイアウトが決まっている場合は、その言語の慣習的スタイルに従ってください。
269 |
270 |
273 |
274 | ### `/sdk/logs` (_将来的に_)
275 |
276 |
279 |
280 | > TODO: ログ操作
281 |
282 |
--------------------------------------------------------------------------------
/specification/specification/logs/img/app-to-file-logs-fb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/logs/img/app-to-file-logs-fb.png
--------------------------------------------------------------------------------
/specification/specification/logs/img/app-to-file-logs-otelcol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/logs/img/app-to-file-logs-otelcol.png
--------------------------------------------------------------------------------
/specification/specification/logs/img/app-to-otelcol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/logs/img/app-to-otelcol.png
--------------------------------------------------------------------------------
/specification/specification/logs/img/application-api-sdk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/logs/img/application-api-sdk.png
--------------------------------------------------------------------------------
/specification/specification/logs/img/separate-collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/logs/img/separate-collection.png
--------------------------------------------------------------------------------
/specification/specification/logs/img/unified-collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/logs/img/unified-collection.png
--------------------------------------------------------------------------------
/specification/specification/metrics/README.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenTelemetry Metrics
6 |
7 | **Status**: [Experimental](../document-status.md)
8 |
9 | **Owner:**
10 |
11 | * [Reiley Yang](https://github.com/reyang)
12 |
13 | **Domain Experts:**
14 |
15 | * [Bogdan Brutu](https://github.com/bogdandrutu)
16 | * [Josh Suereth](https://github.com/jsuereth)
17 | * [Joshua MacDonald](https://github.com/jmacd)
18 |
19 |
25 |
26 | 注意:この仕様は大きく変更される可能性があります。言語クライアントのメンテナに負担をかけないように、[OTEP](https://github.com/open-telemetry/oteps#opentelemetry-enhancement-proposal-otep)で明示的に伝えられない限り、OpenTelemetryのクライアントが実装を開始することは推奨しません。
27 |
28 |
29 |
30 | Table of Contents
31 |
32 |
33 |
45 |
46 | * [概要](#概要)
47 | * [デザインゴール](#デザインゴール)
48 | * [コンセプト](#コンセプト)
49 | * [API](#api)
50 | * [SDK](#sdk)
51 | * [仕様](#仕様)
52 | * [Metrics API](./api.md)
53 | * Metrics SDK (未定義)
54 | * [Metrics データモデルとプロトコル](datamodel.md)
55 | * [セマンティック規約](./semantic_conventions/README.md)
56 |
57 |
58 |
59 |
62 |
63 | ## 概要
64 |
65 |
68 |
69 | ### デザインゴール
70 |
71 |
75 |
76 | 現在、多くの確立されたメトリック・ソリューションが存在することを考えると、OpenTelemetryのメトリックの取り組みの目標を理解することは重要です。
77 |
78 |
86 |
87 | * **メトリックを他のシグナルに結びつけることができること**。例えば、メトリックとトレースはExamplarを介して相関させることができ、メトリックのディメンションは[Baggage](../baggage/api.md)や[Context](../context/context.md)を介して情報を追加させることができます。さらに、[Resource](../resource/sdk.md)は、[logs](../overview.md#log-signal)/[metrics](../overview.md#metric-signal)/[traces](../overview.md#tracing-signal)に一貫した方法で適用することができます。
88 |
89 |
95 |
96 | * **[OpenCensus](https://opencensus.io/)のユーザーがOpenTelemetryに移行するための道筋を提供すること**。これはOpenTelemetryの当初の目標であった、OpenCensusとOpenTracingの収束です。私たちは、APIの1-1マッピングを行うのではなく、セマンティクスと機能を提供することに注力します。
97 |
98 |
107 |
108 | * **既存のメトリック計測プロトコルや標準規格との連携**。最低限の目標は、[Prometheus](https://prometheus.io/)と[StatsD](https://github.com/statsd/statsd)を完全にサポートすることです。ユーザーは、OpenTelemetryクライアントと[Collector](../overview.md#collector)を使ってメトリックを収集し、エクスポートすることができ、ネイティブクライアントと同じ機能を実現することができます。
109 |
110 |
113 |
114 | ### コンセプト
115 |
116 |
119 |
120 | #### API
121 |
122 |
125 |
126 | **OpenTelemetry Metrics API**(以下、「API」)は、2つの目的を持っています。
127 |
128 |
133 |
134 | * 生の測定値を効率的かつ同時に取得する。
135 | * 計測器と[SDK](#sdk)を切り離し、アプリケーションでSDKを指定/インクルードすることが可能。
136 |
137 |
144 |
145 | アプリケーションに[SDK](#sdk)が明示的に含まれていない/有効になっていない場合、テレメトリデータは収集されません。詳細については、全体的な[OpenTelemetry API](../overview.md#api)のコンセプトと、[APIと最小実装](../library-guidelines.md#APIと最小実装)を参照してください。
146 |
147 |
150 |
151 | #### SDK
152 |
153 |
158 |
159 | **OpenTelemetry Metrics SDK**(以下、SDK)は、APIを実装し、設定、集約、プロセッサー、エクスポーターなどの機能と拡張性を提供します。
160 |
161 |
167 |
168 | OpenTelemetryでは、実行時に異なるSDKを設定できるように、[SDKからAPIの分離](../library-guidelines.md#requirements)を要求しています。詳細については、全体的な[OpenTelemetry SDK](../overview.md#sdk)のコンセプト概念をご参照ください。
169 |
170 |
173 |
174 | #### プログラミングモデル
175 |
176 | Processor +--> Aggregator +--> Exporter +--> Another process
183 | | Meter B | | | | | | |
184 | | Instrument Z | +-----------+ +------------+ +----------+
185 | | ... |
186 | | ... |
187 | +------------------+
188 | ```
189 | -->
190 |
191 | ```text
192 | +------------------+
193 | | MeterProvider |
194 | | Meter A | +-----------+ +------------+ +----------+
195 | | Instrument X | Measurements... | | | | | |
196 | | Instrument Y +-----------------> Processor +--> Aggregator +--> Exporter +--> Another process
197 | | Meter B | | | | | | |
198 | | Instrument Z | +-----------+ +------------+ +----------+
199 | | ... |
200 | | ... |
201 | +------------------+
202 | ```
203 |
204 |
207 |
208 | ## 仕様
209 |
210 |
216 |
217 | * [Metrics API](./api.md)
218 | * Metrics SDK (未定義)
219 | * [Metrics データモデルとプロトコル](datamodel.md)
220 | * [セマンティック規約](./semantic_conventions/README.md)
221 |
222 |
225 |
226 | ## 参照
227 |
228 |
231 |
232 | * メトリックAPI/SDKプロトタイピングのためのシナリオ ([OTEP 146](https://github.com/open-telemetry/oteps/blob/main/text/metrics/0146-metrics-prototype-scenarios.md))
233 |
234 |
--------------------------------------------------------------------------------
/specification/specification/metrics/img/accumulator-detail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/metrics/img/accumulator-detail.png
--------------------------------------------------------------------------------
/specification/specification/metrics/img/metrics-sdk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/metrics/img/metrics-sdk.png
--------------------------------------------------------------------------------
/specification/specification/metrics/img/model-cumulative-sum.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/metrics/img/model-cumulative-sum.png
--------------------------------------------------------------------------------
/specification/specification/metrics/img/model-delta-sum.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/metrics/img/model-delta-sum.png
--------------------------------------------------------------------------------
/specification/specification/metrics/img/model-event-layer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/metrics/img/model-event-layer.png
--------------------------------------------------------------------------------
/specification/specification/metrics/img/model-layers-stream.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/metrics/img/model-layers-stream.png
--------------------------------------------------------------------------------
/specification/specification/metrics/img/model-layers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/metrics/img/model-layers.png
--------------------------------------------------------------------------------
/specification/specification/metrics/semantic_conventions/openmetrics-guidelines.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenMetricsとの相互運用のためのガイダンス
6 |
7 | **Status**: [Experimental](../../document-status.md)
8 |
9 |
13 |
14 | **このドキュメントは現在進行中であり、OpenMetricsの仕様がさらに発展するにつれて更新される予定です。
15 |
16 |
19 |
20 | ## 概要
21 |
22 |
26 |
27 | OpenTelemetryは、2つの方法でOpenMetricsまたはPrometheusエクスポートフォーマットを使用するシステムと相互運用する必要があります。
28 |
29 |
36 |
37 | * OpenTelemetryは、OpenMetrics形式で表現されたメトリックを受け入れて伝播させ、下流のシステム(OpenTelemetry Collector、zPages、ベンダーのバックエンドなど)にエクスポートする必要があるかもしれません。
38 | * OpenTelemetryでは、OpenTelemetryで生成したメトリックをOpenMetricsの公開フォーマットで公開する必要があるかもしれません。
39 |
40 |
43 |
44 | ### OpenMetrics から OpenTelemetry へ
45 |
46 |
51 |
52 | OpenTelemetryコレクターは、Prometheusレシーバーを実装しており、OpenMetricsエクスポートフォーマットのメトリックを読み取ります。詳細については、[Prometheus Receiver Design Document](https://github.com/open-telemetry/opentelemetry-collector/blob/master/receiver/prometheusreceiver/DESIGN.md)を参照してください。
53 |
54 |
57 |
58 | ### OpenTelemetry から OpenMetrics へ
59 |
60 |
63 |
64 | #### Name と Label キー
65 |
66 |
71 |
72 | OpenTelemetryのメトリックをOpenMetricsフォーマットで公開することは、主にメトリックとラベルの命名に関して問題があります。OpenMetricsの公開フォーマットでは、OpenTelemetryで許可されているいくつかの文字が明示的に禁止されています。
73 |
74 |
79 |
80 | OpenTelemetryのメトリックイベントをOpenMetricsの公開フォーマットに変換する際には、nameフィールドおよびすべてのラベルキーを、文字または数字ではないすべての文字をアンダースコアに置き換えることでサニタイズしなければなりません(MUST)。
81 |
82 |
85 |
86 | 疑似コードの例:
87 |
88 |
94 |
95 | ```ruby
96 | def sanitize(name)
97 | return name.sub(/\W/, '_')
98 | ```
99 |
100 |
104 |
105 | Prometheusデータモデル・ドキュメントの[Metric名とラベル](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels)も参照してください。
106 |
107 |
112 |
113 | OpenMetricsでは、メトリック名が数字で始まることを認めていません。OpenTelemetryの[instrument naming requirements](../api.md#instrument-naming-requirements)でも、Metric instrumentsの最初の文字が数字でないことを要求しています。
114 |
115 |
120 |
121 | 本仕様に準拠しないメトリックイベントがOpenTelemetryで生成された場合、結果として得られるOpenMetricsメトリックの名前の前にアンダースコアを付けても構いません(MAY)。
122 |
123 |
--------------------------------------------------------------------------------
/specification/specification/metrics/semantic_conventions/process-metrics.md:
--------------------------------------------------------------------------------
1 | # OSプロセスメトリックのセマンティック規約
2 |
3 | **Status**: [Experimental](../../document-status.md)
4 |
5 |
15 |
16 | この文書では、OpenTelemetryの一般的なOSプロセス・レベル・メトリックのInstrumentsとラベルについて説明しています。また、このドキュメントで明示的に定義されていないInstrumentsを作成する際には、[一般的なmetricセマンティック規約](README.md#general-metric-semantic-conventions)を考慮してください。OSプロセス・メトリックは、プログラムの実行時環境とは関係なく、OSから測定値を取得する必要があります。ランタイム環境メトリックについては、[ランタイム環境メトリックのセマンティック規約](runtime-environment-metrics.md)を参照してください。
17 |
18 |
19 |
20 |
21 |
22 |
23 | - [Metric Instruments](#metric-instruments)
24 |
25 |
26 |
27 | ## Metric Instruments
28 |
29 | TODO
30 |
--------------------------------------------------------------------------------
/specification/specification/metrics/semantic_conventions/rpc.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # 一般的なRPCの規約
6 |
7 | **Status**: [Experimental](../../document-status.md)
8 |
9 |
15 |
16 | このセクションで説明する規約は、RPC固有のものです。RPC操作が発生すると、その操作に関するメトリック・イベントが生成・報告され、その操作についての情報が提供されます。メトリック・イベントにRPCラベルを追加することで、きめ細かなフィルタリングが可能になります。
17 |
18 |
19 |
20 |
21 |
22 |
30 |
31 | - [Metric instruments](#metric-instruments)
32 | * [RPC Server](#rpc-server)
33 | * [RPC Client](#rpc-client)
34 | - [Labels](#labels)
35 | * [Service name](#service-name)
36 | - [gRPC規約](#grpc規約)
37 |
38 |
39 |
40 |
43 |
44 | ## Metric instruments
45 |
46 |
50 |
51 | RPC操作の記述には、以下のInstrumentsを使用しなければなりません(MUST)。これらは、指定されたタイプと単位でなければなりません(MUST)。
52 |
53 |
56 |
57 | *注:RPCサーバとクライアントのメトリックが分割され、クライアント/サーバの境界を越えた相関が可能になります。例えば、RPCメソッドのレイテンシーを並べて、クライアントが見ているレイテンシーの原因がサーバーにあるかどうかを判断できます。*
58 |
59 |
62 |
63 | ### RPC Server
64 |
65 |
68 |
69 | 以下は、RPCサーバーのInstrumentsの表です。
70 |
71 |
80 |
81 | | Name | Instrument | 単位 | 説明 | Status | Streaming |
82 | |----------------------------|---------------|--------------|-------------|--------|-----------|
83 | | `rpc.server.duration` | ValueRecorder | milliseconds | インバウンドRPCの継続期間 | Recommended | 該当なし。 ストリーミングRPCでは、この指標をバッチ開始からバッチ終了までとして記録することがありますが、実際には解釈が困難です |
84 | | `rpc.server.request.size` | ValueRecorder | bytes | RPCリクエストメッセージのサイズ(無圧縮) | Optional | ストリーミングバッチでメッセージごとに記録 |
85 | | `rpc.server.response.size` | ValueRecorder | bytes | RPCレスポンスメッセージのサイズ(無圧縮) | Optional | ストリーミングバッチで応答ごとに記録 |
86 | | `rpc.server.requests_per_rpc` | ValueRecorder | count | RPCごとに受信したメッセージの数。 ストリーミングを行わないRPCでは1とします。 | Optional | Required |
87 | | `rpc.server.responses_per_rpc` | ValueRecorder | count | RPCごとに送信したメッセージの数。 ストリーミングを行わないRPCでは1とします。 | Optional | Required |
88 |
89 |
92 |
93 | ### RPC Client
94 |
95 |
99 |
100 | 以下は、RPCクライアントのInstrumentsの表です。 これらは、ストリーミングRPCではなく、従来のRPCの使用に適用されます。
101 |
102 |
111 |
112 | | Name | Instrument | 単位 | 説明 | Status | Streaming |
113 | |----------------------------|---------------|--------------|-------------|--------|-----------|
114 | | `rpc.client.duration` | ValueRecorder | milliseconds | アウトバウンドRPCの継続時間 | Recommended | 該当なし。 ストリーミングRPCでは、この指標をバッチ開始からバッチ終了までとして記録することがありますが、実際には解釈が困難です |
115 | | `rpc.client.request.size` | ValueRecorder | bytes | RPCリクエストメッセージのサイズ(無圧縮) | Optional | ストリーミングバッチでメッセージごとに記録 |
116 | | `rpc.client.response.size` | ValueRecorder | bytes | RPCレスポンスメッセージのサイズ(無圧縮) | Optional | ストリーミングバッチで応答ごとに記録 |
117 | | `rpc.client.requests_per_rpc` | ValueRecorder | count | RPCごとに受信したメッセージの数。 ストリーミングを行わないRPCでは1とします。 | Optional | Required |
118 | | `rpc.client.responses_per_rpc` | ValueRecorder | count | RPCごとに送信したメッセージの数。 ストリーミングを行わないRPCでは1とします。 | Optional | Required |
119 |
120 |
123 |
124 | ## Labels
125 |
126 |
130 |
131 | 以下は、メトリックイベントに含めるべきラベルと、そのラベルをサーバー、クライアント、またはその両方に付けるべきかどうかの表です。
132 |
133 |
134 | | Attribute | Type | Description | Examples | Required |
135 | |---|---|---|---|---|
136 | | [`rpc.system`](../../trace/semantic_conventions/rpc.md) | string | リモーションシステムを識別する文字列 | `grpc`; `java_rmi`; `wcf` | Yes |
137 | | [`rpc.service`](../../trace/semantic_conventions/rpc.md) | string | 呼び出されるサービスのフルネーム(該当する場合は、パッケージ名も含む) | `myservice.EchoService` | いいえ、しかし推奨です |
138 | | [`rpc.method`](../../trace/semantic_conventions/rpc.md) | string | 呼び出されるメソッドの名前は、Span名の$method部分と等しくなければなりません。 | `exampleMethod` | いいえ、しかし推奨です |
139 | | [`net.peer.ip`](../../trace/semantic_conventions/span-general.md) | string | 相手のリモートアドレス(IPv4ではドット10進数、IPv6では[RFC5952](https://tools.ietf.org/html/rfc5952) | `127.0.0.1` | See below |
140 | | [`net.peer.name`](../../trace/semantic_conventions/span-general.md) | string | リモートのホスト名あるいは類似の文字列。下記注釈参照 | `example.com` | See below |
141 | | [`net.peer.port`](../../trace/semantic_conventions/span-general.md) | int | リモートのポート番号 | `80`; `8080`; `443` | 下記参照 |
142 | | [`net.transport`](../../trace/semantic_conventions/span-general.md) | string | Transport protocol used. 下記注釈参照。 | `ip_tcp` | 下記参照 |
143 |
144 | **Additional attribute requirements:** At least one of the following sets of attributes is required:
145 |
146 | * [`net.peer.ip`](../../trace/semantic_conventions/span-general.md)
147 | * [`net.peer.name`](../../trace/semantic_conventions/span-general.md)
148 |
149 |
150 |
155 |
156 | カーディナリティが高くなるのを避けるために、実装では、想定されるデプロイメントプロファイルに応じて、`net.peer.name`または`net.peer.ip`のうち、最も安定したものを選択する必要があります。 多くのクラウドアプリケーションでは、おそらく `net.peer.name` でしょう。これは、異なる `ip` を持つサーバーが再起動されても、名前を再利用できるからです。
157 |
158 |
163 |
164 | クライアントサイドメトリックでは、接続がIPベースでポートが利用可能な場合、`net.peer.port`が必須となります(クライアントが接続しているサーバーのポートが記述されます)。サーバー側のSpanでは、`net.peer.port`はオプションです(クライアントが接続しているポートが記述されています)。さらに、名前付きパイプバインディングのような非IP接続の場合は、[net.transport][]の設定が必要です。
165 |
166 |
169 |
170 | ### Service name
171 |
172 |
176 |
177 | RPCを受信して処理するサーバプロセスでは、`rpc.service`で提供されるサービス名は必ずしも[`service.name`][]リソース属性と一致する必要はありません。1つのプロセスが複数のRPCエンドポイントを公開することで、複数のRPCサービス名を持つことができます。デプロイメントの観点からは、リソース属性の `service.*` で表されるように、1つの `service.name` を持つ1つのデプロイされたサービスとして扱われます。
178 |
179 |
182 |
183 | [`service.name`]: ../../resource/semantic_conventions/README.md#service
184 |
185 |
188 |
189 | ## gRPC規約
190 |
191 |
194 |
195 | [gRPC][]によるリモート・プロシージャ・コールでは、追加の規約がこのセクションに記載されています。
196 |
197 |
200 |
201 | `rpc.system` には `"grpc"` を設定しなければなりません(MUST)。
202 |
203 |
206 |
207 | [gRPC]: https://grpc.io/
208 |
209 |
--------------------------------------------------------------------------------
/specification/specification/metrics/semantic_conventions/runtime-environment-metrics.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # 実行環境メトリックのセマンティック規約
6 |
7 | **Status**: [Experimental](../../document-status.md)
8 |
9 |
16 |
17 | このドキュメントには、OpenTelemetryにおけるランタイム環境レベルのメトリックのセマンティック規約が含まれています。また、ランタイム環境を計装する際には、[一般的なメトリック](README.md#general-metric-semantic-conventions)、[システム・メトリック](system-metric.md)、[OSプロセス・メトリック](process-metric.md)のセマンティック規約も考慮してください。
18 |
19 |
20 |
21 |
22 |
23 |
27 |
28 | - [Metric計装](#Metric計装)
29 | * [ランタイム環境固有のMetrics - `runtime.{environment}.`](#ランタイム環境固有のMetrics---runtimeenvironment)
30 |
31 |
32 |
33 |
36 |
37 | ## Metric計装
38 |
39 |
48 |
49 | ランタイム環境は、その用語、実装、および特定の指標に対する相対的な値が大きく異なります。例えば、GoとPythonはどちらもガベージコレクション言語ですが、GoランタイムとCPythonランタイムの間でヒープ使用量を直接比較することは意味がありません。このような理由から、本ドキュメントでは、標準的なトップレベルのランタイムメトリック機器を提案しません。追加の議論については[OTEP 108](https://github.com/open-telemetry/oteps/pull/108/files)を参照してください。
50 |
51 |
54 |
55 | ### ランタイム環境固有のMetrics - `runtime.{environment}.`
56 |
57 |
65 |
66 | 特定のランタイム環境に特化したメトリックは、プレフィックスとして `runtime.{environment}.` を付け、[一般的なMetricセマンティック規約](README.md#general-metric-semantic-conventions)に概説されているセマンティック規約に従います。ランタイム計装の作者は、メトリックの名前や値を解釈する際の曖昧さを避けるために、`{environment}`の選択に責任を負います。
67 |
68 |
75 |
76 | 例えば、プログラミング言語の中には、[多くの実装を持つPython](https://wiki.python.org/moin/PythonImplementations)のように、実装が大きく異なる複数の実行環境を持つものがあります。このような言語では、`runtime.cpython.`や`runtime.pypy.`のように、曖昧さを避けるために特定の`{environment}`接頭辞を使用することを検討してください。
77 |
78 |
82 |
83 | 例えば、pthreadとグリーンスレッドの実装など、あるランタイム環境の中でも別の次元を考慮する必要があります。
84 |
85 |
--------------------------------------------------------------------------------
/specification/specification/performance-benchmark.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenTelemetry APIのパフォーマンス・ベンチマーク
6 |
7 |
11 |
12 | このドキュメントでは、OpenTelemetry SDKのパフォーマンスをどのように測定・報告するかについて、一般的なパフォーマンスベンチマークのガイドラインを説明しています。
13 |
14 |
19 |
20 | このベンチマークの目的は、ターゲットプラットフォーム上で与えられたイベントのスループットに対するOpenTelemetry SDKの基本的なパフォーマンスオーバーヘッドを得るためのツールを提供することです。
21 |
22 |
25 |
26 | ## ベンチマークの設定
27 |
28 |
31 |
32 | ### Span設定
33 |
34 |
48 |
49 | - 親の `Span` や親の `SpanContext` は含まないこと。
50 | - デフォルトのSpanは[Kind](./trace/api.md#spankind)と[Status](./trace/api.md#set-status)とすること。
51 | - 属性 `service.name`, `service.version` と各属性に10文字の文字列値、属性 `service.instance.id` にはユニークなUUIDが設定されている [resource](overview.md#resources) に関連付けること。詳細は[Service](./resource/semantic_conventions/README.md#service)を参照してください。
52 | - 1 [attribute](./common/common.md#attributes)には、64ビットの符号付き整数値を指定すること。
53 | - 1 [event](./trace/api.md#add-events)には属性を含まないこと。
54 | - Samplerの`AlwaysOn`を有効にすること。
55 | - 各 `Span` は作成され、すぐに終了すること。
56 |
57 |
60 |
61 | ### Measurement 設定
62 |
63 |
68 |
69 | JITコンパイルのようなブートストラップコストを持つ言語では、測定の前に、同じ`Span`[設定](#span設定)の下で実行されるウォームアップフェーズを行うことが推奨されています。
70 |
71 |
74 |
75 | ## スループット測定
76 |
77 |
80 |
81 | ### Spanの作成
82 |
83 |
89 |
90 | 1秒でOTLP Exporterを使って作成・エクスポートできたSpanの数を、論理コアごとと全論理コアの平均数で表した数値。各Spanには10個の属性が含まれ、各属性には2つの20文字の文字列(1つは属性名、もう1つは値)を含めます。
91 |
92 |
95 |
96 | ## 計装コスト
97 |
98 |
101 |
102 | ### CPU利用率測定
103 |
104 |
116 |
117 | ユーザーによって指定された任意のSpan・スループット数、またはユーザーが数を入力しない場合はデフォルトとして毎秒10,000のSpanを使用して、OTLP Exporterと共にデフォルトで構成されたシンプルなSpan・プロセッサーとバッチ・Span・プロセッサーの両方を備えたSDKのCPU使用率を測定し、報告します。ベンチマークは、エクスポートするターゲット上でListenするout-of-processのOTLPレシーバーを作成するか、out-of-processで実行され、直ちに成功ステータスで応答し、データをドロップする既存のOTLPエクスポーターを採用する必要があります。コレクタは、測定に大きなCPUオーバーヘッドを加えるべきではありません。ベンチマークにはユーザーの処理ロジックが含まれていないため、ベンチマークプログラムの総CPU消費量は、SDKのCPU消費量の近似値とみなすことができます。
118 |
119 |
123 |
124 | 1回のテストの繰り返しにかかる総実行時間は、少なくとも15秒であることが推奨されます。また、平均およびピーク時のCPU使用率を報告する必要があります。
125 |
126 |
129 |
130 | ### メモリ利用率測定
131 |
132 |
136 |
137 | 上記の「CPU使用率」と同じシナリオで、15秒間の動的メモリ消費量(ヒープなど)を測定します。
138 |
139 |
142 |
143 | ## 報告
144 |
145 |
148 |
149 | ### 報告形式
150 |
151 |
155 |
156 | 上記の数値はすべて複数回(最低でも10回を推奨)測定し、報告する必要があります。
157 |
--------------------------------------------------------------------------------
/specification/specification/performance.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenTelemetry APIのパフォーマンスとブロッキング
6 |
7 |
10 |
11 | このドキュメントは、設計者が安全に使用できるOpenTelemetryクライアントを作成するのに役立つ共通原則を定義しています。
12 |
13 |
16 |
17 | ## 主要な原則
18 |
19 |
22 |
23 | ここで、主要な原則を紹介します:
24 |
25 |
29 |
30 | - **ライブラリーがエンドユーザーのアプリケーションをデフォルトでブロックしないこと**
31 | - **ライブラリが制限のないメモリリソースを消費しないこと**
32 |
33 |
36 |
37 | モニタリングを実現するためにはオーバーヘッドが避けられませんが、APIは可能な限りエンドユーザー・アプリケーションを劣化させないようにすべきです。そのため、エンドユーザー・アプリケーションをブロックしたり、メモリ・リソースを過剰に消費したりしてはいけません。
38 |
39 |
42 |
43 | 実装が同時実行をサポートしている場合は、[並行処理とスレッドセーフ](library-guidelines.md#concurrency-and-thread-safety)も参照してください。
44 |
45 |
48 |
49 | ### ノンブロッキングとメモリ消費のトレードオフ
50 |
51 |
54 |
55 | 不完全な非同期I/Oタスクやバックグラウンドタスクは、その状態を維持するためにメモリを消費することがあります。このような場合、メモリ不足を防ぐために一部のタスクを削除することと、情報損失を防ぐためにすべてのタスクを保持することはトレードオフの関係にあります。
56 |
57 |
60 |
61 | OpenTelemetryクライアントにそのようなトレードオフがある場合、エンドユーザーに次のようなオプションを提供する必要があります。
62 |
63 |
70 |
71 | - **情報を損失しない**: すべての情報を保持するが、多くのリソースを消費する可能性がある。
72 | - **ブロッキングしない**: 負荷が大きい場合一部の情報を消失させ、情報消失の開始時と回復時に警告ログを表示する。
73 | - ドロッピングの閾値を変更するオプションを提供すべき
74 | - 効果的なサンプリング比率を示す指標を提供するとよい
75 | - OpenTelemetryクライアントは、ロギングのためにこのオプションを提供するかもしれません
76 |
77 |
80 |
81 | ### エンドユーザーのアプリケーションは、ログのサイズに注意する必要がある
82 |
83 |
86 |
87 | エンドユーザーのアプリケーションがあまりにも多くのログを発する場合、ログはデフォルトで多くのメモリを消費する可能性があります。このデフォルトの動作は、ログを落とすのではなく保存することを目的としています。リソースの使用量を制限するために、エンドユーザーはエクスポート先に渡されるログを減らすことを検討する必要があります。
88 |
89 |
92 |
93 | したがって、OpenTelemetryクライアントは、OpenTelemetryでキャプチャするログをフィルタリングする方法を提供する必要があります。エンドユーザーのアプリケーションは、ログファイルや標準出力(あるいは他の場所)に多くのログを記録したいが、OpenTelemetry エクスポーターにすべてのログを送りたくないという場合があります。
94 |
95 |
98 |
99 | OpenTelemetryクライアントのドキュメントでは、デフォルトではログが多すぎて多くのリソースを消費することを指摘した上で、ログをフィルタリングする方法を案内するのがよいでしょう。
100 |
101 |
104 |
105 | ### シャットダウンと明示的なフラッシュにより、ブロックを可能とする
106 |
107 |
110 |
111 | OpenTelemetryクライアントは、シャットダウン時にエンドユーザーのアプリケーションをブロックする可能性があります。シャットダウン時には、情報の損失を防ぐためにデータをフラッシュしなければなりません。OpenTelemetryクライアントは、シャットダウン時にブロックする場合、ユーザーが設定できるタイムアウトをサポートする必要があります。
112 |
113 |
116 |
117 | OpenTelemetryクライアントが明示的なフラッシュ操作をサポートしていれば、ブロックすることも可能です。しかし、設定可能なタイムアウトをサポートする必要があります。
118 |
119 |
122 |
123 | ## ドキュメンテーション
124 |
125 |
128 |
129 | 言語固有の実装で、本文書に記載されていない特別な特性がある場合は、その特性を文書化する必要があります。
130 |
--------------------------------------------------------------------------------
/specification/specification/protocol/README.md:
--------------------------------------------------------------------------------
1 | # OpenTelemetry プロトコル
2 |
3 | これは、新しいOpenTelemetryプロトコル(OTLP)の仕様です。
4 |
5 | - [デザインゴール](design-goals.md)
6 | - [要件](requirements.md)
7 | - [使用](otlp.md)
8 | - [SDK Exporter](exporter.md)
9 |
--------------------------------------------------------------------------------
/specification/specification/protocol/design-goals.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenTelemetry Wireプロトコルのデザインゴール
6 |
7 |
10 |
11 | 以下のような特徴を持つテレメトリデータ交換プロトコルを設計したいと考えています。
12 |
13 |
16 |
17 | - 以下のすべてのタイプのノードでの使用に適していること: 計装されたアプリケーション、テレメトリ・バックエンド、ローカル・エージェント、スタンドアローン・コレクター/フォワーダーなど。
18 |
19 |
22 |
23 | - データ配信の信頼性が高く、データが配信されない場合も明確にわかること。
24 |
25 |
28 |
29 | - シリアライズとデシリアライズのCPU使用率が低いこと。
30 |
31 |
34 |
35 | - パススルーシナリオを含めて、メモリマネージャへの負荷を最小限に抑えること。デシリアライズされたデータが短命で、直後にそのままシリアライズする必要がある場合や、そのような短命のデータが高頻度で作成・破棄される場合(テレメトリデータフォワーダなど)を含みます。
36 |
37 |
40 |
41 | - デシリアライズされたデータを効率的に修正し、さらに渡すために再びシリアライズする機能をサポートすること。これは関連はしていますが、先ほどの要件とは少し異なります。
42 |
43 |
46 |
47 | - 高遅延ネットワークでの高スループット(利用可能な帯域幅)を確保すること。(例:テレメトリソースとバックエンドが高遅延ネットワークで分離されているシナリオ)
48 |
49 |
52 |
53 | - バックプレッシャー・シグナリングを可能にすること
54 |
55 |
58 |
59 | - ロードバランサーフレンドリーであること(リバランシングの妨げにならないこと)
60 |
61 |
--------------------------------------------------------------------------------
/specification/specification/protocol/exporter.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # OpenTelemetry Protocol Exporter
6 |
7 | **Status**: [Stable](../document-status.md)
8 |
9 |
12 |
13 | 本ドキュメントは、OpenTelemetry Protocol ([OTLP](https://github.com/open-telemetry/oteps/blob/main/text/0035-opentelemetry-protocol.md)) Exporterで利用可能な設定オプションと、リトライの動作について規定しています。
14 |
15 |
18 |
19 | ## 設定オプション
20 |
21 |
24 |
25 | OTLP Exporterを構成するために、以下の構成オプションが利用可能でなければなりません(MUST)。また、各設定オプションは、Signal固有のオプションでオーバーライド可能でなければなりません(MUST)。
26 |
27 |
36 |
37 | | Configuration Option | 説明 | Default | 環境変数名 |
38 | | -------------------- | ------------------------------------------------------------ | ----------------- | ------------------------------------------------------------ |
39 | | Endpoint | ExporterがSpanやMetricsを送信する先のターゲット。エンドポイントは、スキーム(httpまたはhttps)とホストを持つ有効なURLでなければならず(MUST)、ポートとパスを含んでもかまいません(MAY)。スキームが https の場合は、安全な接続を示します。OTLP/HTTP で `OTEL_EXPORTER_OTLP_ENDPOINT` を使用する場合、エクスポートする側は、バージョンとシグナルをパスに追加するというコレクターの慣習に従うべきです(SHOULD) (例: `v1/traces` や `v1/metrics`)。Signalごとのエンドポイント設定オプションが優先され、この動作をオーバーライドするために使用することができます。詳しくは[OTLP仕様書][otlphttp-req]を参照してください。| `https://localhost:4317` | `OTEL_EXPORTER_OTLP_ENDPOINT` `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` |
40 | | Certificate File | gRPCクライアントのTLS認証用証明書ファイルへのパス。安全な接続のためにのみ使用してください。| n/a | `OTEL_EXPORTER_OTLP_CERTIFICATE` `OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE` `OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE` |
41 | | Headers | gRPCやHTTPリクエストに関連するヘッダーとして使用されるキーと値のペアです。詳しくは、[Specifying headers](./exporter.md#specifying-headers-via-environment-variables)をご覧ください。 | n/a | `OTEL_EXPORTER_OTLP_HEADERS` `OTEL_EXPORTER_OTLP_TRACES_HEADERS` `OTEL_EXPORTER_OTLP_METRICS_HEADERS` |
42 | | Compression | サポートされている圧縮タイプの圧縮キーです。サポートされている圧縮形式:`gzip`。| No value | `OTEL_EXPORTER_OTLP_COMPRESSION` `OTEL_EXPORTER_OTLP_TRACES_COMPRESSION` `OTEL_EXPORTER_OTLP_METRICS_COMPRESSION` |
43 | | Timeout | OTLPエクスポーターが各バッチのエクスポートで待機する最大時間 | 10s | `OTEL_EXPORTER_OTLP_TIMEOUT` `OTEL_EXPORTER_OTLP_TRACES_TIMEOUT` `OTEL_EXPORTER_OTLP_METRICS_TIMEOUT` |
44 |
45 |
48 |
49 | `OTEL_EXPORTER_OTLP_*COMPRESSION`オプションでサポートされる値:
50 |
51 |
55 |
56 | - この値がない場合は、圧縮は無効です。
57 | - 今のところ、`gzip`が唯一の圧縮方法として指定されています。その他のオプションは言語 SDK でサポートされていても構いません(MAY)。各言語のドキュメントを参照してください。
58 |
59 |
62 |
63 | 例 1
64 |
65 |
68 |
69 | 以下の構成では、すべてのSignalが同じコレクターに送られます。
70 |
71 |
76 |
77 | ```bash
78 | export OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4317
79 | ```
80 |
81 |
84 |
85 | 例 2
86 |
87 |
90 |
91 | TraceやMetricsは、異なるCollectorに送られます。
92 |
93 | ```bash
94 | export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://collector:4317
95 |
96 | export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://collector.example.com/v1/metrics
97 | ```
98 |
99 |
102 |
103 | ### プロトコルの指定
104 |
105 |
112 |
113 | 現在、OTLPは、`grpc`、`http/json`、`http/protobuf`など、サポートできるトランスポートプロトコルが複数あります。仕様書の1.0の時点では、*指定されたデフォルトはなく、環境変数による設定もありません*。今後のプロトコルの設定のために、以下の環境変数を予約しています。
114 |
115 |
120 |
121 | - `OTEL_EXPORTER_OTLP_PROTOCOL`
122 | - `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL`
123 | - `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL`
124 |
125 |
128 |
129 | SDKは、設定が提供されていない場合、不特定のデフォルトを持っています。
130 |
131 |
134 |
135 | ### 環境変数によるヘッダーの指定
136 |
137 |
140 |
141 | 環境変数 `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_EXPORTER_OTLP_TRACES_HEADERS`, `OTEL_EXPORTER_OTLP_METRICS_HEADERS` には、キーバリューペアのリストが格納され、これらは [W3C Correlation-Context](https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md)に一致するフォーマットで表現されることが期待されます(例: key1=value1,key2=value2)。ただし、追加のセミコロンで区切られたメタデータはサポートされていません。すべての属性値は文字列とみなされなければなりません(MUST)。
142 |
143 |
146 |
147 | ## リトライ
148 |
149 |
152 |
153 | 一時的なエラーは、リトライ戦略で処理しなければなりません(MUST)。このリトライ戦略は、ネットワークが復旧するまで、あるいは送信先が回復するまで、送信先に負担をかけないように、ジッターを含む指数関数的なバックオフを実装しなければなりません(MUST)。
154 |
155 |
158 |
159 | OTLP/HTTPでは、エラー`408 (Request Timeout)`と`5xx (Server Errors)`が一時的なエラーとして定義されています。エラーに関する詳細な情報は、[HTTP failures section](otlp.md#failures)に記載されています。OTLP/gRPCでは、gRPCのリトライ可能なステータスコードの一覧は、[gRPC response section](otlp.md#otlpgrpc-response)に記載されています。
160 |
161 |
164 |
165 | [otlphttp-req]: otlp.md#otlphttp-request
166 |
167 |
--------------------------------------------------------------------------------
/specification/specification/protocol/img/otlp-client-server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/protocol/img/otlp-client-server.png
--------------------------------------------------------------------------------
/specification/specification/protocol/img/otlp-concurrent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/protocol/img/otlp-concurrent.png
--------------------------------------------------------------------------------
/specification/specification/protocol/img/otlp-multi-destination.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/protocol/img/otlp-multi-destination.png
--------------------------------------------------------------------------------
/specification/specification/protocol/img/otlp-request-response.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/protocol/img/otlp-request-response.png
--------------------------------------------------------------------------------
/specification/specification/protocol/img/otlp-sequential.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-telemetry/docs-ja/3561b9553dafdcb88f7f40eb049a3ef059fc00b3/specification/specification/protocol/img/otlp-sequential.png
--------------------------------------------------------------------------------
/specification/specification/resource/sdk.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # リソース SDK
6 |
7 |
10 |
11 | **Status**: [Stable](../document-status.md)
12 |
13 |
22 |
23 | [リソース](../overview.md#resources)は、テレメトリを生成するエンティティを[属性](../common/common.md#attributes)として不変的に表現したものです。例えば、Kubernetes上のコンテナで実行されているテレメトリを生成するプロセスは、Pod名を持ち、Namespace内にあり、おそらく名前を持つDeploymentの一部です。これらの3つの属性はすべて`リソース`に含めることができます。なお、意味が決まっている["標準属性"](semantic_conventions/README.md)があります。
24 |
25 |
32 |
33 | リソースをSDKのファーストクラスのコンセプトとした主な目的は、リソース情報の発見をエクスポーターから切り離すことです。これにより、独立した開発が可能になり、クローズドソース環境との統合を必要とするユーザーのためのカスタマイズが容易になります。SDKは、`リソース`の作成と、それをテレメトリに関連付けることを可能にしなければなりません(MUST)。
34 |
35 |
42 |
43 | 分散トレーシングで使用する場合、TracerProviderが作成された時点で、リソースを[`TracerProvider`](../trace/api.md#tracerprovider)に関連付けることができます。その関連付けは後から変更することはできません。`TracerProvider`と関連付けられた場合、プロバイダからのあらゆる`Tracer`によって生成されたすべての`Span`は、この`リソース`と関連付けられなければなりません(MUST)。
44 |
45 |
52 |
53 | 分散トレーシングと同様に、Metricsを使用する場合、リソースは `MeterProvider` と関連付けることができます。[`MeterProvider`](../metrics/api.md#meter-interface)に関連付けられると、そのプロバイダからの任意の`Meter`によって生成されたすべてのメトリックは、この`リソース`に関連付けられます。
54 |
55 |
58 |
59 | ## SDKが提供する リソース属性
60 |
61 |
67 |
68 | SDKは、[Semantic Attributes with SDK-provided Default Value](semantic_conventions/README.md#semantic-attributes-with-sdk-provided-default-value)に記載されている属性を少なくとも持つResourceへのアクセスを提供しなければなりません(MUST)。他のリソースが明示的に指定されていない場合、このリソースは、`TracerProvider`または`MeterProvider`と関連付けられなければなりません(MUST)。
69 |
70 |
79 |
80 | 注:これは、SDKが提供する属性のすべてまたは一部が存在しないリソースを作成して関連付けることが可能であることを意味します。しかし、それはデフォルトでは起こりません。ユーザーがデフォルトのリソースにカスタム属性を組み合わせたい場合は、[`Merge`](#merge)をカスタムリソースに使用するか、リソースを明示的に関連付ける代わりに、[環境からリソース情報を検出する](#環境からリソース情報を検出する)を実装して属性を指定します。
81 |
82 |
83 |
86 |
87 | ## リソースの作成
88 |
89 |
92 |
93 | SDKは、新しいリソースをインスタンス化する2つの方法をサポートする必要があります。それらは以下の2つです:
94 |
95 |
96 |
99 |
100 | ### Create
101 |
102 |
107 |
108 | インターフェースは、[`Attributes`](../common/common.md#attributes)から、新しいリソースを作成する方法を提供しなければなりません(MUST)。例えば、リソースオブジェクトのファクトリーメソッドやコンストラクタなどです。キャッシュされたオブジェクトのサポートを可能にするために、ファクトリーメソッドを推奨します。
109 |
110 |
113 |
114 | 必須パラメータ:
115 |
116 |
119 |
120 | - [`Attributes`](../common/common.md#attributes)
121 |
122 |
125 |
126 | ### Merge
127 |
128 |
132 |
133 | インターフェースは、古いリソースと更新中のリソースを新しいリソースに統合する方法を提供しなければなりません(MUST)。
134 |
135 |
140 |
141 | 注:これは、環境変数や、ホストやコンテナから抽出されたメタデータなど、異なるソースから属性を得ているリソースをマージするために使用することを目的としています。
142 |
143 |
148 |
149 | 結果として得られるリソースは、2つの入力リソースのいずれかに存在するすべての属性を持たなければなりません(MUST)。旧リソースと更新リソースの両方にキーが存在する場合、(更新値が空であっても)更新リソースの値が選ばれなければなりません(MUST)。
150 |
151 |
154 |
155 | 必須パラメータ:
156 |
157 |
161 |
162 | - 古いリソース
163 | - 属性が優先される更新リソース
164 |
165 |
168 |
169 | ### 空リソース
170 |
171 |
175 |
176 | 空のリソースを素早く作成する方法を提供することが推奨されていますが、必須ではありません。
177 |
178 |
181 |
182 | ### 環境からリソース情報を検出する
183 |
184 |
189 |
190 | 一般的なプラットフォーム(Docker、Kubernetesなど)やベンダー固有の環境(EKS、AKS、GKEなど)に関連するカスタムリソース検出器は、SDKとは別のパッケージとして実装しなければなりません(MUST)。
191 |
192 |
197 |
198 | リソース検出器パッケージは、リソースを返すメソッドを提供しなければなりません(MUST)。これにより、上述のように、`TracerProvider` や `MeterProvider` のインスタンスと関連付けられます。
199 |
200 |
205 |
206 | リソース検出器パッケージは、複数のソースからリソース情報を検出し、その結果を前述の `Merge` 操作でマージしても構いません(MAY)。
207 |
208 |
217 |
218 | このコードはアプリケーションの初期化時に実行されるため、リソース検出ロジックは短時間で完了することが期待されます。エラーは、[エラー処理の原則](../error-handling.md#basic-error-handling-principles)で指定されているように処理されるべきです。なお、リソース情報の検出に失敗した場合はエラーとみなしてはいけません(MUST NOT)が、リソース情報を検出しようとした際に発生したエラーはエラーとみなすべきです(SHOULD)。
219 |
220 |
223 |
224 | ### 環境変数によるリソース情報の指定
225 |
226 |
232 |
233 | SDKは、環境変数`OTEL_RESOURCE_ATTRIBUTES`から情報を抽出し、これを二次リソースとして、ユーザーが提供したリソース情報と[マージ](#merge)しなければなりません(つまり、ユーザーが提供したリソース情報の方が優先されます)。
234 |
235 |
242 |
243 | 環境変数 `OTEL_RESOURCE_ATTRIBUTES` には、キーと値のペアのリストが含まれます。これらは、セミコロンで区切られた追加のメタデータがサポートされていないことを除いて、[W3C Baggage](https://github.com/w3c/baggage/blob/fdc7a5c4f4a31ba2a36717541055e551c2b032e4/baggage/HTTP_HEADER_FORMAT.md#header-content)に沿ったフォーマットで表現されることが期待されています(例:`key1=value1,key2=value2`)。すべての属性値は文字列とみなされなければなりません(MUST)。
244 |
245 |
248 |
249 | ## リソース操作
250 |
251 |
255 |
256 | リソースは不変(Immutable)です。したがって、リソースの作成に加えて、以下のような操作のみを提供する必要があります。
257 |
258 |
261 |
262 | ### 属性の取得
263 |
264 |
268 |
269 | SDKは、リソースに関連付けられた属性の読み取り専用の属性集合(Collection)を取得する方法を提供する必要があります。
270 |
271 |
274 |
275 | 属性の順番を保証する必要はありません。
276 |
277 |
283 |
284 | 属性を取得する際の最も一般的な操作は、その属性を列挙(enumerate)することです。そのため、特定のキーを持つ属性の値を素早く取得する方法などの他の考慮事項よりも、高速に列挙できるように結果の集合(Collection)を最適化することが推奨されます。
285 |
286 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/cloud.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # クラウド
6 |
7 | **Status**: [Experimental](../../document-status.md)
8 |
9 | **type:** `cloud`
10 |
11 |
14 |
15 | **Description:** クラウドインフラストラクチャ (e.g. GCP, Azure, AWS).
16 |
17 |
18 |
19 | | Attribute | Type | Description | Examples | Required |
20 | |---|---|---|---|---|
21 | | `cloud.provider` | string | クラウドプロバイダの名前 | `gcp` | No |
22 | | `cloud.account.id` | string | リソースが割り当てられているクラウドのアカウントID | `111111111111`; `opentelemetry` | No |
23 | | `cloud.region` | string | リソースが動作している地理的な地域。[AWSリージョン](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)、[Azureリージョン](https://azure.microsoft.com/en-us/global-infrastructure/geographies/)、[Google Cloudリージョン](https://cloud.google.com/about/locations)など、利用可能なリージョンについては、プロバイダーのドキュメントを参照してください。 | `us-central1`; `us-east-1` | No |
24 | | `cloud.availability_zone` | string | クラウドのリージョンは、可用性を高めるために、ゾーンと呼ばれる複数の隔離された場所を持つことが多いです。アベイラビリティゾーンは、リソースが稼働しているゾーンを表します。 [1] | `us-east-1c` | No |
25 | | `cloud.platform` | string | 使用中のクラウドプラットフォームのリソース [2] | `aws_ec2`; `azure_vm`; `gcp_compute_engine` | No |
26 |
27 | **[1]:** Google Cloudでは、アベイラビリティー・ゾーンを"Zone"と呼んでいます。
28 |
29 | **[2]:** サービスのプレフィックスは `cloud.provider` で指定されたものと一致するべきです(SHOULD)。
30 |
31 | `cloud.provider` MUST be one of the following or, if none of the listed values apply, a custom value:
32 |
33 | | Value | Description |
34 | |---|---|
35 | | `aws` | Amazon Web Services |
36 | | `azure` | Microsoft Azure |
37 | | `gcp` | Google Cloud Platform |
38 |
39 | `cloud.platform` MUST be one of the following or, if none of the listed values apply, a custom value:
40 |
41 | | Value | Description |
42 | |---|---|
43 | | `aws_ec2` | AWS Elastic Compute Cloud |
44 | | `aws_ecs` | AWS Elastic Container Service |
45 | | `aws_eks` | AWS Elastic Kubernetes Service |
46 | | `aws_lambda` | AWS Lambda |
47 | | `aws_elastic_beanstalk` | AWS Elastic Beanstalk |
48 | | `azure_vm` | Azure Virtual Machines |
49 | | `azure_container_instances` | Azure Container Instances |
50 | | `azure_aks` | Azure Kubernetes Service |
51 | | `azure_functions` | Azure Functions |
52 | | `azure_app_service` | Azure App Service |
53 | | `gcp_compute_engine` | Google Cloud Compute Engine (GCE) |
54 | | `gcp_cloud_run` | Google Cloud Run |
55 | | `gcp_kubernetes_engine` | Google Cloud Kubernetes Engine (GKE) |
56 | | `gcp_cloud_functions` | Google Cloud Functions (GCF) |
57 | | `gcp_app_engine` | Google Cloud App Engine (GAE) |
58 |
59 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/cloud_provider/aws/README.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # AWS セマンティック規約
6 |
7 |
10 |
11 | **Status**: [Experimental](../../../../document-status.md)
12 |
13 |
19 |
20 | このディレクトリでは、Amazon Web Services (AWS)のリソースにのみ適用されるリソース属性の標準を定義しています。もしある属性が複数のクラウドプロバイダーのリソースに適用される可能性がある場合(アカウントIDやオペレーティングシステムなど)、その属性は親ディレクトリである `semantic_conventions` に属します。
21 |
22 |
25 |
26 | ## 一般的な AWS 属性
27 |
28 |
32 |
33 | AWSに関連する属性、またはAWS固有の用語を使用しているが、AWS内の複数のサービスで使用されていたり、特定のサービスから抽象化されていたりする属性。
34 |
35 |
38 |
39 | - [AWS Logs](./logs.md)
40 |
41 |
44 |
45 | ## サービス
46 |
47 |
50 |
51 | 個々のAWSサービスに関連する属性。
52 |
53 |
56 |
57 | - [Elastic Container Service (ECS)](./ecs.md)
58 | - [Elastic Kubernetes Service (EKS)](./eks.md)
59 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/cloud_provider/aws/ecs.md:
--------------------------------------------------------------------------------
1 | # AWS ECS
2 |
3 | **Status**: [Experimental](../../../../document-status.md)
4 |
5 | **type:** `aws.ecs`
6 |
7 | **Description:** AWS Elastic Container Service(ECS)が使用するリソースです。
8 |
9 |
10 | | Attribute | Type | Description | Examples | Required |
11 | |---|---|---|---|---|
12 | | `aws.ecs.container.arn` | string | [ECSコンテナインスタンス](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html)のAmazon Resource Name(ARN)。 | `arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9` | No |
13 | | `aws.ecs.cluster.arn` | string | [ECSクラスタ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html)のARN。 | `arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster` | No |
14 | | `aws.ecs.launchtype` | string | ECSタスクの[起動タイプ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)。 | `ec2`; `fargate` | No |
15 | | `aws.ecs.task.arn` | string | [ECSタスク定義](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)のARN。 | `arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b` | No |
16 | | `aws.ecs.task.family` | string | このタスク定義が属するタスク定義ファミリ。 | `opentelemetry-family` | No |
17 | | `aws.ecs.task.revision` | string | このタスク定義のリビジョン | `8`; `26` | No |
18 |
19 | `aws.ecs.launchtype` MUST be one of the following:
20 |
21 | | Value | Description |
22 | |---|---|
23 | | `ec2` | ec2 |
24 | | `fargate` | fargate |
25 |
26 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/cloud_provider/aws/eks.md:
--------------------------------------------------------------------------------
1 | # AWS EKS
2 |
3 | **Status**: [Experimental](../../../../document-status.md)
4 |
5 | **type:** `aws.eks`
6 |
7 | **Description:** AWS Elastic Kubernetes Service(EKS)が使用するリソースです。
8 |
9 |
10 | | Attribute | Type | Description | Examples | Required |
11 | |---|---|---|---|---|
12 | | `aws.eks.cluster.arn` | string | EKSクラスターのARN | `arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster` | No |
13 |
14 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/cloud_provider/aws/logs.md:
--------------------------------------------------------------------------------
1 | # AWS Logs
2 |
3 | **Status**: [Experimental](../../../../document-status.md)
4 |
5 | **Type:** `aws.log`
6 |
7 | **Description:** Amazon Web Servicesのログ属性です。
8 |
9 |
10 | | Attribute | Type | Description | Examples | Required |
11 | |---|---|---|---|---|
12 | | `aws.log.group.names` | string[] | アプリケーションが書き込んでいるAWS log groupの名前。 [1] | `[/aws/lambda/my-function, opentelemetry-service]` | No |
13 | | `aws.log.group.arns` | string[] | AWSロググループのAmazon Resource Name(ARN)。 [2] | `[arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*]` | No |
14 | | `aws.log.stream.names` | string[] | アプリケーションが書き込んでいるAWSログストリームの名前。 | `[logs/main/10838bed-421f-43ef-870a-f43feacbbb5b]` | No |
15 | | `aws.log.stream.arns` | string[] | AWSログストリームのARN。 [3] | `[arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b]` | No |
16 |
17 | **[1]:** マルチコンテナアプリケーションのように1つのアプリケーションにサイドカーコンテナがあり、それぞれがそれぞれのロググループに書き込むような場合があるため、複数のロググループをサポートする必要があります。
18 |
19 | **[2]:** [ロググループ ARN 形式のドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format) を参照してください。
20 |
21 | **[3]:** [ログストリーム ARN 形式のドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format)を参照してください。1つのロググループには複数のログストリームを含むことができるので、これらのARNは必然的にロググループとログストリームの両方を識別する必要があります。
22 |
23 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/container.md:
--------------------------------------------------------------------------------
1 | # Container
2 |
3 | **Status**: [Experimental](../../document-status.md)
4 |
5 | **type:** `container`
6 |
7 |
10 |
11 | **Description:** コンテナインスタンスです。
12 |
13 |
14 | | Attribute | Type | Description | Examples | Required |
15 | |---|---|---|---|---|
16 | | `container.name` | string | コンテナ名 | `opentelemetry-autoconf` | No |
17 | | `container.id` | string | コンテナID。通常はUUIDで、例えば[Dockerコンテナの識別子](https://docs.docker.com/engine/reference/run/#container-identification)]に使用されます。UUIDが略されている場合があります。 | `a3bf90e006b2` | No |
18 | | `container.runtime` | string | このコンテナを管理しているコンテナランタイム | `docker`; `containerd`; `rkt` | No |
19 | | `container.image.name` | string | コンテナイメージの名前 | `gcr.io/opentelemetry/operator` | No |
20 | | `container.image.tag` | string | コンテナイメージタグ | `0.1` | No |
21 |
22 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/deployment_environment.md:
--------------------------------------------------------------------------------
1 | # Deployment
2 |
3 | **Status**: [Experimental](../../document-status.md)
4 |
5 | **type:** `deployment`
6 |
7 |
10 |
11 | **Description:** ソフトウェアのデプロイです。
12 |
13 |
14 | | Attribute | Type | Description | Examples | Required |
15 | |---|---|---|---|---|
16 | | `deployment.environment` | string | [デプロイ環境](https://en.wikipedia.org/wiki/Deployment_environment)の名前(別名:配置層) | `staging`; `production` | No |
17 |
18 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/faas.md:
--------------------------------------------------------------------------------
1 | # Function as a Service
2 |
3 | **Status**: [Experimental](../../document-status.md)
4 |
5 | **type:** `faas`
6 |
7 |
10 |
11 | **Description:** サーバーレスのインスタンスです。
12 |
13 |
14 | | Attribute | Type | Description | Examples | Required |
15 | |---|---|---|---|---|
16 | | `faas.name` | string | 実行される関数名 | `my-function` | Yes |
17 | | `faas.id` | string | 実行される関数の一意なID [1] | `arn:aws:lambda:us-west-2:123456789012:function:my-function` | Yes |
18 | | `faas.version` | string | [バージョン属性](.../.../resource/semantic_conventions/README.md#version-attributes)で定義されている、実行される関数のバージョン文字列。 | `2.0.0` | No |
19 | | `faas.instance` | string | 実行環境のID文字列。 | `my-function:instance-0001` | No |
20 | | `faas.max_memory` | int | サーバーレス関数を実行する際のメモリをMiBで記述したもの [2] | `128` | No |
21 |
22 | **[1]:** このフィールドは、例えばAWS Lambdaでは[ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)の値に、GCPではリソースのURIに、Azureでは[FunctionDirectory](https://github.com/Azure/azure-functions-host/wiki/Retrieving-information-about-the-currently-running-function)の値に対応しています。
23 |
24 | **[2]:** メモリが少なすぎるとJavaのAWS Lambda関数が正常に動作しなくなることがあるので、この属性を設定しておくことをお勧めします。AWS Lambda上では、環境変数 `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` がこの情報を提供します。
25 |
26 |
27 | 注:Resource属性の`faas.instance`は、Span属性の`faas.execution`とは異なります。詳細は[FaaS spanのセマンティック規約](../../trace/semantic_conventions/faas.md#difference-between-execution-and-instance)を参照してください。
28 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/host.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # ホスト
6 |
7 | **Status**: [Experimental](../../document-status.md)
8 |
9 | **type:** `host`
10 |
11 |
14 |
15 | **Description:** ホストとは、一般的なコンピューティングインスタンスと定義されます。
16 |
17 |
18 | | Attribute | Type | Description | Examples | Required |
19 | |---|---|---|---|---|
20 | | `host.id` | string | 一意のホスト ID。クラウドの場合、これはクラウドプロバイダーによって割り当てられた instance_id である必要があります。 | `opentelemetry-test` | No |
21 | | `host.name` | string | ホストの名前。Unix システムでは、hostname コマンドが返すもの、完全修飾されたホスト名、あるいはユーザが指定した別の名前が含まれます。 | `opentelemetry-test` | No |
22 | | `host.type` | string | ホストの種類。クラウドの場合は、マシンタイプである必要があります。 | `n1-standard-1` | No |
23 | | `host.arch` | string | ホストシステムが動いているCPUアーキテクチャ | `amd64` | No |
24 | | `host.image.name` | string | ホストがインスタンス化されたVMイメージまたはOSのインストール名。 | `infra-ami-eks-worker-node-7d4ec78312`; `CentOS-8-x86_64-1905` | No |
25 | | `host.image.id` | string | VM イメージ ID。クラウドの場合、この値はプロバイダのものです。 | `ami-07b06b442921831e5` | No |
26 | | `host.image.version` | string | [バージョン属性](README.md#version-attributes)で定義されているVMイメージのバージョン文字列。 | `0.1` | No |
27 |
28 | `host.arch` MUST be one of the following or, if none of the listed values apply, a custom value:
29 |
30 | | Value | Description |
31 | |---|---|
32 | | `amd64` | AMD64 |
33 | | `arm32` | ARM32 |
34 | | `arm64` | ARM64 |
35 | | `ia64` | Itanium |
36 | | `ppc32` | 32-bit PowerPC |
37 | | `ppc64` | 64-bit PowerPC |
38 | | `x86` | 32-bit x86 |
39 |
40 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/k8s.md:
--------------------------------------------------------------------------------
1 | # Kubernetes
2 |
3 | **Status**: [Experimental](../../document-status.md)
4 |
5 |
8 |
9 | Kubernetesのオブジェクトやメタデータを理解するのに役立つリソースです。
10 |
11 |
17 |
18 | * [Namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/)
19 | * [Names and UIDs](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/).
20 | * [Pods](https://kubernetes.io/docs/concepts/workloads/pods/)
21 | * [Controllers](https://kubernetes.io/docs/concepts/workloads/controllers/)
22 |
23 |
29 |
30 | Kubernetesオブジェクトの "name" は、 "namespace" 内のその種類のオブジェクトに対して一意であり、特定の瞬間にのみ有効です(名前は時間の経過とともに再利用できます)。"uid" は、クラスタ全体で一意であり、時間を超えても一意である可能性が高いです。このため、すべてのKubernetesオブジェクトにUIDを設定することが推奨されていますが、通常は "name" の方がユーザーフレンドリーなので、こちらも設定可能です。
31 |
32 |
35 |
36 | ## クラスター
37 |
38 | **type:** `k8s.cluster`
39 |
40 |
42 |
43 | **説明:** kubernetes Cluster
44 |
45 |
46 | | Attribute | Type | Description | Examples | Required |
47 | |---|---|---|---|---|
48 | | `k8s.cluster.name` | string | クラスターの名前。 | `opentelemetry-cluster` | No |
49 |
50 |
51 |
54 |
55 | ## Node
56 |
57 | **type:** `k8s.node`
58 |
59 |
62 |
63 | **説明:** Kubernetes Node
64 |
65 |
66 | | Attribute | Type | Description | Examples | Required |
67 | |---|---|---|---|---|
68 | | `k8s.node.name` | string | Nodeの名前 | `node-1` | No |
69 | | `k8s.node.uid` | string | NodeのUID | `1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2` | No |
70 |
71 |
72 |
75 |
76 | ## Namespace
77 |
78 |
82 |
83 | Namespaceは、nameの範囲を提供します。オブジェクトの名前は、namespace内では一意である必要がありますが、namespace間では一意ではありません。
84 |
85 | **type:** `k8s.namespace`
86 |
87 |
90 |
91 | **説明:** Kubernetes Namespace
92 |
93 |
94 | | Attribute | Type | Description | Examples | Required |
95 | |---|---|---|---|---|
96 | | `k8s.namespace.name` | string | Podが動作しているnamespaceの名前 | `default` | No |
97 |
98 |
99 |
102 |
103 | ## Pod
104 |
105 |
108 |
109 | 最小かつ最もシンプルなKubernetesのオブジェクト。Podは、クラスタ上で稼働するコンテナのセットを表します。
110 |
111 | **type:** `k8s.pod`
112 |
113 |
116 |
117 | **説明:** Kubernetes Pod オブジェクト
118 |
119 |
120 | | Attribute | Type | Description | Examples | Required |
121 | |---|---|---|---|---|
122 | | `k8s.pod.uid` | string | PodのUID | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | No |
123 | | `k8s.pod.name` | string | Podの名前 | `opentelemetry-pod-autoconf` | No |
124 |
125 |
126 |
129 |
130 | ## Container
131 |
132 |
137 |
138 | Podテンプレート内のコンテナの仕様です。このタイプは、実行中のコンテナの名前とは異なるPodテンプレート内のコンテナの名前などの情報を取得するために使用することを目的としています。
139 |
140 |
144 |
145 | 注:このタイプは、実行中のコンテナに対応する[container](./container.md)とは異なります。
146 |
147 | **type:** `k8s.container`
148 |
149 |
152 |
153 | **説明:** [PodTemplate](https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates)のコンテナです。
154 |
155 |
156 | | Attribute | Type | Description | Examples | Required |
157 | |---|---|---|---|---|
158 | | `k8s.container.name` | string | PodTemplate の中のコンテナの名前 | `redis` | No |
159 |
160 |
161 |
164 |
165 | ## ReplicaSet
166 |
167 |
171 |
172 | ReplicaSetの目的は、常に安定したレプリカPodのセットを実行することです。
173 |
174 | **type:** `k8s.replicaset`
175 |
176 |
179 |
180 | **説明:** Kubernetes ReplicaSet オブジェクト
181 |
182 |
183 | | Attribute | Type | Description | Examples | Required |
184 | |---|---|---|---|---|
185 | | `k8s.replicaset.uid` | string | ReplicaSetのUID | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | No |
186 | | `k8s.replicaset.name` | string | ReplicaSetの名前 | `opentelemetry` | No |
187 |
188 |
189 |
192 |
193 | ## Deployment
194 |
195 |
200 |
201 | 複製されたアプリケーションを管理するAPIオブジェクトで、通常、ローカルステートを持たないPodを実行します。各レプリカはPodで表現され、Podはクラスタのノードに分散されます。
202 |
203 | **type:** `k8s.deployment`
204 |
205 |
208 |
209 | **説明:** Kubernetes Deployment オブジェクト
210 |
211 |
212 | | Attribute | Type | Description | Examples | Required |
213 | |---|---|---|---|---|
214 | | `k8s.deployment.uid` | string | DeploymentのUID | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | No |
215 | | `k8s.deployment.name` | string | Deploymentの名前 | `opentelemetry` | No |
216 |
217 |
218 |
221 |
222 | ## StatefulSet
223 |
224 |
228 |
229 | 一連のPodのデプロイとスケーリングを管理し、これらのPodの順序と一意性に関する保証を提供します。
230 |
231 | **type:** `k8s.statefulset`
232 |
233 |
236 |
237 | **説明:** Kubernetes StatefulSet オブジェクト
238 |
239 |
240 |
241 | | Attribute | Type | Description | Examples | Required |
242 | |---|---|---|---|---|
243 | | `k8s.statefulset.uid` | string | StatefulSetのUID | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | No |
244 | | `k8s.statefulset.name` | string | StatefulSetの名前 | `opentelemetry` | No |
245 |
246 |
247 |
250 |
251 | ## DaemonSet
252 |
253 |
256 |
257 | DaemonSetは、すべての(または一部の)NodeがPodのコピーを実行することを保証します。
258 |
259 |
262 |
263 | **type:** `k8s.daemonset`
264 |
265 |
268 |
269 | **説明:** Kubernetes DaemonSet オブジェクト
270 |
271 |
272 |
273 | | Attribute | Type | Description | Examples | Required |
274 | |---|---|---|---|---|
275 | | `k8s.daemonset.uid` | string | DaemonSetのUID | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | No |
276 | | `k8s.daemonset.name` | string | DaemonSetの名前 | `opentelemetry` | No |
277 |
278 |
279 |
282 |
283 | ## Job
284 |
285 |
289 |
290 | ジョブは、1つまたは複数のPodを作成し、そのうちの指定された数のPodが正常に終了することを保証します。
291 |
292 |
295 |
296 | **type:** `k8s.job`
297 |
298 |
301 |
302 | **説明:** Kubernetes Job オブジェクト
303 |
304 |
305 | | Attribute | Type | Description | Examples | Required |
306 | |---|---|---|---|---|
307 | | `k8s.job.uid` | string | JobのUID | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | No |
308 | | `k8s.job.name` | string | Jobの名前 | `opentelemetry` | No |
309 |
310 |
311 |
314 |
315 | ## CronJob
316 |
317 |
320 |
321 | CronJobは、繰り返しのスケジュールでジョブを作成します。
322 |
323 |
326 |
327 | **type:** `k8s.cronjob`
328 |
329 |
332 |
333 | **例:** Kubernetes CronJobオブジェクト
334 |
335 |
336 | | Attribute | Type | Description | Examples | Required |
337 | |---|---|---|---|---|
338 | | `k8s.cronjob.uid` | string | CronJobのUID | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | No |
339 | | `k8s.cronjob.name` | string | CronJobの名前 | `opentelemetry` | No |
340 |
341 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/os.md:
--------------------------------------------------------------------------------
1 | # Operating System
2 |
3 | **Status**: [Experimental](../../document-status.md)
4 |
5 | **type:** `os`
6 |
7 |
10 |
11 | **Description**: このリソースで表されるプロセスが実行されているオペレーティング・システム(OS)。
12 |
13 |
16 |
17 | 仮想化環境の場合、これはプロセスによって観察されるオペレーティングシステムであり、基礎となるホストではなく仮想化されたゲストです。
18 |
19 |
20 | | Attribute | Type | Description | Examples | Required |
21 | |---|---|---|---|---|
22 | | `os.type` | string | The operating system type. | `windows` | Yes |
23 | | `os.description` | string | 人間が読める (解析を意図していない) OS のバージョン情報で、例えば `ver` や `lsb_release -a` コマンドで得られるような文字列です。 | `Microsoft Windows [Version 10.0.18363.778]`; `Ubuntu 18.04.1 LTS` | No |
24 |
25 | `os.type` MUST be one of the following or, if none of the listed values apply, a custom value:
26 |
27 | | Value | Description |
28 | |---|---|
29 | | `windows` | Microsoft Windows |
30 | | `linux` | Linux |
31 | | `darwin` | Apple Darwin |
32 | | `freebsd` | FreeBSD |
33 | | `netbsd` | NetBSD |
34 | | `openbsd` | OpenBSD |
35 | | `dragonflybsd` | DragonFly BSD |
36 | | `hpux` | HP-UX (Hewlett Packard Unix) |
37 | | `aix` | AIX (Advanced Interactive eXecutive) |
38 | | `solaris` | Oracle Solaris |
39 | | `z_os` | IBM z/OS |
40 |
--------------------------------------------------------------------------------
/specification/specification/resource/semantic_conventions/webengine.md:
--------------------------------------------------------------------------------
1 | # Webengine
2 |
3 | **type:** `webengine`
4 |
5 |
8 |
9 | **Description:** アプリケーションコードを実行するパッケージソフトウェアを記述するリソース。Webエンジンは、通常、process.runtimeを使用して実行されます。
10 |
11 |
12 | | Attribute | Type | Description | Examples | Required |
13 | |---|---|---|---|---|
14 | | `webengine.name` | string | Webエンジンの名前 | `WildFly` | Yes |
15 | | `webengine.version` | string | Webエンジンのバージョン | `21.0.0` | No |
16 | | `webengine.description` | string | Webエンジンの追加説明(詳細なバージョンとエディション情報など) | `WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final` | No |
17 |
18 |
19 |
22 |
23 | Webエンジンの情報は、Webエンジンが提供するAPIから取得した値を用いて取得すべきであり、エンジンのバージョンアップに伴うメンテナンスの負担を避けるために、できればランタイム中に取得すべきです(SHOULD)。例として、Javaエンジンはアプリケーションサーバーとしてパッケージ化されていることが多いですが、必ずしもそうではありません。Servlet APIをサポートするJavaアプリケーションサーバの場合、必要な情報は、実行時に`ServletContext.getServerInfo()`を呼び出し、その結果を解析することで取得しても構いません(MAY)。
24 |
25 |
28 |
29 | 1つのリソースは、最大で1つのウェブエンジンに帰属します。
30 |
31 |
34 |
35 | 複数の候補がある場合は、計装するライブラリの作者がウェブエンジンを選択することになります。例として、サーバーにmod_wsgiを使用したApache HTTP Server、WebフレームワークにDjangoを使用したPythonアプリケーションを見てみましょう。この状況では、
36 |
37 |
41 |
42 | * 計装の作成者の判断により、Apache HTTP Server または `mod_wsgi` のいずれかを `webengine` として選択しても構いません(MAY)。
43 | * Django は `webengine` に設定すべきではありません (SHOULD NOT) 。必要な情報はすでに計装のライブラリにあり、これを `webengine` に設定すると情報が重複してしまうからです。
44 |
--------------------------------------------------------------------------------
/specification/specification/sdk-configuration.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # SDKのデフォルト設定
6 |
7 |
8 | 目次
9 |
10 |
11 |
15 |
16 | * [概要](#概要)
17 | * [設定インターフェース](#設定インターフェース)
18 |
19 |
20 |
21 |
22 |
25 |
26 | ## 概要
27 |
28 |
34 |
35 | デフォルトのOpen Telemetry SDK(以下、SDK)は高度な設定が可能です。本ドキュメントでは、SDKを設定するためのメカニズムの概要を説明しています。設定できる内容の詳細を規定するものではありません。
36 |
37 |
40 |
41 | ## 設定インターフェース
42 |
43 |
46 |
47 | ### プログラム的
48 |
49 |
54 |
55 | SDKは、すべての設定のためのプログラム的なインターフェースを提供しなければなりません(MUST)。このインターフェイスは、SDK自体の言語で書かれるべきです(SHOULD)。他のすべての設定メカニズムは、このインターフェースの上に構築されるべきです(SHOULD)。
56 |
57 |
63 |
64 | このプログラム・インターフェースの例として、SDKビルダー・クラスで定義された構造体を受け入れることが挙げられます。そこから、ファイル(YAML、JSON、TOMLなど)を受け取り、プログラム・インターフェースで消費可能な定義済みの構造体に変換するCLIを構築することができます。
65 |
66 |
67 |
70 |
71 | ### 他のメカニズム
72 |
73 |
78 |
79 | 追加の設定メカニズムは、SDKの言語に適した言語/フォーマット/スタイルで提供されるべきです(SHOULD)。SDKは適切な数の設定メカニズムを含むことができます。
80 |
--------------------------------------------------------------------------------
/specification/specification/trace/sdk_exporters/non-otlp.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # 非OTLPフォーマットへのOpenTelemetry変換
6 |
7 |
10 |
11 | **Status**: [Stable](../../document-status.md)
12 |
13 |
20 |
21 | すべてのOpenTelemetryコンセプトとOpenTelemetry APIを使って記録されたSpanデータは、OTLPフォーマットの対応するメッセージとフィールドを使って直接かつ正確に表現することができます。しかし、他のフォーマットについては、必ずしもそうではありません。あるフォーマットが、特定のOpenTelemetryコンセプトやコンセプトのフィールドを表現するネイティブな方法を持っていないこともあります。
22 |
23 |
28 |
29 | このドキュメントでは、OTLP以外のフォーマットとOpenTelemetryの間の変換を定義しています。OpenTelemetryのフィールドやコンセプトは、他のフォーマットでは直接の意味的な互換性がありません。
30 |
31 |
35 |
36 | 注:あるフォーマットが、特定のフィールドやコンセプトに対して意味的に等価なフィールド直接的に持っている場合、この文書の推奨事項は無視されなければなりません(MUST)。
37 |
38 |
43 |
44 | [Jaeger](jaeger.md)と[Zipkin](zipkin.md)の特定の変換ルールも追加で参照してください。JaegerとZipkinの固有のルールは、このドキュメントで定義された一般的なルールよりも優先されます。
45 |
46 |
49 |
50 | ## マッピング
51 |
52 |
55 |
56 | ### InstrumentationLibrary
57 |
58 |
62 |
63 | OpenTelemetry `InstrumentationLibrary` のフィールドは、以下のマッピングを使用して、Spanに関連付けられたキーと値のペアとして報告されなければなりません(MUST)。
64 |
65 |
71 |
72 | | OpenTelemetry InstrumentationLibrary フィールド | 非OTLPのキー |
73 | | ------------------- | --- |
74 | | `InstrumentationLibrary.name`|`otel.library.name`|
75 | | `InstrumentationLibrary.version`|`otel.library.version`|
76 |
77 |
80 |
81 | ### Span Status
82 |
83 |
87 |
88 | Spanの `Status` は、 `Status` が `UNSET` でない限り、Spanに関連付けられたキー・バリュー・ペアとして報告されなければなりません(MUST)。後者の場合は、報告してはいけません(MUST NOT)。
89 |
90 |
94 |
95 | 以下の表は、OpenTelemetryの`Status`とSpanのキーと値のペアのマッピングを定義しています。
96 |
97 |
103 |
104 | |OpenTelemetry Status フィールド|非OTLPのキー|非OTLPの値|
105 | |--|--|--|
106 | |Code | `otel.status_code` | このコードの名前は、`OK`または`ERROR`です。コードが `UNSET` の場合、設定してはいけません (MUST NOT) |
107 | |Description | `otel.status_description` | `Status`に値がある場合はその説明、ない場合は設定されていません |
108 |
109 |
112 |
113 | ### ドロップされた属性数
114 |
115 |
121 |
122 | OpenTelemetry Span のドロップされた属性数は、Span に関連付けられたキー・バリュー・ペアとして報告されなければなりません(MUST)。同様に、Spanイベントのドロップされた属性数は、Spanイベントに関連付けられたキー・バリュー・ペアとして報告されなければなりません(MUST)。どちらの場合も、キー名は `otel.dropped_attributes_count` としなければなりません(MUST)。
123 |
124 |
127 |
128 | このキー・バリュー・ペアは、ゼロ以外の値が含まれている場合にのみ記録されます。
129 |
130 |
133 |
134 | ### ドロップされた Events 数
135 |
136 |
140 |
141 | OpenTelemetry Spanのドロップされたイベント数は、Spanに関連付けられたキー・バリュー・ペアとして報告されなければなりません(MUST)。キーの名前は `otel.dropped_events_count` でなければなりません(MUST)。
142 |
143 |
146 |
147 | このキー・バリュー・ペアは、ゼロ以外の値が含まれている場合にのみ記録されます。
148 |
149 |
--------------------------------------------------------------------------------
/specification/specification/trace/semantic_conventions/README.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # Trace セマンティック規約
6 |
7 |
10 |
11 | **Status**: [Experimental](../../document-status.md)
12 |
13 |
25 |
26 | OpenTelemetryでは、Spanは自由に作成することができ、表現される操作に特有の属性でSpanをアノテートするのは実装者の責任です。Spanは、システム内およびシステム間の特定の操作を表します。これらの操作の中には、HTTPやデータベースコールなどのよく知られたプロトコルを使用するコールを表すものがあります。プロトコルや操作の種類によっては、監視システムでSpanを正しく表現し、分析するための追加情報が必要になります。また、これらの属性を異なる言語で統一することも重要です。こうすることで、オペレータは言語の詳細を学ぶ必要がなくなり、ポリグロット(多言語)のマイクロサービス環境から収集されたテレメトリは、依然として容易に相関関係を保ち、相互に分析することができます。
27 |
28 |
31 |
32 | Spanのセマンティック規約は以下のように定義されています。
33 |
34 |
43 |
44 | * [General](span-general.md): 異なる種類の操作を記述する際に使用される可能性のある一般的なセマンティック属性
45 | * [HTTP](http.md): HTTPクライアントとサーバーのSpan
46 | * [Database](database.md): SQLとNoSQLのクライアントコールに対応したSpan
47 | * [RPC/RMI](rpc.md): リモートプロシージャコール(例:gRPC)のSpan
48 | * [Messaging](messaging.md): メッセージングシステム(キュー、パブリッシュ/サブスクライブなど)とのやりとりのためのSpan
49 | * [FaaS](faas.md): Function as a Service(例:AWS Lambda)のためのSpan
50 | * [Exceptions](exceptions.md): Spanに関連する例外を記録するための属性
51 |
52 |
55 |
56 | 以下のライブラリ固有のセマンティック規約が定義されています。
57 |
58 |
62 |
63 | * [AWS Lambda](instrumentation/aws-lambda.md): AWS Lambda
64 | * [AWS SDK](instrumentation/aws-sdk.md): AWS SDK
65 |
66 |
71 |
72 | Traceや[metricsのセマンティック規約](../../metrics/semantic_conventions/README.md)とは別に、OpenTelemetryは独自の[Resourceセマンティック規約](../../resource/sdk.md)を持つ包括的な[Resources]の概念も定義しています。
73 |
--------------------------------------------------------------------------------
/specification/specification/trace/semantic_conventions/exceptions.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # 例外のセマンティック規約
6 |
7 | **Status**: [Experimental](../../document-status.md)
8 |
9 |
13 |
14 | このドキュメントでは、アプリケーションの例外を記録するためのセマンティック規約を定義しています。
15 |
16 |
17 |
18 |
23 |
24 | - [例外の記録](#例外の記録)
25 | - [属性](#属性)
26 | - [スタックトレースの表現](#スタックトレースの表現)
27 |
28 |
29 |
30 |
33 |
34 | ## 例外の記録
35 |
36 |
40 |
41 | 例外は、それが発生したSpan上の `イベント` として記録されるべきです (SHOULD)。イベントの名前は `"exception"` でなければなりません。
42 |
43 |
44 |
45 |
50 |
51 | APIで提供される[`recordException`メソッド](../api.md#record-exception)を使って、このセマンティック規約を実装した自動計装実装の典型的なテンプレートは、以下のようになります(擬似Java)。
52 |
53 | ```java
54 | Span span = myTracer.startSpan(/*...*/);
55 | try {
56 | // Code that does the actual work which the Span represents
57 | } catch (Throwable e) {
58 | span.recordException(e, Attributes.of("exception.escaped", true));
59 | throw e;
60 | } finally {
61 | span.end();
62 | }
63 | ```
64 |
65 |
68 |
69 | ## 属性
70 |
71 |
75 |
76 | 以下の表は、`Event`に追加すべき属性とそのタイプを示しています。
77 |
78 |
79 |
80 | | Attribute | Type | Description | Examples | Required |
81 | |---|---|---|---|---|
82 | | `exception.type` | string | 例外のタイプ(該当する場合は、完全修飾クラス名)。例外の動的な型をサポートする言語では、静的型よりも動的型を優先すべきです。 | `java.net.ConnectException`; `OSError` | See below |
83 | | `exception.message` | string | 例外のメッセージ | `Division by zero`; `Can't convert 'int' object to str implicitly` | See below |
84 | | `exception.stacktrace` | string | スタックトレースは、言語ランタイムの自然な表現の文字列です。この表現は各言語のSIGが決定し、文書化することになっています。 | `Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)` | No |
85 | | `exception.escaped` | boolean | 例外がSpanの範囲を逸脱していることが分かっている場所で例外イベントが記録された場合、trueに設定するべきです(SHOULD)。 [1] | | No |
86 |
87 | **[1]:** 例外が論理的に"飛行中(in flight)"である間にSpanが終了した場合、例外はSpanの範囲から脱出(または離脱)したとみなされます。これは、言語によっては実際に"飛行中"かもしれませんが(例:Pythonで例外がContext managerの`__exit__`メソッドに渡された場合)、ほとんどの言語では例外を記録した時点で捕捉されるのが普通です。
88 | 例外が投げられた時点で、その例外がSpanのスコープから外れるかどうかを判断することは通常できません。しかし、[上記の例](#exception-end-example)のように、Spanを終了する直前にアクティブな例外があるかどうかをチェックすれば、例外がエスケープされるかどうかを知ることは簡単です。
89 | これによると、`exception.escaped` 属性が設定されていなかったり、false に設定されていたりしても、例外がSpanのスコープを抜け出す可能性があります。これは、例外が抜け出すかどうかがはっきりしない時点でイベントが記録されている可能性があるからです。
90 |
91 | **Additional attribute requirements:** At least one of the following sets of attributes is required:
92 |
93 | * `exception.type`
94 | * `exception.message`
95 |
96 |
97 |
100 |
101 | ### スタックトレースの表現
102 |
103 |
109 |
110 | 以下の表は、[Google Cloud][gcp-error-reporting]からの引用で、様々な言語でのスタックトレースの表現を含んでいます。この表は、特定の言語を推奨するものではありませんが、SIGが適切と判断した場合には自由に採用することができます.
111 |
112 |
122 |
123 | | 言語 | Format |
124 | | ---------- | ------------------------------------------------------------------- |
125 | | C# | [Exception.ToString()][csharp-stacktrace]の戻り値 |
126 | | Go | [runtime.Stack][go-stacktrace]の戻り値 |
127 | | Java | [Throwable.printStackTrace()][java-stacktrace]の内容 |
128 | | Javascript | V8で返される[error.stack][js-stacktrace]の戻り値 |
129 | | Python | [traceback.format_exc()][python-stacktrace]の戻り値 |
130 | | Ruby | [Exception.full_message][ruby-full-message]の戻り値 |
131 |
132 |
138 |
139 | バックエンドは、必要に応じてStacktraceからより詳細な情報を抽出するために、[telemetry sdk resource][telemetry-sdk-resource]からのプラットフォーム情報と組み合わせて、スタックトレースを生成するために言語で指定された方法を使用することができます。
140 |
141 |
151 |
152 | [gcp-error-reporting]: https://cloud.google.com/error-reporting/reference/rest/v1beta1/projects.events/report
153 | [java-stacktrace]: https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#printStackTrace%28%29
154 | [python-stacktrace]: https://docs.python.org/3/library/traceback.html#traceback.format_exc
155 | [js-stacktrace]: https://v8.dev/docs/stack-trace-api
156 | [ruby-full-message]: https://ruby-doc.org/core-2.7.1/Exception.html#method-i-full_message
157 | [csharp-stacktrace]: https://docs.microsoft.com/en-us/dotnet/api/system.exception.tostring
158 | [go-stacktrace]: https://golang.org/pkg/runtime/debug/#Stack
159 | [telemetry-sdk-resource]:../../resource/semantic_conventions/README.md#telemetry-sdk
160 |
--------------------------------------------------------------------------------
/specification/specification/vendors.md:
--------------------------------------------------------------------------------
1 |
4 |
5 | # ベンダー
6 |
7 |
8 | 目次
9 |
10 |
16 |
17 | * [概要](#概要)
18 | * [Supports OpenTelemetry](#supports-opentelemetry)
19 | * [Implements OpenTelemetry](#implements-opentelemetry)
20 | * [資格](#資格)
21 |
22 |
23 |
24 |
25 |
28 |
29 | ## 概要
30 |
31 |
43 |
44 | OpenTelemetryプロジェクトは、API、SDK、プロトコル、セマンティックな規約の[仕様書](https://github.com/open-telemetry/opentelemetry-specification)と、いくつかの言語のためのそれぞれの実装の両方から構成されています。デフォルトのSDKの実装は、[高度な設定が可能](sdk-configuration.md)で拡張可能であり、例えば[Span Processor](trace/sdk.md#span-processor)を介して、特定のベンダーが必要とする追加ロジックを、カスタムSDKを実装することなく追加することができます。カスタムSDKを必要としないということは、ほとんどの言語において、ユーザーはすでに使用する実装を見つけることができ、もしそうでない場合は、新しい言語で実装するための十分に文書化された仕様に従うことができるということです。
45 |
46 |
51 |
52 | その目的は、ユーザーがベンダーを簡単に切り替えられるようにすることと、OpenTelemetry SDKを実装した言語が、OpenTelemetryのサポートを表明しているどのベンダーでも動作することを保証することです。
53 |
54 |
58 |
59 | このドキュメントでは、ベンダーが「OpenTelemetryをサポート(Supports OpenTelemetry)」または「OpenTelemetryを実装(Implements OpenTelemetry)」しているとみなされるために必要なことを説明します。
60 |
61 |
64 |
65 | ## Supports OpenTelemetry
66 |
67 |
71 |
72 | "Supports OpenTelemetry"とは、ベンダーが2つのメカニズムのうちの1つを通して、デフォルトのSDKの出力を受け入れる必要があることを意味します:
73 |
74 |
78 |
79 | - [OpenTelemetry Collector](https://github.com/open-telemetry/opentelemetry-collector/)および/またはOpenTelemetry SDK用のエクスポーターを提供する方法
80 | - [OpenTelemetryプロトコル](https://github.com/open-telemetry/opentelemetry-proto)用のレシーバーを構築する方法
81 |
82 |
83 |
86 |
87 | ## Implements OpenTelemetry
88 |
89 |
94 |
95 | カスタムSDKを実装しているベンダーは「Implements OpenTelemetry」と表示されます。カスタムSDKが任意である場合、そのベンダーは「Supports OpenTelemetry」と表示されます。
96 |
97 |
100 |
101 | ## 資格
102 |
103 |
110 |
111 | ベンダーは、サポートしているテレメトリの種類でOpenTelemetryのサポートという資格を得ることができます。例えば、OpenTelemetryプロトコルのエクスポートをメトリックのみで受け入れているベンダーは「Supports OpenTelemetry Metrics」と表示され、トレーシングのためだけにカスタムSDKを実装しているベンダーは「Implements OpenTelemetry Tracing」と表示されます。
112 |
113 |
--------------------------------------------------------------------------------