Mappings
この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/otel/profiles/mappings/
翻訳元: open-telemetry/opentelemetry-specification v1.60.0(コミット 29ae8c7)
ステータス: アルファ(Alpha)
この文書は、Mappingメッセージの必須属性を定義します。
属性
Mappingを表すメッセージは、以下のprocessに関する属性のうち少なくとも1つを持たなければなりません(MUST)。
process.executable.build_id.gnuprocess.executable.build_id.goprocess.executable.build_id.htlhash
可能であれば、上記に挙げたすべての属性がMappingに存在すべきです(SHOULD)。相互運用性を高めるため、すべてのMappingにprocess.executable.build_id.htlhashが存在することが推奨されます(RECOMMENDED)。process.executable.build_id.goの用途と目的については、golang/go#68652を参照してください。
process.executable.build_id.htlhashのアルゴリズム
GNUやGoのbuild_idの値が取り除かれている、あるいは利用できない環境があります。例えば、Dockerのベースとしてよく使われるAlpine Linuxなどです。そのため、また相互運用性を高めるため、ファイルの先頭と末尾のページをそのファイルの長さと合わせてハッシュ化する、決定的なbuild_id生成アルゴリズムが以下のように定義されています。
Input ← Concat(File[:4096], File[-4096:], BigEndianUInt64(Len(File)))
Digest ← SHA256(Input)
BuildID ← Digest[:16]
ここでInputは、ファイルの最初と最後の4096バイト(重複してもよく、パディングはしない)と、ファイル長のビッグエンディアン8バイトシリアライズを連結したものです。得られるBuildIDは、そのハッシュダイジェストを16バイト(128ビット)に切り詰めた16進文字列の形式です。