End to end tracing.
Tracing operations through SDK and the Cluster.
◆ lcb_cmdanalytics_parent_span()
lcb_STATUS lcb_cmdanalytics_parent_span |
( |
lcb_CMDANALYTICS * | cmd, |
|
|
lcbtrace_SPAN * | span ) |
Associate parent tracing span with the Analytics request.
- Parameters
-
cmd | the command |
span | parent span |
- Attach parent tracing span to request object.
lcb_CMDANALYTICS* cmd;
lcb_cmdanalytics_create(&cmd);
lcb_analytics_parentspan(instance, span);
lcb_error_t err = lcb_analytics_query(instance, cookie, cmd);
◆ lcb_cmdsearch_parent_span()
lcb_STATUS lcb_cmdsearch_parent_span |
( |
lcb_CMDSEARCH * | cmd, |
|
|
lcbtrace_SPAN * | span ) |
Associate parent tracing span with the FTS request.
- Parameters
-
cmd | the command |
span | parent span |
- Attach parent tracing span to request object.
lcb_CMDSEARCH cmd;
lcb_cmdsearch_create(&cmd);
lcb_error_t err =
lcb_search(instance, cookie, cmd);
if (err == LCB_SUCCESS) {
}
lcb_STATUS lcb_search(lcb_INSTANCE *instance, void *cookie, const lcb_CMDSEARCH *cmd)
Issue a full-text query.
lcb_STATUS lcb_cmdsearch_parent_span(lcb_CMDSEARCH *cmd, lcbtrace_SPAN *span)
Associate parent tracing span with the FTS request.
◆ lcb_cmdquery_parent_span()
Associate parent tracing span with the N1QL request.
- Parameters
-
cmd | the command |
span | parent span |
- Attach parent tracing span to request object.
lcb_error_t err =
lcb_query(instance, cookie, cmd);
if (err == LCB_SUCCESS) {
}
lcb_STATUS lcb_query(lcb_INSTANCE *instance, void *cookie, const lcb_CMDQUERY *cmd)
Execute a N1QL query.
lcb_STATUS lcb_cmdquery_create(lcb_CMDQUERY **cmd)
Create a new lcb_CMDQUERY object.
struct lcb_CMDQUERY_ lcb_CMDQUERY
Opaque query command structure.
Definition couchbase.h:2850
lcb_STATUS lcb_cmdquery_parent_span(lcb_CMDQUERY *cmd, lcbtrace_SPAN *span)
Associate parent tracing span with the N1QL request.
◆ lcb_get_tracer()
Get current tracer of the connection.
- Parameters
-
instance | current connection |
- Returns
- tracer
- Stability
- Committed
◆ lcb_set_tracer()
◆ lcbtrace_new()
Create default libcouchbase tracer instance.
- Parameters
-
- Returns
- new tracer or NULL when nothing has been created.
- Stability
- Committed
◆ lcbtrace_destroy()
◆ lcbtrace_now()
lcb_U64 lcbtrace_now |
( |
void | | ) |
|
Get current timestamp.
- Returns
- current wall clock time in microseconds
- Stability
- Committed
◆ lcbtrace_span_start()
lcbtrace_SPAN * lcbtrace_span_start |
( |
lcbtrace_TRACER * | tracer, |
|
|
const char * | operation, |
|
|
lcb_U64 | now, |
|
|
lcbtrace_REF * | ref ) |
◆ lcbtrace_span_wrap()
lcb_STATUS lcbtrace_span_wrap |
( |
lcbtrace_TRACER * | tracer, |
|
|
const char * | opname, |
|
|
uint64_t | start, |
|
|
void * | external_span, |
|
|
lcbtrace_SPAN ** | lcbspan ) |
Wrap external span.
If using a custom tracer which has its own span representation, you can create an lcbtrace_SPAN that wraps it. This is useful when setting parent spans.
- Parameters
-
tracer | tracer instance. |
operation | operation code. |
start | timestamp from the external_span. |
external_span | pointer to the external span. |
lcbspan | pointer to a new lcbtrace_SPAN* which wraps external_span. |
- Returns
- LCB_SUCCESS when successful.
- Stability
- Volatile
◆ lcbtrace_span_finish()
void lcbtrace_span_finish |
( |
lcbtrace_SPAN * | span, |
|
|
lcb_U64 | now ) |
◆ lcbtrace_span_get_start_ts()
lcb_U64 lcbtrace_span_get_start_ts |
( |
lcbtrace_SPAN * | span | ) |
|
◆ lcbtrace_span_get_finish_ts()
lcb_U64 lcbtrace_span_get_finish_ts |
( |
lcbtrace_SPAN * | span | ) |
|
◆ lcbtrace_span_is_orphaned()
int lcbtrace_span_is_orphaned |
( |
lcbtrace_SPAN * | span | ) |
|
Check if the span is orphaned.
Spans might be marked as orphaned, when the library has discarded request structure without waiting for server response (e.g. on timeout).
- Parameters
-
- Returns
- non-zero if span is orphaned.
- Stability
- Committed
◆ lcbtrace_span_get_operation()
const char * lcbtrace_span_get_operation |
( |
lcbtrace_SPAN * | span | ) |
|
◆ lcbtrace_span_set_service()
Set the service for the span.
Threshold logging uses this to determine which threshold to apply when deciding whether or not a span has taken too long and should be logged. This only applies to outer spans. See lcbtrace_span_set_is_outer for setting that.
- Parameters
-
span | the span to set the service on. |
svc | the desired service. |
- Returns
- LCB_SUCCESS when successful
- Stability
- Volatile
◆ lcbtrace_span_get_service()
Get the service for the span.
Threshold logging uses this to determine which threshold to apply when deciding whether or not a span has taken too long and should be logged. This only applies to outer spans. See lcbtrace_span_set_is_outer for setting that.
- Parameters
-
span | the span. |
svc | points to the the span's service, or to LCB_SERVICE__MAX if one is not set. |
- Returns
- LCB_SUCCESS when successful.
- Stability
- Volatile
◆ lcbtrace_span_get_is_outer()
lcb_STATUS lcbtrace_span_get_is_outer |
( |
lcbtrace_SPAN * | span, |
|
|
int * | outer ) |
Get outer flag on span.
See lcbtrace-span_get_is_outer for description of flag.
- Parameters
-
span | span instance |
outer | pointer to the value of the flag. |
- Returns
- LCB_SUCCESS when successful.
- Stability
- Volatile
◆ lcbtrace_span_set_is_outer()
lcb_STATUS lcbtrace_span_set_is_outer |
( |
lcbtrace_SPAN * | span, |
|
|
int | outer ) |
Set outer flag on span.
When libcouchbase is passed a parent span with this flag set, it will use it as its outer span for the operation, adding the appropriate tags. However, it will not finish the span when calling the callback, like it does when it creates its own outer span. The finish is up to the caller, perhaps allowing for extra spans accounting for the processing within the callback, or elsewhere.
- Parameters
-
span | the span to modify. |
outer | when set, span is considered an outer span, whose finish time will be managed by the caller. |
- Returns
- LCB_SUCCESS when successful.
- Stability
- Volatile
◆ lcbtrace_span_get_is_encoding()
lcb_STATUS lcbtrace_span_get_is_encoding |
( |
lcbtrace_SPAN * | span, |
|
|
int * | encoding ) |
Get encoding flag on span.
See lcbtrace-span_get_is_encoding for description of flag.
- Parameters
-
span | span instance |
encoding | pointer to the value of the flag. |
- Returns
- LCB_SUCCESS when successful.
- Stability
- Volatile
◆ lcbtrace_span_set_is_encode()
lcb_STATUS lcbtrace_span_set_is_encode |
( |
lcbtrace_SPAN * | span, |
|
|
int | encode ) |
Set encoding flag on span.
When libcouchbase sees an encoding span has finished, it propogates the duration up to the outer span. This is output by the threshold logging tracer.
- Parameters
-
span | the span to modify. |
encode | when set, span is considered an encode span, whose duration will be output by the threshold logging tracer. |
- Returns
- LCB_SUCCESS when successful.
- Stability
- Volatile
◆ lcbtrace_span_get_is_dispatch()
lcb_STATUS lcbtrace_span_get_is_dispatch |
( |
lcbtrace_SPAN * | span, |
|
|
int * | dispatch ) |
Get dispatch flag on span.
See lcbtrace-span_get_is_dispatch for description of flag.
- Parameters
-
span | span instance |
dispatch | pointer to the value of the flag. |
- Returns
- LCB_SUCCESS when successful.
- Stability
- Volatile
◆ lcbtrace_span_set_is_dispatch()
lcb_STATUS lcbtrace_span_set_is_dispatch |
( |
lcbtrace_SPAN * | span, |
|
|
int | dispatch ) |
Set dispatch flag on span.
When a span is marked as being a dispatch span, libcouchbase will copy the tags into the parent span as well. This is used internally, for threshold and orphan logging. If an external external tracer is being used, where the callbacks in the lcbtrace_TRACER is using the v1 callbacks, this copying of the tags will not be done.
- Parameters
-
span | the span to modify. |
dispatch | when set, span is considered a dispatch span. |
- Returns
- LCB_SUCCESS when successful.
- Stability
- Volatile
◆ lcbtrace_span_get_span_id()
lcb_U64 lcbtrace_span_get_span_id |
( |
lcbtrace_SPAN * | span | ) |
|
◆ lcbtrace_span_get_trace_id()
lcb_U64 lcbtrace_span_get_trace_id |
( |
lcbtrace_SPAN * | span | ) |
|
◆ lcbtrace_span_get_parent()
lcbtrace_SPAN * lcbtrace_span_get_parent |
( |
lcbtrace_SPAN * | span | ) |
|
◆ lcbtrace_span_get_tag_str()
lcb_STATUS lcbtrace_span_get_tag_str |
( |
lcbtrace_SPAN * | span, |
|
|
const char * | name, |
|
|
char ** | value, |
|
|
size_t * | nvalue ) |
Get value of the string tag of the span.
- Parameters
-
span | span instance |
name | name of the tag |
value | pointer to result string |
nvalue | pointer to length of the result string |
- Returns
- LCB_SUCCESS if value exists and was written to result pointer
- Stability
- Committed
- Examples
- example/tracing/tracing.c, and example/tracing/views.c.
◆ lcbtrace_span_get_tag_uint64()
lcb_STATUS lcbtrace_span_get_tag_uint64 |
( |
lcbtrace_SPAN * | span, |
|
|
const char * | name, |
|
|
lcb_U64 * | value ) |
◆ lcbtrace_span_get_tag_double()
lcb_STATUS lcbtrace_span_get_tag_double |
( |
lcbtrace_SPAN * | span, |
|
|
const char * | name, |
|
|
double * | value ) |
Get value of the double tag of the span.
- Parameters
-
span | span instance |
name | name of the tag |
value | pointer to result |
- Returns
- LCB_SUCCESS if value exists and was written to result pointer
- Stability
- Committed
◆ lcbtrace_span_get_tag_bool()
lcb_STATUS lcbtrace_span_get_tag_bool |
( |
lcbtrace_SPAN * | span, |
|
|
const char * | name, |
|
|
int * | value ) |
Get value of the boolean tag of the span.
- Parameters
-
span | span instance |
name | name of the tag |
value | pointer to result |
- Returns
- LCB_SUCCESS if value exists and was written to result pointer
- Stability
- Committed
◆ lcbtrace_span_add_tag_str()
void lcbtrace_span_add_tag_str |
( |
lcbtrace_SPAN * | span, |
|
|
const char * | name, |
|
|
const char * | value ) |
◆ lcbtrace_span_add_tag_uint64()
void lcbtrace_span_add_tag_uint64 |
( |
lcbtrace_SPAN * | span, |
|
|
const char * | name, |
|
|
lcb_U64 | value ) |
Add integer tag to span.
- Parameters
-
span | span instance |
name | name of the tag |
value | value of the tag |
- Stability
- Committed
◆ lcbtrace_span_add_tag_double()
void lcbtrace_span_add_tag_double |
( |
lcbtrace_SPAN * | span, |
|
|
const char * | name, |
|
|
double | value ) |
Add double tag to span.
- Parameters
-
span | span instance |
name | name of the tag |
value | value of the tag |
- Stability
- Committed
◆ lcbtrace_span_add_tag_bool()
void lcbtrace_span_add_tag_bool |
( |
lcbtrace_SPAN * | span, |
|
|
const char * | name, |
|
|
int | value ) |
Add boolean tag to span.
- Parameters
-
span | span instance |
name | name of the tag |
value | value of the tag. 0 if false, otherwise – true. |
- Stability
- Committed
◆ lcbtrace_TRACER
Data Fields |
lcb_U16 |
version |
version of the structure, current value is 0 |
lcb_U64 |
flags |
tracer-specific flags |
void * |
cookie |
opaque pointer (e.g. pointer to wrapper structure)
|
void(*)(struct lcbtrace_TRACER *tracer) |
destructor |
destructor function or NULL, if it is not necessary |
union lcbtrace_TRACER.v |
v |
|
◆ ldcptrace_REPORTER
struct ldcptrace_REPORTER |
Data Fields |
void * |
state |
|
void(*)(void *state, lcbtrace_SPAN *span) |
report |
|
◆ LCBTRACE_TAG_LOCAL_ID
#define LCBTRACE_TAG_LOCAL_ID |
Connection id used when creating a connection against the cluster.
Note this is only used in KV spans.
◆ LCBTRACE_TAG_LOCAL_ADDRESS
#define LCBTRACE_TAG_LOCAL_ADDRESS |
◆ LCBTRACE_TAG_LOCAL_PORT
#define LCBTRACE_TAG_LOCAL_PORT |
The local socket port.
To be added to dispatch spans when the local socket is available.
◆ LCBTRACE_TAG_PEER_ADDRESS
#define LCBTRACE_TAG_PEER_ADDRESS |
◆ LCBTRACE_TAG_PEER_PORT
#define LCBTRACE_TAG_PEER_PORT |
The remote socket port.
To be added to dispatch spans when the local socket is available.
◆ LCBTRACE_TAG_STATEMENT
#define LCBTRACE_TAG_STATEMENT |
The statement used in this span, when applicable.
This is set for Query and Analytics.
◆ LCBTRACE_TAG_OPERATION
#define LCBTRACE_TAG_OPERATION |
The operation for the span.
Set unless the db.statement key has been set.
◆ LCB_CMD_SET_TRACESPAN
#define LCB_CMD_SET_TRACESPAN |
( |
| cmd, |
|
|
| span ) |
Sets the tracing context for the command.
- Parameters
-
cmd | the command structure |
ctx | the lcbtrace_SPAN pointer |
- Stability
- Committed
◆ lcbtrace_SERVICE
Service the span is associated with.
Used in threshold logging tracer