この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/semconv/faas/faas-exceptions/

翻訳元: open-telemetry/semantic-conventions v1.44.0(コミット e10a930

FaaS例外に関するセマンティック規約

ステータス: Development

この文書では、FaaSの呼び出しにおいて例外を記録するためのセマンティック規約を定義します。

FaaS呼び出しの例外

Status: Development

イベント名はfaas.invocation.exceptionでなければなりません(MUST)。

このイベントは、アプリケーションエラー、内部障害、または関数が正常に完了することを妨げるその他の例外など、FaaS関数の呼び出し中に発生した例外を表します。

このイベントは、FaaS関数の呼び出し中に例外が発生した場合に記録されるべきです(SHOULD)。計装は、このイベントを記録する際にseverityをERROR(severity number 17)に設定すべきです(SHOULD)。計装は、対応するFaaSスパンで捕捉された属性で例外イベントを補完するための設定オプションを提供してもかまいません(MAY)。

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
exception.messageStableConditionally Required [1]string例外メッセージ。[2]Division by zero; Can't convert 'int' object to str implicitly
exception.typeStableConditionally Required [3]string例外の型(該当する場合はその完全修飾クラス名)。この動的な型に対応する言語では、静的な型よりも動的な型を優先すべきです。[4]java.net.ConnectException; OSError
exception.stacktraceStableRecommendedstring言語ランタイムの自然な表現による文字列としてのスタックトレース。この表現は、各言語の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)

[1] exception.message: exception.typeが設定されていない場合は必須で、それ以外の場合は推奨です。

[2] exception.message:

[!WARNING]

この属性には機密情報が含まれる可能性があります。

[3] exception.type: exception.messageが設定されていない場合は必須で、それ以外の場合は推奨です。

[4] exception.type: 記録された例外の型が、失敗の分類にとって意味を持たないラッパーである場合、計装は内側の例外の型を代わりに使用してもかまいません(MAY)。たとえばGoでは、ラッパー型が失敗の分類に役立たない場合、%wを使ってfmt.Errorfで作成されたエラーをアンラップしてもかまいません(MAY)。