forked from Azure/azure-sdk-for-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add and fix samples for OT (Azure#17876)
* Add and fix samples for OT * Update sample_receive_sb.py * Update README.md * Update README.md
- Loading branch information
1 parent
aeee0f5
commit 2e2638d
Showing
5 changed files
with
169 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
62 changes: 62 additions & 0 deletions
62
sdk/core/azure-core-tracing-opentelemetry/samples/sample_eventhubs.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
""" | ||
Examples to show usage of the azure-core-tracing-opentelemetry | ||
with the Eventhub SDK. | ||
This example traces calls for senda batch to eventhub. | ||
An alternative path to export using AzureMonitor is also mentioned in the sample. Please take | ||
a look at the commented code. | ||
""" | ||
|
||
# Declare OpenTelemetry as enabled tracing plugin for Azure SDKs | ||
from azure.core.settings import settings | ||
from azure.core.tracing.ext.opentelemetry_span import OpenTelemetrySpan | ||
|
||
settings.tracing_implementation = OpenTelemetrySpan | ||
|
||
# In the below example, we use a simple console exporter, uncomment these lines to use | ||
# the Azure Monitor Exporter. It can be installed from https://pypi.org/project/opentelemetry-azure-monitor/ | ||
# Example of Azure Monitor exporter, but you can use anything OpenTelemetry supports | ||
# from azure_monitor import AzureMonitorSpanExporter | ||
# exporter = AzureMonitorSpanExporter( | ||
# instrumentation_key="uuid of the instrumentation key (see your Azure Monitor account)" | ||
# ) | ||
|
||
# Regular open telemetry usage from here, see https://github.com/open-telemetry/opentelemetry-python | ||
# for details | ||
from opentelemetry import trace | ||
from opentelemetry.sdk.trace import TracerProvider | ||
from opentelemetry.sdk.trace.export import ConsoleSpanExporter | ||
from opentelemetry.sdk.trace.export import SimpleSpanProcessor | ||
|
||
# Simple console exporter | ||
exporter = ConsoleSpanExporter() | ||
|
||
trace.set_tracer_provider(TracerProvider()) | ||
tracer = trace.get_tracer(__name__) | ||
trace.get_tracer_provider().add_span_processor( | ||
SimpleSpanProcessor(exporter) | ||
) | ||
|
||
from azure.eventhub import EventHubProducerClient, EventData | ||
import os | ||
|
||
FULLY_QUALIFIED_NAMESPACE = os.environ['EVENT_HUB_HOSTNAME'] | ||
EVENTHUB_NAME = os.environ['EVENT_HUB_NAME'] | ||
|
||
credential = os.environ['EVENTHUB_CONN_STR'] | ||
|
||
def on_event(context, event): | ||
print(context.partition_id, ":", event) | ||
|
||
with tracer.start_as_current_span(name="MyApplication"): | ||
producer_client = EventHubProducerClient.from_connection_string( | ||
conn_str=credential, | ||
fully_qualified_namespace=FULLY_QUALIFIED_NAMESPACE, | ||
eventhub_name=EVENTHUB_NAME, | ||
logging_enable=True | ||
) | ||
with producer_client: | ||
event_data_batch = producer_client.create_batch() | ||
event_data_batch.add(EventData('Single message')) | ||
producer_client.send_batch(event_data_batch) |
95 changes: 95 additions & 0 deletions
95
sdk/core/azure-core-tracing-opentelemetry/samples/sample_receive_eh.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
""" | ||
Examples to show usage of the azure-core-tracing-opentelemetry | ||
with the Eventhub SDK. | ||
This example traces calls for senda batch to eventhub. | ||
An alternative path to export using AzureMonitor is also mentioned in the sample. Please take | ||
a look at the commented code. | ||
""" | ||
|
||
# Declare OpenTelemetry as enabled tracing plugin for Azure SDKs | ||
from azure.core.settings import settings | ||
from azure.core.tracing.ext.opentelemetry_span import OpenTelemetrySpan | ||
|
||
settings.tracing_implementation = OpenTelemetrySpan | ||
|
||
# In the below example, we use a simple console exporter, uncomment these lines to use | ||
# the Azure Monitor Exporter. It can be installed from https://pypi.org/project/opentelemetry-azure-monitor/ | ||
# Example of Azure Monitor exporter, but you can use anything OpenTelemetry supports | ||
# from azure_monitor import AzureMonitorSpanExporter | ||
# exporter = AzureMonitorSpanExporter( | ||
# instrumentation_key="uuid of the instrumentation key (see your Azure Monitor account)" | ||
# ) | ||
|
||
# Regular open telemetry usage from here, see https://github.com/open-telemetry/opentelemetry-python | ||
# for details | ||
from opentelemetry import trace | ||
from opentelemetry.sdk.trace import TracerProvider | ||
from opentelemetry.sdk.trace.export import ConsoleSpanExporter | ||
from opentelemetry.sdk.trace.export import SimpleSpanProcessor | ||
|
||
# Simple console exporter | ||
exporter = ConsoleSpanExporter() | ||
|
||
trace.set_tracer_provider(TracerProvider()) | ||
tracer = trace.get_tracer(__name__) | ||
trace.get_tracer_provider().add_span_processor( | ||
SimpleSpanProcessor(exporter) | ||
) | ||
|
||
from azure.eventhub import EventHubProducerClient, EventData, EventHubConsumerClient | ||
import os | ||
|
||
FULLY_QUALIFIED_NAMESPACE = os.environ['EVENT_HUB_HOSTNAME'] | ||
EVENTHUB_NAME = os.environ['EVENT_HUB_NAME'] | ||
|
||
credential = os.environ['EVENTHUB_CONN_STR'] | ||
|
||
def on_event(partition_context, event): | ||
# Put your code here. | ||
# If the operation is i/o intensive, multi-thread will have better performance. | ||
print("Received event from partition: {}.".format(partition_context.partition_id)) | ||
|
||
def on_partition_initialize(partition_context): | ||
# Put your code here. | ||
print("Partition: {} has been initialized.".format(partition_context.partition_id)) | ||
|
||
|
||
def on_partition_close(partition_context, reason): | ||
# Put your code here. | ||
print("Partition: {} has been closed, reason for closing: {}.".format( | ||
partition_context.partition_id, | ||
reason | ||
)) | ||
|
||
|
||
def on_error(partition_context, error): | ||
# Put your code here. partition_context can be None in the on_error callback. | ||
if partition_context: | ||
print("An exception: {} occurred during receiving from Partition: {}.".format( | ||
partition_context.partition_id, | ||
error | ||
)) | ||
else: | ||
print("An exception: {} occurred during the load balance process.".format(error)) | ||
|
||
with tracer.start_as_current_span(name="MyApplication"): | ||
consumer_client = EventHubConsumerClient.from_connection_string( | ||
conn_str=credential, | ||
consumer_group='$Default', | ||
eventhub_name=EVENTHUB_NAME, | ||
) | ||
|
||
try: | ||
with consumer_client: | ||
consumer_client.receive( | ||
on_event=on_event, | ||
on_partition_initialize=on_partition_initialize, | ||
on_partition_close=on_partition_close, | ||
on_error=on_error, | ||
starting_position="-1", # "-1" is from the beginning of the partition. | ||
) | ||
except KeyboardInterrupt: | ||
print('Stopped receiving.') | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters