Developers want a named custom span around a downstream Function call from a code-enforcement Fn. Which approach matches the official custom-span path?
Select an answer to reveal the explanation.
Short Explanation
Custom spans are little named bookmarks you finish and error-tag, shipped with a Zipkin-capable library to the APM collector when tracing is on. Metrics and Audit are not span transport.
Full Explanation
The official custom-span path for Functions uses a Zipkin-capable library with supported FDK versions, honors OCI_TRACING_ENABLED (and tracing context) so the runtime detects tracing is on, and sends spans to the APM collector URL associated with the domain. That is how developers create a named custom span around a downstream Function call from a code-enforcement Fn—instrument in process, propagate context, export to APM—not by inventing metric-only or mesh-only substitutes.
Emitting the span only as an oci_faas metric statistic interval produces Monitoring data points, not an APM span in a trace tree. Writing the span exclusively into Audit logs with no collector URL misuses Audit and skips APM ingestion. Using Service Mesh sidecars as the only supported custom-span mechanism overstates mesh: Functions custom spans follow the Zipkin/APM path documented for Fn, not a mesh-only rule.
Exam caveat: unsupported FDK versions or ignoring OCI_TRACING_ENABLED yields missing custom spans even when application tracing looks enabled. Operational check: verify FDK meets the documented minimum, set/honor OCI_TRACING_ENABLED, emit a named Zipkin span around the downstream invoke to the APM collector URL, and confirm the span nests under the parent invocation in Trace Explorer.