diff --git a/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md b/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md index 5479d44d416d..c323344495e6 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md +++ b/sdk/monitor/azure-monitor-opentelemetry/CHANGELOG.md @@ -4,6 +4,9 @@ ### Features Added +- Enable live metrics by default + ([#44902](https://github.com/Azure/azure-sdk-for-python/pull/44902)) + ### Breaking Changes ### Bugs Fixed diff --git a/sdk/monitor/azure-monitor-opentelemetry/README.md b/sdk/monitor/azure-monitor-opentelemetry/README.md index 03bf5325ab24..2373227a08cf 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/README.md +++ b/sdk/monitor/azure-monitor-opentelemetry/README.md @@ -60,7 +60,7 @@ You can use `configure_azure_monitor` to set up instrumentation for your app to | Parameter | Description | Environment Variable | |-------------------|----------------------------------------------------|----------------------| | `connection_string` | The [connection string][connection_string_doc] for your Application Insights resource. The connection string will be automatically populated from the `APPLICATIONINSIGHTS_CONNECTION_STRING` environment variable if not explicitly passed in. | `APPLICATIONINSIGHTS_CONNECTION_STRING` | -| `enable_live_metrics` | Enable [live metrics][application_insights_live_metrics] feature. Defaults to `False`. | `N/A` | +| `enable_live_metrics` | Enable [live metrics][application_insights_live_metrics] feature. Defaults to `True`. | `N/A` | | `enable_performance_counters` | Enable [performance counters][application_insights_performance_counters]. Defaults to `True`. | `N/A` | | `logging_formatter` | A Python logging [formatter][python_logging_formatter] that will be used to format collected logs. | `PYTHON_APPLICATIONINSIGHTS_LOGGING_FORMAT` - accepts a STRING field used for formatting, not a [formatter][python_logging_formatter] | | `logger_name` | The name of the [Python logger][python_logger] under which telemetry is collected. Setting this value is imperative so logs created from the SDK itself are not tracked. | `PYTHON_APPLICATIONINSIGHTS_LOGGER_NAME` | 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 0ccf13c40bb6..af8988a6b891 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_configure.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_configure.py @@ -112,7 +112,7 @@ def configure_azure_monitor(**kwargs) -> None: # pylint: disable=C4758 :keyword list[~opentelemetry.sdk.metrics.MetricReader] metric_readers: List of MetricReader objects to read and export metrics. Each reader can have its own exporter and collection interval. :keyword bool enable_live_metrics: Boolean value to determine whether to enable live metrics feature. - Defaults to `False`. + Defaults to `True`. :keyword bool enable_performance_counters: Boolean value to determine whether to enable performance counters. Defaults to `True`. :keyword str storage_directory: Storage directory in which to store retry files. Defaults to diff --git a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_utils/configurations.py b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_utils/configurations.py index de694de31e57..183017cd5d91 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_utils/configurations.py +++ b/sdk/monitor/azure-monitor-opentelemetry/azure/monitor/opentelemetry/_utils/configurations.py @@ -314,7 +314,7 @@ def _default_metric_readers(configurations): def _default_enable_live_metrics(configurations): - configurations.setdefault(ENABLE_LIVE_METRICS_ARG, False) + configurations.setdefault(ENABLE_LIVE_METRICS_ARG, True) def _default_enable_performance_counters(configurations): diff --git a/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/live_metrics.py b/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/live_metrics.py index 742633419f4e..2b6b4e24d1da 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/live_metrics.py +++ b/sdk/monitor/azure-monitor-opentelemetry/samples/metrics/live_metrics.py @@ -5,8 +5,9 @@ # -------------------------------------------------------------------------- """ -This example shows how configure live metrics to be enabled. It sets up a minimal example of sending dependency, +This example sets up a minimal example of sending dependency through live metrics, trace and exception telemetry to demonstrate the capabilities and collection set of live metrics. +Live metrics is enabled by default, it can be disabled by setting `enable_live_metrics` to `False` """ import logging import requests # type: ignore[import-untyped] @@ -14,7 +15,6 @@ from azure.monitor.opentelemetry import configure_azure_monitor from opentelemetry import trace - from opentelemetry.sdk.resources import Resource configure_azure_monitor( @@ -25,7 +25,7 @@ } ), logger_name=__name__, - enable_live_metrics=True, # Enable live metrics configuration + # enable_live_metrics=False, # To disable live metrics configuration ) tracer = trace.get_tracer(__name__) diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/test_configure.py b/sdk/monitor/azure-monitor-opentelemetry/tests/test_configure.py index a5dd375f0516..1db4b9adc5bd 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/tests/test_configure.py +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/test_configure.py @@ -68,7 +68,7 @@ def test_configure_azure_monitor( tracing_mock.assert_called_once() logging_mock.assert_called_once() metrics_mock.assert_called_once() - live_metrics_mock.assert_not_called() + live_metrics_mock.assert_called_once() instrumentation_mock.assert_called_once() detect_attach_mock.assert_called_once() @@ -109,7 +109,7 @@ def test_configure_azure_monitor_disable_tracing( "django": {"enabled": False}, "requests": {"enabled": False}, }, - "enable_live_metrics": False, + "enable_live_metrics": True, "enable_performance_counters": True, "resource": TEST_RESOURCE, } @@ -123,7 +123,7 @@ def test_configure_azure_monitor_disable_tracing( tracing_mock.assert_not_called() logging_mock.assert_called_once_with(configurations) metrics_mock.assert_called_once_with(configurations) - live_metrics_mock.assert_not_called() + live_metrics_mock.assert_called_once_with(configurations) instrumentation_mock.assert_called_once_with(configurations) # Assert setup_metrics is called before setup_logging self.assertLess(call_order.index("metrics"), call_order.index("logging")) @@ -160,7 +160,7 @@ def test_configure_azure_monitor_disable_logging( "disable_tracing": False, "disable_logging": True, "disable_metrics": False, - "enable_live_metrics": False, + "enable_live_metrics": True, "enable_performance_counters": True, "resource": TEST_RESOURCE, } @@ -174,7 +174,7 @@ def test_configure_azure_monitor_disable_logging( tracing_mock.assert_called_once_with(configurations) logging_mock.assert_not_called() metrics_mock.assert_called_once_with(configurations) - live_metrics_mock.assert_not_called() + live_metrics_mock.assert_called_once_with(configurations) instrumentation_mock.assert_called_once_with(configurations) # Assert setup_metrics is called before setup_tracing self.assertLess(call_order.index("metrics"), call_order.index("tracing")) @@ -211,7 +211,7 @@ def test_configure_azure_monitor_disable_metrics( "disable_tracing": False, "disable_logging": False, "disable_metrics": True, - "enable_live_metrics": False, + "enable_live_metrics": True, "enable_performance_counters": True, "resource": TEST_RESOURCE, } @@ -220,7 +220,7 @@ def test_configure_azure_monitor_disable_metrics( tracing_mock.assert_called_once_with(configurations) logging_mock.assert_called_once_with(configurations) metrics_mock.assert_not_called() - live_metrics_mock.assert_not_called() + live_metrics_mock.assert_called_once_with(configurations) instrumentation_mock.assert_called_once_with(configurations) @patch( diff --git a/sdk/monitor/azure-monitor-opentelemetry/tests/utils/test_configurations.py b/sdk/monitor/azure-monitor-opentelemetry/tests/utils/test_configurations.py index 7d2d22f22ff5..7684db635893 100644 --- a/sdk/monitor/azure-monitor-opentelemetry/tests/utils/test_configurations.py +++ b/sdk/monitor/azure-monitor-opentelemetry/tests/utils/test_configurations.py @@ -81,7 +81,7 @@ def test_get_configurations(self, resource_create_mock): "enabled": False, } }, - enable_live_metrics=True, + enable_live_metrics=False, enable_performance_counters=False, views=["test_view"], logger_name="test_logger", @@ -117,7 +117,7 @@ def test_get_configurations(self, resource_create_mock): }, ) self.assertEqual(configurations["storage_directory"], "test_directory") - self.assertEqual(configurations["enable_live_metrics"], True) + self.assertEqual(configurations["enable_live_metrics"], False) self.assertEqual(configurations["enable_performance_counters"], False) self.assertEqual(configurations["views"], ["test_view"]) self.assertEqual(configurations["logger_name"], "test_logger") @@ -154,7 +154,7 @@ def test_get_configurations_defaults(self, resource_create_mock): self.assertEqual(configurations["sampling_ratio"], 1.0) self.assertTrue("credential" not in configurations) self.assertTrue("storage_directory" not in configurations) - self.assertEqual(configurations["enable_live_metrics"], False) + self.assertEqual(configurations["enable_live_metrics"], True) self.assertEqual(configurations["enable_performance_counters"], True) self.assertEqual(configurations["logger_name"], "") self.assertEqual(configurations["span_processors"], [])