aws_xray_sdk.core package¶
Subpackages¶
- aws_xray_sdk.core.emitters package
- aws_xray_sdk.core.exceptions package
- aws_xray_sdk.core.models package
- Submodules
- aws_xray_sdk.core.models.default_dynamic_naming module
- aws_xray_sdk.core.models.dummy_entities module
- aws_xray_sdk.core.models.entity module
EntityEntity.add_error_flag()Entity.add_exception()Entity.add_fault_flag()Entity.add_subsegment()Entity.add_throttle_flag()Entity.apply_status_code()Entity.close()Entity.get_origin_trace_header()Entity.put_annotation()Entity.put_http_meta()Entity.put_metadata()Entity.remove_subsegment()Entity.save_origin_trace_header()Entity.serialize()Entity.set_aws()
- aws_xray_sdk.core.models.facade_segment module
FacadeSegmentFacadeSegment.add_error_flag()FacadeSegment.add_exception()FacadeSegment.add_fault_flag()FacadeSegment.add_throttle_flag()FacadeSegment.apply_status_code()FacadeSegment.close()FacadeSegment.decrement_ref_counter()FacadeSegment.increment()FacadeSegment.put_annotation()FacadeSegment.put_http_meta()FacadeSegment.put_metadata()FacadeSegment.ready_to_send()FacadeSegment.serialize()FacadeSegment.set_aws()FacadeSegment.set_user()
- aws_xray_sdk.core.models.http module
- aws_xray_sdk.core.models.noop_traceid module
- aws_xray_sdk.core.models.segment module
- aws_xray_sdk.core.models.subsegment module
- aws_xray_sdk.core.models.throwable module
- aws_xray_sdk.core.models.trace_header module
- aws_xray_sdk.core.models.traceid module
- Module contents
- aws_xray_sdk.core.plugins package
- aws_xray_sdk.core.sampling package
- Subpackages
- Submodules
- aws_xray_sdk.core.sampling.connector module
- aws_xray_sdk.core.sampling.reservoir module
- aws_xray_sdk.core.sampling.rule_cache module
- aws_xray_sdk.core.sampling.rule_poller module
- aws_xray_sdk.core.sampling.sampler module
- aws_xray_sdk.core.sampling.sampling_rule module
SamplingRuleSamplingRule.borrow_countSamplingRule.can_borrowSamplingRule.ever_matched()SamplingRule.increment_borrow_count()SamplingRule.increment_request_count()SamplingRule.increment_sampled_count()SamplingRule.is_default()SamplingRule.match()SamplingRule.merge()SamplingRule.nameSamplingRule.prioritySamplingRule.rateSamplingRule.request_countSamplingRule.reservoirSamplingRule.sampled_countSamplingRule.snapshot_statistics()SamplingRule.time_to_report()
- aws_xray_sdk.core.sampling.target_poller module
- Module contents
- aws_xray_sdk.core.streaming package
- aws_xray_sdk.core.utils package
Submodules¶
aws_xray_sdk.core.async_context module¶
- class aws_xray_sdk.core.async_context.AsyncContext(*args, loop=None, use_task_factory=True, **kwargs)¶
Bases:
ContextAsync Context for storing segments.
Inherits nearly everything from the main Context class. Replaces threading.local with a task based local storage class, Also overrides clear_trace_entities
- clear_trace_entities()¶
Clear all trace_entities stored in the task local context.
- class aws_xray_sdk.core.async_context.TaskLocalStorage(loop=None)¶
Bases:
objectSimple task local storage
- clear()¶
- aws_xray_sdk.core.async_context.task_factory(loop, coro)¶
Task factory function
Fuction closely mirrors the logic inside of asyncio.BaseEventLoop.create_task. Then if there is a current task and the current task has a context then share that context with the new task
aws_xray_sdk.core.async_recorder module¶
- class aws_xray_sdk.core.async_recorder.AsyncAWSXRayRecorder¶
Bases:
AWSXRayRecorder- capture_async(name=None)¶
A decorator that records enclosed function in a subsegment. It only works with asynchronous functions.
params str name: The name of the subsegment. If not specified the function name will be used.
- in_segment_async(name=None, **segment_kwargs)¶
Return a segment async context manger.
- in_subsegment_async(name=None, **subsegment_kwargs)¶
Return a subsegment async context manger.
- async record_subsegment_async(wrapped, instance, args, kwargs, name, namespace, meta_processor)¶
- class aws_xray_sdk.core.async_recorder.AsyncSegmentContextManager(recorder, name=None, **segment_kwargs)¶
Bases:
SegmentContextManager
- class aws_xray_sdk.core.async_recorder.AsyncSubsegmentContextManager(recorder, name=None, **subsegment_kwargs)¶
Bases:
SubsegmentContextManager
aws_xray_sdk.core.context module¶
- class aws_xray_sdk.core.context.Context(context_missing='RUNTIME_ERROR')¶
Bases:
objectThe context storage class to store trace entities(segments/subsegments). The default implementation uses threadlocal to store these entities. It also provides interfaces to manually inject trace entities which will replace the current stored entities and to clean up the storage.
For any data access or data mutation, if there is no active segment present if will use user-defined behavior to handle such case. By default it throws an runtime error.
This data structure is thread-safe.
- clear_trace_entities()¶
clear all trace_entities stored in the local context. In case of using threadlocal to store trace entites, it will clean up all trace entities created by the current thread.
- property context_missing¶
- end_segment(end_time=None)¶
End the current active segment.
- Parameters:
end_time (int) – epoch in seconds. If not specified the current system time will be used.
- end_subsegment(end_time=None)¶
End the current active segment. Return False if there is no subsegment to end.
- Parameters:
end_time (int) – epoch in seconds. If not specified the current system time will be used.
- get_trace_entity()¶
Return the current trace entity(segment/subsegment). If there is none, it behaves based on pre-defined
context_missingstrategy. If the SDK is disabled, returns a DummySegment
- handle_context_missing()¶
Called whenever there is no trace entity to access or mutate.
- put_segment(segment)¶
Store the segment created by
xray_recorderto the context. It overrides the current segment if there is already one.
- put_subsegment(subsegment)¶
Store the subsegment created by
xray_recorderto the context. If you put a new subsegment while there is already an open subsegment, the new subsegment becomes the child of the existing subsegment.
- set_trace_entity(trace_entity)¶
Store the input trace_entity to local context. It will overwrite all existing ones if there is any.
aws_xray_sdk.core.daemon_config module¶
- class aws_xray_sdk.core.daemon_config.DaemonConfig(daemon_address='127.0.0.1:2000')¶
Bases:
objectThe class that stores X-Ray daemon configuration about the ip address and port for UDP and TCP port. It gets the address string from
AWS_TRACING_DAEMON_ADDRESSand then from recorder’s configuration fordaemon_address. A notation of ‘127.0.0.1:2000’ or ‘tcp:127.0.0.1:2000 udp:127.0.0.2:2001’ are both acceptable. The former one means UDP and TCP are running at the same address. By default it assumes a X-Ray daemon running at 127.0.0.1:2000 listening to both UDP and TCP traffic.- property tcp_ip¶
- property tcp_port¶
- property udp_ip¶
- property udp_port¶
aws_xray_sdk.core.lambda_launcher module¶
- class aws_xray_sdk.core.lambda_launcher.LambdaContext¶
Bases:
ContextLambda service will generate a segment for each function invocation which cannot be mutated. The context doesn’t keep any manually created segment but instead every time
get_trace_entity()gets called it refresh the facade segment based on environment variables set by Lambda worker.- property context_missing¶
- end_segment(end_time=None)¶
No-op.
- get_trace_entity()¶
Return the current trace entity(segment/subsegment). If there is none, it behaves based on pre-defined
context_missingstrategy. If the SDK is disabled, returns a DummySegment
- handle_context_missing()¶
No-op.
- put_segment(segment)¶
No-op.
- put_subsegment(subsegment)¶
Refresh the facade segment every time this function is invoked to prevent a new subsegment from being attached to a leaked segment/subsegment.
- aws_xray_sdk.core.lambda_launcher.check_in_lambda()¶
Return None if SDK is not loaded in AWS Lambda worker. Otherwise drop a touch file and return a lambda context.
aws_xray_sdk.core.patcher module¶
- aws_xray_sdk.core.patcher.patch(modules_to_patch, raise_errors=True, ignore_module_patterns=None)¶
- aws_xray_sdk.core.patcher.patch_all(double_patch=False)¶
aws_xray_sdk.core.recorder module¶
- class aws_xray_sdk.core.recorder.AWSXRayRecorder¶
Bases:
objectA global AWS X-Ray recorder that will begin/end segments/subsegments and send them to the X-Ray daemon. This recorder is initialized during loading time so you can use:
from aws_xray_sdk.core import xray_recorder
in your module to access it
- begin_segment(name=None, traceid=None, parent_id=None, sampling=None)¶
Begin a segment on the current thread and return it. The recorder only keeps one segment at a time. Create the second one without closing existing one will overwrite it.
- begin_subsegment(name, namespace='local')¶
Begin a new subsegment. If there is open subsegment, the newly created subsegment will be the child of latest opened subsegment. If not, it will be the child of the current open segment.
- capture(name=None)¶
A decorator that records enclosed function in a subsegment. It only works with synchronous functions.
params str name: The name of the subsegment. If not specified the function name will be used.
- clear_trace_entities()¶
A pass through method to
context.clear_trace_entities().
- configure(sampling=None, plugins=None, context_missing=None, sampling_rules=None, daemon_address=None, service=None, context=None, emitter=None, streaming=None, dynamic_naming=None, streaming_threshold=None, max_trace_back=None, sampler=None, stream_sql=True)¶
Configure global X-Ray recorder.
Configure needs to run before patching thrid party libraries to avoid creating dangling subsegment. :param bool sampling: If sampling is enabled, every time the recorder
creates a segment it decides whether to send this segment to the X-Ray daemon. This setting is not used if the recorder is running in AWS Lambda. The recorder always respect the incoming sampling decisions regardless of this setting.
- Parameters:
sampling_rules – Pass a set of local custom sampling rules. Can be an absolute path of the sampling rule config json file or a dictionary that defines those rules. This will also be the fallback rules in case of centralized sampling opted-in while the cetralized sampling rules are not available.
sampler – The sampler used to make sampling decisions. The SDK provides two built-in samplers. One is centralized rules based and the other is local rules based. The former is the default.
plugins (tuple) – plugins that add extra metadata to each segment. Currently available plugins are EC2Plugin, ECS plugin and ElasticBeanstalkPlugin. If you want to disable all previously enabled plugins, pass an empty tuple
().context_missing (str) – recorder behavior when it tries to mutate a segment or add a subsegment but there is no active segment. RUNTIME_ERROR means the recorder will raise an exception. LOG_ERROR means the recorder will only log the error and do nothing.
daemon_address (str) – The X-Ray daemon address where the recorder sends data to.
service (str) – default segment name if creating a segment without providing a name.
context – You can pass your own implementation of context storage for active segment/subsegment by overriding the default
Contextclass.emitter – The emitter that sends a segment/subsegment to the X-Ray daemon. You can override
UDPEmitterclass.dynamic_naming – a string that defines a pattern that host names should match. Alternatively you can pass a module which overrides
DefaultDynamicNamingmodule.streaming – The streaming module to stream out trace documents when they grow too large. You can override
DefaultStreamingclass to have your own implementation of the streaming process.streaming_threshold – If breaks within a single segment it will start streaming out children subsegments. By default it is the maximum number of subsegments within a segment.
max_trace_back (int) – The maxinum number of stack traces recorded by auto-capture. Lower this if a single document becomes too large.
stream_sql (bool) – Whether SQL query texts should be streamed.
Environment variables AWS_XRAY_DAEMON_ADDRESS, AWS_XRAY_CONTEXT_MISSING and AWS_XRAY_TRACING_NAME respectively overrides arguments daemon_address, context_missing and service.
- property context¶
- current_segment()¶
Return the currently active segment. In a multithreading environment, this will make sure the segment returned is the one created by the same thread.
- current_subsegment()¶
Return the latest opened subsegment. In a multithreading environment, this will make sure the subsegment returned is one created by the same thread.
- property dynamic_naming¶
- property emitter¶
- property enabled¶
- end_segment(end_time=None)¶
End the current segment and send it to X-Ray daemon if it is ready to send. Ready means segment and all its subsegments are closed.
- Parameters:
end_time (float) – segment completion in unix epoch in seconds.
- end_subsegment(end_time=None)¶
End the current active subsegment. If this is the last one open under its parent segment, the entire segment will be sent.
- Parameters:
end_time (float) – subsegment compeletion in unix epoch in seconds.
- get_trace_entity()¶
A pass through method to
context.get_trace_entity().
- in_segment(name=None, **segment_kwargs)¶
Return a segment context manger.
- in_subsegment(name=None, **subsegment_kwargs)¶
Return a subsegment context manger.
- is_sampled()¶
Check if the current trace entity is sampled or not. Return False if no active entity found.
- property max_trace_back¶
- put_annotation(key, value)¶
Annotate current active trace entity with a key-value pair. Annotations will be indexed for later search query.
- put_metadata(key, value, namespace='default')¶
Add metadata to the current active trace entity. Metadata is not indexed but can be later retrieved by BatchGetTraces API.
- record_subsegment(wrapped, instance, args, kwargs, name, namespace, meta_processor)¶
- property sampler¶
- property sampling¶
- property service¶
- set_trace_entity(trace_entity)¶
A pass through method to
context.set_trace_entity().
- property stream_sql¶
- stream_subsegments()¶
Stream all closed subsegments to the daemon and remove reference to the parent segment. No-op for a not sampled segment.
- property streaming¶
- property streaming_threshold¶
Proxy method to Streaming module’s streaming_threshold property.
Module contents¶
- class aws_xray_sdk.core.AWSXRayRecorder¶
Bases:
objectA global AWS X-Ray recorder that will begin/end segments/subsegments and send them to the X-Ray daemon. This recorder is initialized during loading time so you can use:
from aws_xray_sdk.core import xray_recorder
in your module to access it
- begin_segment(name=None, traceid=None, parent_id=None, sampling=None)¶
Begin a segment on the current thread and return it. The recorder only keeps one segment at a time. Create the second one without closing existing one will overwrite it.
- begin_subsegment(name, namespace='local')¶
Begin a new subsegment. If there is open subsegment, the newly created subsegment will be the child of latest opened subsegment. If not, it will be the child of the current open segment.
- capture(name=None)¶
A decorator that records enclosed function in a subsegment. It only works with synchronous functions.
params str name: The name of the subsegment. If not specified the function name will be used.
- clear_trace_entities()¶
A pass through method to
context.clear_trace_entities().
- configure(sampling=None, plugins=None, context_missing=None, sampling_rules=None, daemon_address=None, service=None, context=None, emitter=None, streaming=None, dynamic_naming=None, streaming_threshold=None, max_trace_back=None, sampler=None, stream_sql=True)¶
Configure global X-Ray recorder.
Configure needs to run before patching thrid party libraries to avoid creating dangling subsegment. :param bool sampling: If sampling is enabled, every time the recorder
creates a segment it decides whether to send this segment to the X-Ray daemon. This setting is not used if the recorder is running in AWS Lambda. The recorder always respect the incoming sampling decisions regardless of this setting.
- Parameters:
sampling_rules – Pass a set of local custom sampling rules. Can be an absolute path of the sampling rule config json file or a dictionary that defines those rules. This will also be the fallback rules in case of centralized sampling opted-in while the cetralized sampling rules are not available.
sampler – The sampler used to make sampling decisions. The SDK provides two built-in samplers. One is centralized rules based and the other is local rules based. The former is the default.
plugins (tuple) – plugins that add extra metadata to each segment. Currently available plugins are EC2Plugin, ECS plugin and ElasticBeanstalkPlugin. If you want to disable all previously enabled plugins, pass an empty tuple
().context_missing (str) – recorder behavior when it tries to mutate a segment or add a subsegment but there is no active segment. RUNTIME_ERROR means the recorder will raise an exception. LOG_ERROR means the recorder will only log the error and do nothing.
daemon_address (str) – The X-Ray daemon address where the recorder sends data to.
service (str) – default segment name if creating a segment without providing a name.
context – You can pass your own implementation of context storage for active segment/subsegment by overriding the default
Contextclass.emitter – The emitter that sends a segment/subsegment to the X-Ray daemon. You can override
UDPEmitterclass.dynamic_naming – a string that defines a pattern that host names should match. Alternatively you can pass a module which overrides
DefaultDynamicNamingmodule.streaming – The streaming module to stream out trace documents when they grow too large. You can override
DefaultStreamingclass to have your own implementation of the streaming process.streaming_threshold – If breaks within a single segment it will start streaming out children subsegments. By default it is the maximum number of subsegments within a segment.
max_trace_back (int) – The maxinum number of stack traces recorded by auto-capture. Lower this if a single document becomes too large.
stream_sql (bool) – Whether SQL query texts should be streamed.
Environment variables AWS_XRAY_DAEMON_ADDRESS, AWS_XRAY_CONTEXT_MISSING and AWS_XRAY_TRACING_NAME respectively overrides arguments daemon_address, context_missing and service.
- property context¶
- current_segment()¶
Return the currently active segment. In a multithreading environment, this will make sure the segment returned is the one created by the same thread.
- current_subsegment()¶
Return the latest opened subsegment. In a multithreading environment, this will make sure the subsegment returned is one created by the same thread.
- property dynamic_naming¶
- property emitter¶
- property enabled¶
- end_segment(end_time=None)¶
End the current segment and send it to X-Ray daemon if it is ready to send. Ready means segment and all its subsegments are closed.
- Parameters:
end_time (float) – segment completion in unix epoch in seconds.
- end_subsegment(end_time=None)¶
End the current active subsegment. If this is the last one open under its parent segment, the entire segment will be sent.
- Parameters:
end_time (float) – subsegment compeletion in unix epoch in seconds.
- get_trace_entity()¶
A pass through method to
context.get_trace_entity().
- in_segment(name=None, **segment_kwargs)¶
Return a segment context manger.
- in_subsegment(name=None, **subsegment_kwargs)¶
Return a subsegment context manger.
- is_sampled()¶
Check if the current trace entity is sampled or not. Return False if no active entity found.
- property max_trace_back¶
- put_annotation(key, value)¶
Annotate current active trace entity with a key-value pair. Annotations will be indexed for later search query.
- put_metadata(key, value, namespace='default')¶
Add metadata to the current active trace entity. Metadata is not indexed but can be later retrieved by BatchGetTraces API.
- record_subsegment(wrapped, instance, args, kwargs, name, namespace, meta_processor)¶
- property sampler¶
- property sampling¶
- property service¶
- set_trace_entity(trace_entity)¶
A pass through method to
context.set_trace_entity().
- property stream_sql¶
- stream_subsegments()¶
Stream all closed subsegments to the daemon and remove reference to the parent segment. No-op for a not sampled segment.
- property streaming¶
- property streaming_threshold¶
Proxy method to Streaming module’s streaming_threshold property.
- aws_xray_sdk.core.patch(modules_to_patch, raise_errors=True, ignore_module_patterns=None)¶
- aws_xray_sdk.core.patch_all(double_patch=False)¶