Skip to content

Commit

Permalink
Added support for creating span links (#64)
Browse files Browse the repository at this point in the history
  • Loading branch information
clintonb committed Nov 11, 2023
1 parent dab6854 commit 8ffff2f
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,12 +142,17 @@ sleep_for() {

# Start a parent span
otel_trace_start_parent_span sleep_for 1

# Start a child span, associated to the parent
otel_trace_start_child_span sleep_for 2
# Start a child span with a custom name
local span_name="Sleeping"
otel_trace_start_child_span sleep_for 3

# Add a SpanLink
local linked_span=("$linkedTraceId" "$linkedSpanId" "$linkedTraceState")
otel_trace_start_child_span sleep_for 3

log_info "TraceId: ${OTEL_TRACE_ID}"
```

Expand Down
16 changes: 16 additions & 0 deletions library/otel_traces.sh
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,14 @@ otel_trace_start_parent_span() {
otel_trace_add_resourcespan_scopespans_spans_attrib_string "function" "${FUNCNAME[1]}()"
fi

if [ -n "${linked_span-}" ]; then
local linkedTraceId=${linked_span[0]}
local linkedTraceState=${linked_span[1]}
local linkedSpanId=${linked_span[2]}
log_debug "linkedTraceId: $linkedTraceId, linkedTraceState: $linkedTraceState, linkedSpanId: $linkedSpanId"
otel_trace_add_resourcespan_scopespans_spans_link $linkedTraceId $linkedTraceState $linkedSpanId
fi

if [ -z "${OTEL_LOG_LEVEL-}" ]; then
log_debug "curling ${OTEL_EXPORTER_OTEL_ENDPOINT}/v1/traces"
net_client_post "${otel_trace_resource_spans}" "${OTEL_EXPORTER_OTEL_ENDPOINT}/v1/traces"
Expand Down Expand Up @@ -171,6 +179,14 @@ otel_trace_start_child_span() {

otel_trace_add_resourcespan_scopespans_spans_attrib_string "code.url" "${PWD}/${0##*/}#L${BASH_LINENO[0]}"

if [ -n "${linked_span-}" ]; then
local linkedTraceId=${linked_span[0]}
local linkedTraceState=${linked_span[1]}
local linkedSpanId=${linked_span[2]}
log_debug "linkedTraceId: $linkedTraceId, linkedTraceState: $linkedTraceState, linkedSpanId: $linkedSpanId"
otel_trace_add_resourcespan_scopespans_spans_link $linkedTraceId $linkedTraceState $linkedSpanId
fi

if [ -z "${OTEL_LOG_LEVEL-}" ]; then
net_client_post "${otel_trace_resource_spans}" "${OTEL_EXPORTER_OTEL_ENDPOINT}/v1/traces"
else
Expand Down
21 changes: 21 additions & 0 deletions library/otel_traces_schema.sh
Original file line number Diff line number Diff line change
Expand Up @@ -155,3 +155,24 @@ EOF

otel_trace_resource_spans=$(jq -r ".resourceSpans[].scopeSpans[].spans[-1].attributes += [$attribute]" <<< "$otel_trace_resource_spans")
}

otel_trace_add_resourcespan_scopespans_spans_link() {
local trace_id="${1}"
local span_id="${2}"
local trace_state=""

if [ -n "${3-}" ]; then
trace_state="${3}"
fi

local link=$(cat <<EOF
{
"trace_id": "$trace_id",
"span_id": "$span_id",
"trace_state": "$trace_state",
}
EOF
)

otel_trace_resource_spans=$(jq -r ".resourceSpans[].scopeSpans[].spans[-1].links += [$link]" <<< "$otel_trace_resource_spans")
}

0 comments on commit 8ffff2f

Please sign in to comment.