Skip to content

Commit cb0e98f

Browse files
committed
feat(AGE-298) : enable auto instrumentation without middleware-run
1 parent 586eac7 commit cb0e98f

File tree

4 files changed

+45
-10
lines changed

4 files changed

+45
-10
lines changed

dev-requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ opentelemetry-propagator-aws-xray==1.0.2
257257
# opentelemetry-instrumentation-botocore
258258
opentelemetry-propagator-b3==1.27.0
259259
# via middleware-io (pyproject.toml)
260-
opentelemetry-propagator-gcp==1.7.0
260+
opentelemetry-propagator-gcp==1.9.0
261261
# via middleware-io (pyproject.toml)
262262
opentelemetry-propagator-jaeger==1.27.0
263263
# via middleware-io (pyproject.toml)
@@ -272,7 +272,7 @@ opentelemetry-resource-detector-azure==0.1.5
272272
# via middleware-io (pyproject.toml)
273273
opentelemetry-resourcedetector-docker==0.4.0
274274
# via middleware-io (pyproject.toml)
275-
opentelemetry-resourcedetector-gcp==1.7.0a0
275+
opentelemetry-resourcedetector-gcp==1.9.0a0
276276
# via middleware-io (pyproject.toml)
277277
opentelemetry-sdk==1.27.0
278278
# via

middleware/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from middleware.distro import mw_tracker, custom_record_exception_wrapper, record_exception
1+
from middleware.distro import mw_tracker, mw_tracker_internal, custom_record_exception_wrapper, record_exception
22
from opentelemetry.sdk.trace import Span
33
from middleware.options import (
44
MWOptions,
@@ -15,8 +15,9 @@
1515
)
1616

1717
__all__ = [
18-
"mw_tracker",
18+
"mw_tracker_internal",
1919
"record_exception",
20+
"mw_tracker",
2021
"MWOptions",
2122
"DETECT_AWS_BEANSTALK",
2223
"DETECT_AWS_EC2",

middleware/distro.py

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
)
3030

3131

32-
def mw_tracker(
32+
def mw_tracker_internal(
3333
options: Optional[MWOptions] = None,
3434
):
3535
"""
@@ -246,7 +246,38 @@ def custom_record_exception(span: Span, exc: Exception):
246246
)
247247

248248

249+
def mw_tracker(options: Optional[MWOptions] = None):
250+
"""
251+
Configures the OpenTelemetry SDK to send telemetry to middleware.
249252
253+
Args:
254+
options (MWOptions, optional): the MWOptions used to
255+
configure the the SDK. These options can be set either as parameters
256+
to this function or through environment variables
257+
258+
Example
259+
--------
260+
>>> from middleware import mw_tracker, MWOptions, record_exception, DETECT_AWS_EC2
261+
>>> mw_tracker(
262+
>>> MWOptions(
263+
>>> access_token="whkvkobudfitutobptgonaezuxpjjypnejbb",
264+
>>> target="https://myapp.middleware.io:443",
265+
>>> console_exporter=True,
266+
>>> debug_log_file=True,
267+
>>> service_name="MyPythonServer",
268+
>>> otel_propagators = "b3,tracecontext",
269+
>>> custom_resource_attributes="call_id=12345678, request_id=987654321",
270+
>>> detectors=[DETECT_AWS_EC2]
271+
>>> )
272+
>>> )
273+
274+
"""
275+
distro = MiddlewareDistro()
276+
distro._configure(options=options)
277+
# global isTracker, distro_called
278+
# if isTracker:
279+
# distro_called = True
280+
# mw_tracker_internal(options=options)
250281

251282
# pylint: disable=too-few-public-methods
252283
class MiddlewareDistro(BaseDistro):
@@ -264,8 +295,11 @@ class MiddlewareDistro(BaseDistro):
264295
distro = "middleware.opentelemetry.distro:MiddlewareDistro"
265296
"""
266297

267-
def _configure(self, **kwargs):
298+
def _configure(self, options: Optional[MWOptions] = None, **kwargs):
268299
global isTracker, distro_called
269300
distro_called = True
270301
if not isTracker:
271-
mw_tracker()
302+
mw_tracker_internal()
303+
elif isTracker and options is not None:
304+
mw_tracker_internal(options=options)
305+

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "middleware-io"
7-
version = "2.4.0"
7+
version = "2.4.1rc11"
88
requires-python = ">=3.8"
99
description = "Middleware's APM tool enables Python developers to effortlessly monitor their applications, gathering distributed tracing, metrics, logs, and profiling data for valuable insights and performance optimization."
1010
authors = [{ name = "middleware-dev" }]
@@ -35,10 +35,10 @@ dependencies =[
3535
"opentelemetry-propagator-jaeger==1.27.0",
3636
"opentelemetry-propagator-aws-xray==1.0.2",
3737
"opentelemetry-propagator-ot-trace==0.48b0",
38-
"opentelemetry-propagator-gcp==1.7.0",
38+
"opentelemetry-propagator-gcp==1.9.0",
3939
"opentelemetry-sdk-extension-aws==2.0.2",
4040
"opentelemetry-resource-detector-azure==0.1.5",
41-
"opentelemetry-resourcedetector-gcp==1.7.0a0",
41+
"opentelemetry-resourcedetector-gcp==1.9.0a0",
4242
"opentelemetry-resourcedetector-docker==0.4.0",
4343
"gitpython>=3.1.0",
4444

0 commit comments

Comments
 (0)