From 8a9bea12d1b1031dd46511261c7843c69792c6bd Mon Sep 17 00:00:00 2001 From: jerevoss Date: Thu, 13 Jul 2023 16:17:21 -0700 Subject: [PATCH] Update to 1.0.0b14 --- .../azure-monitor-opentelemetry/CHANGELOG.md | 23 +++++++++-- .../azure-monitor-opentelemetry/MANIFEST.in | 3 -- .../azure/monitor/opentelemetry/_configure.py | 6 +++ .../azure/monitor/opentelemetry/_constants.py | 20 +++++++--- .../azure/monitor/opentelemetry/_version.py | 2 +- .../autoinstrumentation/_distro.py | 9 ++--- .../diagnostics/_diagnostic_logging.py | 8 ++-- .../diagnostics/_status_logger.py | 4 +- .../opentelemetry/util/_configurations.py | 7 ++++ .../{mypi.ini => mypy.ini} | 0 .../samples/README.md | 8 ++-- .../samples/logging/correlated_logs.py | 4 +- .../samples/logging/custom_properties.py | 4 +- .../samples/logging/exception_logs.py | 4 +- .../samples/logging/logs_with_traces.py | 4 +- .../samples/logging/simple.py | 4 +- .../samples/metrics/attributes.py | 4 +- .../samples/metrics/instruments.py | 4 +- .../samples/metrics/views.py | 29 -------------- .../samples/tracing/azure_core.py | 18 +++++++++ .../samples/tracing/db_psycopg2.py | 4 +- .../tracing/django/sample/example/views.py | 4 +- .../tracing/django/sample/sample/settings.py | 4 +- .../samples/tracing/http_fastapi.py | 5 +-- .../samples/tracing/http_flask.py | 4 +- .../samples/tracing/http_requests.py | 5 +-- .../samples/tracing/http_urllib.py | 4 +- .../samples/tracing/http_urllib3.py | 4 +- .../samples/tracing/manual.py | 4 +- .../samples/tracing/sampling.py | 4 +- .../samples/tracing/simple.py | 4 +- .../azure-monitor-opentelemetry/setup.py | 1 + .../tests/autoinstrumentation/test_distro.py | 25 +++--------- .../tests/configuration/test_configure.py | 9 +++++ .../tests/configuration/test_util.py | 4 ++ .../diagnostics/test_diagnostic_logging.py | 16 ++------ .../tests/diagnostics/test_status_logger.py | 40 ++++++++++--------- .../tests/test_constants.py | 8 +++- 38 files changed, 150 insertions(+), 164 deletions(-) rename sdk/monitor/azure-monitor-opentelemetry/{mypi.ini => mypy.ini} (100%) delete mode 100644 sdk/monitor/azure-monitor-opentelemetry/samples/metrics/views.py create mode 100644 sdk/monitor/azure-monitor-opentelemetry/samples/tracing/azure_core.py diff --git a/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md b/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md index a8e73f97a3c4..92c41f77e051 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md +++ b/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md @@ -1,18 +1,33 @@ # Release History -## 1.0.0b13 (Unreleased) +## 1.0.0b14 (Unreleased) ### Features Added -- Vendor Instrumentations - ([#280](https://github.com/microsoft/ApplicationInsights-Python/pull/280)) - ### Breaking Changes ### Bugs Fixed ### Other Changes +- Upgrade to exporter 1.0.0b14 and OTel 1.18 + ([#295](https://github.com/microsoft/ApplicationInsights-Python/pull/295)) +- Enable Azure Core Tracing OpenTelemetry plugin + ([#269](https://github.com/microsoft/ApplicationInsights-Python/pull/269)) +- Fix connection string environment variable bug for manual instrumentation + ([#302](https://github.com/microsoft/ApplicationInsights-Python/pull/302)) + +## [1.0.0b13](https://github.com/microsoft/ApplicationInsights-Python/releases/tag/v1.0.0b13) - 2023-06-14 + +### Features Added + +- Vendor Instrumentations + ([#280](https://github.com/microsoft/ApplicationInsights-Python/pull/280)) +- Support OTEL_PYTHON_DISABLED_INSTRUMENTATIONS + ([#294](https://github.com/microsoft/ApplicationInsights-Python/pull/294)) + +### Other Changes + - Update samples ([#281](https://github.com/microsoft/ApplicationInsights-Python/pull/281)) - Fixed spelling diff --git a/sdk/monitor/azure-monitor-opentelemetry/MANIFEST.in b/sdk/monitor/azure-monitor-opentelemetry/MANIFEST.in index 040111403b47..5084b773299b 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/MANIFEST.in +++ b/sdk/monitor/azure-monitor-opentelemetry/MANIFEST.in @@ -5,6 +5,3 @@ include LICENSE recursive-include tests *.py recursive-include samples *.py *.md include azure/monitor/opentelemetry/py.typed -global-exclude *.pyc -global-exclude *.pyo -global-exclude __pycache__/* diff --git a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_configure.py b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_configure.py index 346e98c5606b..15cc73083aaa 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_configure.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_configure.py @@ -17,7 +17,10 @@ from opentelemetry.trace import get_tracer_provider, set_tracer_provider from pkg_resources import iter_entry_points # type: ignore +from azure.core.settings import settings +from azure.core.tracing.ext.opentelemetry_span import OpenTelemetrySpan from azure.monitor.opentelemetry._constants import ( + DISABLE_AZURE_CORE_TRACING_ARG, DISABLE_LOGGING_ARG, DISABLE_METRICS_ARG, DISABLE_TRACING_ARG, @@ -105,6 +108,9 @@ def _setup_tracing(configurations: Dict[str, ConfigurationValue]): trace_exporter, ) get_tracer_provider().add_span_processor(span_processor) + disable_azure_core_tracing = configurations[DISABLE_AZURE_CORE_TRACING_ARG] + if not disable_azure_core_tracing: + settings.tracing_implementation = OpenTelemetrySpan def _setup_logging(configurations: Dict[str, ConfigurationValue]): diff --git a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_constants.py b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_constants.py index 8b33d9d7be6b..cadcd7b5665d 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_constants.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_constants.py @@ -17,6 +17,7 @@ # --------------------Configuration------------------------------------------ CONNECTION_STRING_ARG = "connection_string" +DISABLE_AZURE_CORE_TRACING_ARG = "disable_azure_core_tracing" DISABLE_LOGGING_ARG = "disable_logging" DISABLE_METRICS_ARG = "disable_metrics" DISABLE_TRACING_ARG = "disable_tracing" @@ -36,12 +37,21 @@ # _EXPORTER_DIAGNOSTICS_ENABLED_ENV_VAR = ( # "AZURE_MONITOR_OPENTELEMETRY_DISTRO_ENABLE_EXPORTER_DIAGNOSTICS" # ) +_CUSTOMER_IKEY_ENV_VAR = None logger = logging.getLogger(__name__) -_CUSTOMER_IKEY: Optional[str] = "unknown" -try: - _CUSTOMER_IKEY = ConnectionStringParser().instrumentation_key -except ValueError as e: - logger.error("Failed to parse Instrumentation Key: %s", e) + + +def _get_customer_ikey_from_env_var(): + global _CUSTOMER_IKEY_ENV_VAR + if not _CUSTOMER_IKEY_ENV_VAR: + _CUSTOMER_IKEY_ENV_VAR = "unknown" + try: + _CUSTOMER_IKEY_ENV_VAR = ( + ConnectionStringParser().instrumentation_key + ) + except ValueError as e: + logger.error("Failed to parse Instrumentation Key: %s", e) + return _CUSTOMER_IKEY_ENV_VAR def _get_log_path(status_log_path=False): diff --git a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_version.py b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_version.py index b62ddc6b048e..55838b9139dc 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_version.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_version.py @@ -4,4 +4,4 @@ # license information. # -------------------------------------------------------------------------- -VERSION = "1.0.0b12" +VERSION = "1.0.0b13" diff --git a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/autoinstrumentation/_distro.py b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/autoinstrumentation/_distro.py index e38578796bc9..2085b5f5283d 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/autoinstrumentation/_distro.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/autoinstrumentation/_distro.py @@ -15,6 +15,8 @@ _OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED, ) +from azure.core.settings import settings +from azure.core.tracing.ext.opentelemetry_span import OpenTelemetrySpan from azure.monitor.opentelemetry._vendor.v0_39b0.opentelemetry.instrumentation.distro import ( BaseDistro, ) @@ -49,12 +51,6 @@ def _configure_auto_instrumentation() -> None: AzureStatusLogger.log_status(False, "Distro being configured.") AzureDiagnosticLogging.enable(_logger) AzureDiagnosticLogging.enable(_opentelemetry_logger) - # TODO: Enabled when duplicate logging issue is solved - # if _EXPORTER_DIAGNOSTICS_ENABLED: - # exporter_logger = logging.getLogger( - # "azure.monitor.opentelemetry.exporter" - # ) - # AzureDiagnosticLogging.enable(_exporter_logger) environ.setdefault( OTEL_METRICS_EXPORTER, "azure_monitor_opentelemetry_exporter" ) @@ -67,6 +63,7 @@ def _configure_auto_instrumentation() -> None: environ.setdefault( _OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED, "true" ) + settings.tracing_implementation = OpenTelemetrySpan AzureStatusLogger.log_status(True) _logger.info( "Azure Monitor OpenTelemetry Distro configured successfully." diff --git a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/diagnostics/_diagnostic_logging.py b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/diagnostics/_diagnostic_logging.py index b8508ee00e51..cdfad69d0f1f 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/diagnostics/_diagnostic_logging.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/diagnostics/_diagnostic_logging.py @@ -10,10 +10,10 @@ from os.path import exists, join from azure.monitor.opentelemetry._constants import ( - _CUSTOMER_IKEY, _EXTENSION_VERSION, _IS_DIAGNOSTICS_ENABLED, _env_var_or_default, + _get_customer_ikey_from_env_var, _get_log_path, ) from azure.monitor.opentelemetry._version import VERSION @@ -22,9 +22,7 @@ _SITE_NAME = _env_var_or_default("WEBSITE_SITE_NAME") _SUBSCRIPTION_ID_ENV_VAR = _env_var_or_default("WEBSITE_OWNER_NAME") _SUBSCRIPTION_ID = ( - _SUBSCRIPTION_ID_ENV_VAR.split("+")[0] - if _SUBSCRIPTION_ID_ENV_VAR - else None + _SUBSCRIPTION_ID_ENV_VAR.split("+")[0] if _SUBSCRIPTION_ID_ENV_VAR else None ) _logger = logging.getLogger(__name__) _DIAGNOSTIC_LOG_PATH = _get_log_path() @@ -49,7 +47,7 @@ def _initialize(cls): + '"properties":{' + '"operation":"Startup", ' + f'"sitename":"{_SITE_NAME}", ' - + f'"ikey":"{_CUSTOMER_IKEY}", ' + + f'"ikey":"{_get_customer_ikey_from_env_var()}", ' + f'"extensionVersion":"{_EXTENSION_VERSION}", ' + f'"sdkVersion":"{VERSION}", ' + f'"subscriptionId":"{_SUBSCRIPTION_ID}", ' diff --git a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/diagnostics/_status_logger.py b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/diagnostics/_status_logger.py index 12da27afe4ff..d5e935eae281 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/diagnostics/_status_logger.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/diagnostics/_status_logger.py @@ -10,9 +10,9 @@ from platform import node from azure.monitor.opentelemetry._constants import ( - _CUSTOMER_IKEY, _EXTENSION_VERSION, _IS_DIAGNOSTICS_ENABLED, + _get_customer_ikey_from_env_var, _get_log_path, ) from azure.monitor.opentelemetry._version import VERSION @@ -32,7 +32,7 @@ def _get_status_json( "MachineName": _MACHINE_NAME, "PID": pid, "SdkVersion": VERSION, - "Ikey": _CUSTOMER_IKEY, + "Ikey": _get_customer_ikey_from_env_var(), "ExtensionVersion": _EXTENSION_VERSION, } if reason: diff --git a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/util/_configurations.py b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/util/_configurations.py index 777b6c029029..d4f08996508b 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/util/_configurations.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/util/_configurations.py @@ -16,6 +16,7 @@ from opentelemetry.sdk.environment_variables import OTEL_TRACES_SAMPLER_ARG from azure.monitor.opentelemetry._constants import ( + DISABLE_AZURE_CORE_TRACING_ARG, DISABLE_LOGGING_ARG, DISABLE_METRICS_ARG, DISABLE_TRACING_ARG, @@ -54,6 +55,7 @@ def _get_configurations(**kwargs) -> Dict[str, ConfigurationValue]: _default_disabled_instrumentations(configurations) _default_logging_export_interval_ms(configurations) _default_sampling_ratio(configurations) + _default_disable_azure_core_tracing(configurations) # TODO: remove when validation added to BLRP if configurations[LOGGING_EXPORT_INTERVAL_MS_ARG] <= 0: @@ -130,3 +132,8 @@ def _default_sampling_ratio(configurations): e, ) configurations[SAMPLING_RATIO_ARG] = default + + +# TODO: Placeholder for future configuration +def _default_disable_azure_core_tracing(configurations): + configurations[DISABLE_AZURE_CORE_TRACING_ARG] = False diff --git a/sdk/monitor/azure-monitor-opentelemetry/mypi.ini b/sdk/monitor/azure-monitor-opentelemetry/mypy.ini similarity index 100% rename from sdk/monitor/azure-monitor-opentelemetry/mypi.ini rename to sdk/monitor/azure-monitor-opentelemetry/mypy.ini diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/README.md b/sdk/monitor/azure-monitor-opentelemetry/samples/README.md index a4259a351e84..1c5071197c0b 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/README.md +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/README.md @@ -26,7 +26,7 @@ For guidance on the samples README, visit the [sample guide](https://github.com/ |[metrics/attributes.py][attributes] | Add attributes to custom metrics counters | |[metrics/instruments.py][instruments] | Create observable instruments | -|[tracing/django/sample/manage.py][django] | Instrument a django app | +|[tracing/django/manage.py][django] | Instrument a django app | |[tracing/db_psycopg2.py][db_psycopg2] | Instrument the PsycoPG2 library | |[tracing/http_fastapi.py][http_fastapi] | Instrument a FastAPI app | |[tracing/http_flask.py][http_flask] | Instrument a Flask app | @@ -60,8 +60,8 @@ For guidance on the samples README, visit the [sample guide](https://github.com/ To learn more, see the [Azure Monitor OpenTelemetry Distro documentation][distro_docs] and [OpenTelemetry documentation][otel_docs] -[distro_docs]: https://learn.microsoft.com/azure/azure-monitor/app/opentelemetry-enable?tabs=python -[otel_docs]: https://opentelemetry.io/docs/ +[distro_docs]: [https://learn.microsoft.com/opentelemetryazure/azure-monitor/app/opentelemetry-enable?tabs=python] +[otel_docs]: [https://opentelemetry.io/docs/] [correlated_logs]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/logging/correlated_logs.py [custom_properties]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/logging/custom_properties.py [exception_logs]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/logging/exception_logs.py @@ -69,7 +69,7 @@ To learn more, see the [Azure Monitor OpenTelemetry Distro documentation][distro [logging_simple]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/logging/simple.py [attributes]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/attributes.py [instruments]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/instruments.py -[django]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/sample/manage.py +[django]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/manage.py [db_psycopg2]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/db_psycopg2.py [http_fastapi]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_fastapi.py [http_flask]: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_flask.py diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/correlated_logs.py b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/correlated_logs.py index 43d77540be05..f47bdce4e6ab 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/correlated_logs.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/correlated_logs.py @@ -9,9 +9,7 @@ from azure.monitor.opentelemetry import configure_azure_monitor from opentelemetry import trace -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() logger = getLogger(__name__) tracer = trace.get_tracer(__name__) diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/custom_properties.py b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/custom_properties.py index 4cc9f19f33fc..8d4c2c457be6 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/custom_properties.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/custom_properties.py @@ -8,9 +8,7 @@ from azure.monitor.opentelemetry import configure_azure_monitor -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() logger = getLogger(__name__) logger.setLevel(DEBUG) diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/exception_logs.py b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/exception_logs.py index ff566adce2f2..8761d4d71258 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/exception_logs.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/exception_logs.py @@ -8,9 +8,7 @@ from azure.monitor.opentelemetry import configure_azure_monitor -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() logger = getLogger(__name__) diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/logs_with_traces.py b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/logs_with_traces.py index a646100d9720..e7008701b36e 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/logs_with_traces.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/logs_with_traces.py @@ -9,9 +9,7 @@ import flask from azure.monitor.opentelemetry import configure_azure_monitor -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() logger = getLogger(__name__) logger.setLevel(INFO) diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/simple.py b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/simple.py index 60085a1c6654..9786d35f083d 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/logging/simple.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/logging/simple.py @@ -9,9 +9,7 @@ from azure.monitor.opentelemetry import configure_azure_monitor from opentelemetry.sdk.resources import Resource, ResourceAttributes -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() logger = getLogger(__name__) diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/attributes.py b/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/attributes.py index 95766db59111..5060e721220f 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/attributes.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/attributes.py @@ -5,9 +5,7 @@ from opentelemetry import metrics # Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() attribute_set1 = {"key1": "val1"} attribute_set2 = {"key2": "val2"} diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/instruments.py b/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/instruments.py index 663c54bf374f..ed4fb4174fd7 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/instruments.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/instruments.py @@ -8,9 +8,7 @@ from opentelemetry.sdk.resources import Resource, ResourceAttributes # Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() # Callback functions for observable instruments diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/views.py b/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/views.py deleted file mode 100644 index b81b1186aa10..000000000000 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/views.py +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. -from azure.monitor.opentelemetry import configure_azure_monitor -from opentelemetry import metrics -from opentelemetry.sdk.metrics import Counter -from opentelemetry.sdk.metrics.view import View - -# Create a view matching the counter instrument `my.counter` -# and configure the new name `my.counter.total` for the result metrics stream -change_metric_name_view = View( - instrument_type=Counter, - instrument_name="my.counter", - name="my.counter.total", -) - -# Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", - disable_logging=True, - disable_tracing=True, - metrics_export_interval_millis=30000, - views=[change_metric_name_view], -) - -meter = metrics.get_meter_provider().get_meter("view-name-change") -my_counter = meter.create_counter("my.counter") -my_counter.add(100) - -input() diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/azure_core.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/azure_core.py new file mode 100644 index 000000000000..2dbc16478e19 --- /dev/null +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/azure_core.py @@ -0,0 +1,18 @@ +from os import environ + +from azure.monitor.opentelemetry import configure_azure_monitor +from opentelemetry import trace + +# Set up exporting to Azure Monitor +configure_azure_monitor() + +# Example with Storage SDKs + +from azure.storage.blob import BlobServiceClient + +tracer = trace.get_tracer(__name__) +with tracer.start_as_current_span(name="MyApplication"): + client = BlobServiceClient.from_connection_string( + environ["AZURE_STORAGE_ACCOUNT_CONNECTION_STRING"] + ) + client.create_container("mycontainer") # Call will be traced diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/db_psycopg2.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/db_psycopg2.py index ae7be5615eb0..d69784e8e13e 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/db_psycopg2.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/db_psycopg2.py @@ -7,9 +7,7 @@ from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() # Database calls using the psycopg2 library will be automatically captured cnx = psycopg2.connect(database="test", user="", password="") diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/sample/example/views.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/sample/example/views.py index eb5a25aa27e4..02c2c9f0e1e9 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/sample/example/views.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/sample/example/views.py @@ -8,9 +8,7 @@ from django.http import HttpResponse # Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() # Requests sent to the django application will be automatically captured diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/sample/sample/settings.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/sample/sample/settings.py index 27456feb1b02..71cd94f3cef7 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/sample/sample/settings.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/django/sample/sample/settings.py @@ -24,9 +24,7 @@ # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = ( - "django-insecure--9p!az#-flphjtvtl#c_ep6x#1lo+0@nzci#-(!-3c$!o0lyjk" -) +SECRET_KEY = "django-insecure--9p!az#-flphjtvtl#c_ep6x#1lo+0@nzci#-(!-3c$!o0lyjk" # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_fastapi.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_fastapi.py index 123890e04bed..96d5edd5787d 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_fastapi.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_fastapi.py @@ -7,9 +7,7 @@ from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() app = fastapi.FastAPI() @@ -26,6 +24,7 @@ async def exception(): raise Exception("Hit an exception") +# Set the OTEL_PYTHON_EXCLUDE_URLS environment variable to "http://127.0.0.1:8000/exclude" # Telemetry from this endpoint will not be captured due to excluded_urls config above @app.get("/exclude") async def exclude(): diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_flask.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_flask.py index 06dc5c3c4279..a36478a4f71e 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_flask.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_flask.py @@ -7,9 +7,7 @@ from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() app = flask.Flask(__name__) diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_requests.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_requests.py index 26f9424983de..f252bb02addd 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_requests.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_requests.py @@ -12,15 +12,14 @@ logger = logging.getLogger(__name__) # Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() tracer = trace.get_tracer(__name__) with tracer.start_as_current_span("Request parent span") as span: try: # Requests made using the requests library will be automatically captured response = requests.get("https://azure.microsoft.com/", timeout=5) + # Set the OTEL_PYTHON_EXCLUDE_URLS environment variable to "http://example.com" # This request will not be tracked due to the excluded_urls configuration response = requests.get("http://example.com", timeout=5) logger.warning("Request sent") diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib.py index af2606667a49..9b2568ef59f8 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib.py @@ -12,9 +12,7 @@ logger = logging.getLogger(__name__) # Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() tracer = trace.get_tracer(__name__) with tracer.start_as_current_span("Request parent span") as span: diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib3.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib3.py index 92446121dd41..82cfdeb3f4dc 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib3.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/http_urllib3.py @@ -12,9 +12,7 @@ logger = logging.getLogger(__name__) # Configure Azure monitor collection telemetry pipeline -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() http = urllib3.PoolManager() diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/manual.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/manual.py index 9fa2361a0487..feaa15f4f5da 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/manual.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/manual.py @@ -7,9 +7,7 @@ from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor from sqlalchemy import create_engine, text -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() engine = create_engine("sqlite:///:memory:") # SQLAlchemy instrumentation is not officially supported by this package diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/sampling.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/sampling.py index a89bc4e698b3..23d996e28754 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/sampling.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/sampling.py @@ -11,9 +11,7 @@ # Sampling ratio of between 0 and 1 inclusive # 0.1 means approximately 10% of your traces are sent -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() tracer = trace.get_tracer(__name__) diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/simple.py b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/simple.py index ef7e08659f87..80a45ab116dd 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/simple.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/tracing/simple.py @@ -8,9 +8,7 @@ from opentelemetry import trace from opentelemetry.sdk.resources import Resource, ResourceAttributes -configure_azure_monitor( - connection_string="", -) +configure_azure_monitor() tracer = trace.get_tracer(__name__) diff --git a/sdk/monitor/azure-monitor-opentelemetry/setup.py b/sdk/monitor/azure-monitor-opentelemetry/setup.py index 0a21003ab49b..c7d98547ee7d 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/setup.py +++ b/sdk/monitor/azure-monitor-opentelemetry/setup.py @@ -85,6 +85,7 @@ python_requires=">=3.7", install_requires=[ "azure-core<2.0.0,>=1.23.0", + "azure-core-tracing-opentelemetry~=1.0.0b10", "azure-monitor-opentelemetry-exporter>=1.0.0b14", "opentelemetry-api==1.18.0", "opentelemetry-sdk==1.18.0", diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/autoinstrumentation/test_distro.py b/sdk/monitor/azure-monitor-opentelemetry/tests/autoinstrumentation/test_distro.py index 874ca922ac56..f161506f0af7 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/tests/autoinstrumentation/test_distro.py +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/autoinstrumentation/test_distro.py @@ -1,34 +1,21 @@ from unittest import TestCase from unittest.mock import patch +from azure.core.tracing.ext.opentelemetry_span import OpenTelemetrySpan from azure.monitor.opentelemetry.autoinstrumentation._distro import ( AzureMonitorDistro, ) class TestDistro(TestCase): + @patch("azure.monitor.opentelemetry.autoinstrumentation._distro.settings") @patch( "azure.monitor.opentelemetry.autoinstrumentation._distro.AzureDiagnosticLogging.enable" ) - # TODO: Enabled when duplicate logging issue is solved - # @patch( - # "azure.monitor.opentelemetry.autoinstrumentation._diagnostic_logging._EXPORTER_DIAGNOSTICS_ENABLED", - # False, - # ) - def test_configure(self, mock_diagnostics): + def test_configure(self, mock_diagnostics, azure_core_mock): distro = AzureMonitorDistro() distro.configure() self.assertEqual(mock_diagnostics.call_count, 2) - - # TODO: Enabled when duplicate logging issue is solved - # @patch( - # "azure.monitor.opentelemetry.autoinstrumentation._distro.AzureDiagnosticLogging.enable" - # ) - # @patch( - # "azure.monitor.opentelemetry.autoinstrumentation._diagnostic_logging._EXPORTER_DIAGNOSTICS_ENABLED", - # True, - # ) - # def test_configure_exporter_diagnostics(self, mock_diagnostics): - # distro = AzureMonitorDistro() - # distro.configure() - # self.assertEqual(mock_diagnostics.call_count, 3) + self.assertEqual( + azure_core_mock.tracing_implementation, OpenTelemetrySpan + ) diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/configuration/test_configure.py b/sdk/monitor/azure-monitor-opentelemetry/tests/configuration/test_configure.py index 70102ed65b22..40c5b618ea3c 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/tests/configuration/test_configure.py +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/configuration/test_configure.py @@ -15,6 +15,7 @@ import unittest from unittest.mock import Mock, patch +from azure.core.tracing.ext.opentelemetry_span import OpenTelemetrySpan from azure.monitor.opentelemetry._configure import ( _SUPPORTED_INSTRUMENTED_LIBRARIES_DEPENDENCIES_MAP, _setup_instrumentations, @@ -162,6 +163,9 @@ def test_configure_azure_monitor_disable_metrics( metrics_mock.assert_not_called() instrumentation_mock.assert_called_once_with(configurations) + @patch( + "azure.monitor.opentelemetry._configure.settings", + ) @patch( "azure.monitor.opentelemetry._configure.BatchSpanProcessor", ) @@ -189,6 +193,7 @@ def test_setup_tracing( get_tracer_provider_mock, trace_exporter_mock, bsp_mock, + azure_core_mock, ): sampler_init_mock = Mock() sampler_mock.return_value = sampler_init_mock @@ -202,6 +207,7 @@ def test_setup_tracing( configurations = { "connection_string": "test_cs", + "disable_azure_core_tracing": False, "sampling_ratio": 0.5, } _setup_tracing(configurations) @@ -214,6 +220,9 @@ def test_setup_tracing( trace_exporter_mock.assert_called_once_with(**configurations) bsp_mock.assert_called_once_with(trace_exp_init_mock) tp_init_mock.add_span_processor.assert_called_once_with(bsp_init_mock) + self.assertEqual( + azure_core_mock.tracing_implementation, OpenTelemetrySpan + ) @patch( "azure.monitor.opentelemetry._configure.getLogger", diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/configuration/test_util.py b/sdk/monitor/azure-monitor-opentelemetry/tests/configuration/test_util.py index b93883ebcba2..d922e2400e4e 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/tests/configuration/test_util.py +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/configuration/test_util.py @@ -38,6 +38,7 @@ def test_get_configurations(self): ) self.assertEqual(configurations["connection_string"], "test_cs") + self.assertEqual(configurations["disable_azure_core_tracing"], False) self.assertEqual(configurations["disable_logging"], False) self.assertEqual(configurations["disable_metrics"], False) self.assertEqual(configurations["disable_tracing"], False) @@ -52,6 +53,7 @@ def test_get_configurations_defaults(self): configurations = _get_configurations() self.assertTrue("connection_string" not in configurations) + self.assertEqual(configurations["disable_azure_core_tracing"], False) self.assertEqual(configurations["disable_logging"], False) self.assertEqual(configurations["disable_metrics"], False) self.assertEqual(configurations["disable_tracing"], False) @@ -87,6 +89,7 @@ def test_get_configurations_env_vars(self): configurations = _get_configurations() self.assertTrue("connection_string" not in configurations) + self.assertEqual(configurations["disable_azure_core_tracing"], False) self.assertEqual(configurations["disable_logging"], True) self.assertEqual(configurations["disable_metrics"], True) self.assertEqual(configurations["disable_tracing"], True) @@ -112,6 +115,7 @@ def test_get_configurations_env_vars_validation(self): configurations = _get_configurations() self.assertTrue("connection_string" not in configurations) + self.assertEqual(configurations["disable_azure_core_tracing"], False) self.assertEqual(configurations["disable_logging"], False) self.assertEqual(configurations["disable_metrics"], False) self.assertEqual(configurations["disable_tracing"], False) diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/diagnostics/test_diagnostic_logging.py b/sdk/monitor/azure-monitor-opentelemetry/tests/diagnostics/test_diagnostic_logging.py index d7cc413ed2dc..e570b5536de7 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/tests/diagnostics/test_diagnostic_logging.py +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/diagnostics/test_diagnostic_logging.py @@ -78,7 +78,6 @@ def set_up( logger.handlers.clear() TEST_LOGGER.handlers.clear() TEST_LOGGER_SUB_MODULE.handlers.clear() - TEST_LOGGER_SUB_MODULE.setLevel(logging.WARN) patch.dict( "os.environ", { @@ -97,8 +96,8 @@ def set_up( TEST_DIAGNOSTIC_LOGGER_FILE_NAME, ).start() patch( - "azure.monitor.opentelemetry.diagnostics._diagnostic_logging._CUSTOMER_IKEY", - TEST_CUSTOMER_IKEY, + "azure.monitor.opentelemetry.diagnostics._diagnostic_logging._get_customer_ikey_from_env_var", + return_value=TEST_CUSTOMER_IKEY, ).start() patch( "azure.monitor.opentelemetry.diagnostics._diagnostic_logging._EXTENSION_VERSION", @@ -168,9 +167,6 @@ def test_error(self): def test_off_app_service_info(self): set_up(is_diagnostics_enabled=False) - self.assertEqual(diagnostic_logger._IS_DIAGNOSTICS_ENABLED, False) - self.assertEqual(diagnostic_logger._DIAGNOSTIC_LOG_PATH, TEST_LOGGER_PATH) - check_file_is_empty() TEST_LOGGER.info(MESSAGE1) TEST_LOGGER.info(MESSAGE2) TEST_LOGGER_SUB_MODULE.info(MESSAGE1) @@ -198,9 +194,7 @@ def test_subscription_id_plus(self): is_diagnostics_enabled=True, subscription_id_env_var=TEST_SUBSCRIPTION_ID_ENV_VAR, ) - self.assertEqual( - diagnostic_logger._SUBSCRIPTION_ID, TEST_SUBSCRIPTION_ID - ) + self.assertEqual(diagnostic_logger._SUBSCRIPTION_ID, TEST_SUBSCRIPTION_ID) TEST_LOGGER_SUB_MODULE.warning(MESSAGE1) TEST_LOGGER_SUB_MODULE.warning(MESSAGE2) check_file_for_messages("WARNING", (MESSAGE1, MESSAGE2)) @@ -210,9 +204,7 @@ def test_subscription_id_no_plus(self): is_diagnostics_enabled=True, subscription_id_env_var=TEST_SUBSCRIPTION_ID, ) - self.assertEqual( - diagnostic_logger._SUBSCRIPTION_ID, TEST_SUBSCRIPTION_ID - ) + self.assertEqual(diagnostic_logger._SUBSCRIPTION_ID, TEST_SUBSCRIPTION_ID) TEST_LOGGER_SUB_MODULE.warning(MESSAGE1) TEST_LOGGER_SUB_MODULE.warning(MESSAGE2) check_file_for_messages("WARNING", (MESSAGE1, MESSAGE2)) diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/diagnostics/test_status_logger.py b/sdk/monitor/azure-monitor-opentelemetry/tests/diagnostics/test_status_logger.py index 1bedde2d5f5b..db767d5fcca1 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/tests/diagnostics/test_status_logger.py +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/diagnostics/test_status_logger.py @@ -73,8 +73,8 @@ def setUp(self) -> None: TEST_LOGGER_PATH, ) @patch( - "azure.monitor.opentelemetry.diagnostics._status_logger._CUSTOMER_IKEY", - TEST_CUSTOMER_IKEY, + "azure.monitor.opentelemetry.diagnostics._status_logger._get_customer_ikey_from_env_var", + return_value=TEST_CUSTOMER_IKEY, ) @patch( "azure.monitor.opentelemetry.diagnostics._status_logger._EXTENSION_VERSION", @@ -96,7 +96,7 @@ def setUp(self) -> None: "azure.monitor.opentelemetry.diagnostics._status_logger._MACHINE_NAME", TEST_MACHINE_NAME, ) - def test_log_status_success(self, mock_getpid): + def test_log_status_success(self, mock_getpid, mock_get_ikey): AzureStatusLogger.log_status(False, MESSAGE1) AzureStatusLogger.log_status(True, MESSAGE2) check_file_for_messages(True, MESSAGE2) @@ -106,8 +106,8 @@ def test_log_status_success(self, mock_getpid): TEST_LOGGER_PATH, ) @patch( - "azure.monitor.opentelemetry.diagnostics._status_logger._CUSTOMER_IKEY", - TEST_CUSTOMER_IKEY, + "azure.monitor.opentelemetry.diagnostics._status_logger._get_customer_ikey_from_env_var", + return_value=TEST_CUSTOMER_IKEY, ) @patch( "azure.monitor.opentelemetry.diagnostics._status_logger._EXTENSION_VERSION", @@ -129,7 +129,9 @@ def test_log_status_success(self, mock_getpid): "azure.monitor.opentelemetry.diagnostics._status_logger._MACHINE_NAME", TEST_MACHINE_NAME, ) - def test_log_status_failed_initialization(self, mock_getpid): + def test_log_status_failed_initialization( + self, mock_getpid, mock_get_ikey + ): AzureStatusLogger.log_status(True, MESSAGE1) AzureStatusLogger.log_status(False, MESSAGE2) check_file_for_messages(False, MESSAGE2) @@ -139,8 +141,8 @@ def test_log_status_failed_initialization(self, mock_getpid): TEST_LOGGER_PATH, ) @patch( - "azure.monitor.opentelemetry.diagnostics._status_logger._CUSTOMER_IKEY", - TEST_CUSTOMER_IKEY, + "azure.monitor.opentelemetry.diagnostics._status_logger._get_customer_ikey_from_env_var", + return_value=TEST_CUSTOMER_IKEY, ) @patch( "azure.monitor.opentelemetry.diagnostics._status_logger._EXTENSION_VERSION", @@ -162,7 +164,7 @@ def test_log_status_failed_initialization(self, mock_getpid): "azure.monitor.opentelemetry.diagnostics._status_logger._MACHINE_NAME", TEST_MACHINE_NAME, ) - def test_log_status_no_reason(self, mock_getpid): + def test_log_status_no_reason(self, mock_getpid, mock_get_ikey): AzureStatusLogger.log_status(False, MESSAGE1) AzureStatusLogger.log_status(True) check_file_for_messages(True) @@ -172,8 +174,8 @@ def test_log_status_no_reason(self, mock_getpid): TEST_LOGGER_PATH, ) @patch( - "azure.monitor.opentelemetry.diagnostics._status_logger._CUSTOMER_IKEY", - TEST_CUSTOMER_IKEY, + "azure.monitor.opentelemetry.diagnostics._status_logger._get_customer_ikey_from_env_var", + return_value=TEST_CUSTOMER_IKEY, ) @patch( "azure.monitor.opentelemetry.diagnostics._status_logger._EXTENSION_VERSION", @@ -195,7 +197,7 @@ def test_log_status_no_reason(self, mock_getpid): "azure.monitor.opentelemetry.diagnostics._status_logger._MACHINE_NAME", TEST_MACHINE_NAME, ) - def test_disabled_log_status_success(self, mock_getpid): + def test_disabled_log_status_success(self, mock_getpid, mock_get_ikey): AzureStatusLogger.log_status(False, MESSAGE1) AzureStatusLogger.log_status(True, MESSAGE2) check_file_is_empty() @@ -205,8 +207,8 @@ def test_disabled_log_status_success(self, mock_getpid): TEST_LOGGER_PATH, ) @patch( - "azure.monitor.opentelemetry.diagnostics._status_logger._CUSTOMER_IKEY", - TEST_CUSTOMER_IKEY, + "azure.monitor.opentelemetry.diagnostics._status_logger._get_customer_ikey_from_env_var", + return_value=TEST_CUSTOMER_IKEY, ) @patch( "azure.monitor.opentelemetry.diagnostics._status_logger._EXTENSION_VERSION", @@ -228,7 +230,9 @@ def test_disabled_log_status_success(self, mock_getpid): "azure.monitor.opentelemetry.diagnostics._status_logger._MACHINE_NAME", TEST_MACHINE_NAME, ) - def test_disabled_log_status_failed_initialization(self, mock_getpid): + def test_disabled_log_status_failed_initialization( + self, mock_getpid, mock_get_ikey + ): AzureStatusLogger.log_status(True, MESSAGE1) AzureStatusLogger.log_status(False, MESSAGE2) check_file_is_empty() @@ -238,8 +242,8 @@ def test_disabled_log_status_failed_initialization(self, mock_getpid): TEST_LOGGER_PATH, ) @patch( - "azure.monitor.opentelemetry.diagnostics._status_logger._CUSTOMER_IKEY", - TEST_CUSTOMER_IKEY, + "azure.monitor.opentelemetry.diagnostics._status_logger._get_customer_ikey_from_env_var", + return_value=TEST_CUSTOMER_IKEY, ) @patch( "azure.monitor.opentelemetry.diagnostics._status_logger._EXTENSION_VERSION", @@ -261,7 +265,7 @@ def test_disabled_log_status_failed_initialization(self, mock_getpid): "azure.monitor.opentelemetry.diagnostics._status_logger._MACHINE_NAME", TEST_MACHINE_NAME, ) - def test_disabled_log_status_no_reason(self, mock_getpid): + def test_disabled_log_status_no_reason(self, mock_getpid, mock_get_ikey): AzureStatusLogger.log_status(False, MESSAGE1) AzureStatusLogger.log_status(True) check_file_is_empty() diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/test_constants.py b/sdk/monitor/azure-monitor-opentelemetry/tests/test_constants.py index 54f17340a13d..adb7b7d0d648 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/tests/test_constants.py +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/test_constants.py @@ -40,12 +40,16 @@ def test_extension_version_default(self): ) def test_ikey(self): reload(_constants) - self.assertEqual(_constants._CUSTOMER_IKEY, TEST_IKEY) + self.assertEqual( + _constants._get_customer_ikey_from_env_var(), TEST_IKEY + ) def test_ikey_defaults(self): clear_env_var("APPLICATIONINSIGHTS_CONNECTION_STRING") reload(_constants) - self.assertEqual(_constants._CUSTOMER_IKEY, "unknown") + self.assertEqual( + _constants._get_customer_ikey_from_env_var(), "unknown" + ) # TODO: Enabled when duplicate logging issue is solved # @patch.dict(