Skip to content

Commit c6775d7

Browse files
committed
Add autoinstrumentation
1 parent 645cd72 commit c6775d7

File tree

24 files changed

+535
-85
lines changed

24 files changed

+535
-85
lines changed

packages/aws-library/requirements/_base.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ aiocache
1111
arrow
1212
pydantic[email]
1313
types-aiobotocore[ec2,s3,ssm]
14+
opentelemetry-instrumentation-botocore
1415
sh

packages/aws-library/requirements/_base.txt

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,11 @@ opentelemetry-api==1.27.0
127127
# opentelemetry-exporter-otlp-proto-grpc
128128
# opentelemetry-exporter-otlp-proto-http
129129
# opentelemetry-instrumentation
130+
# opentelemetry-instrumentation-aio-pika
131+
# opentelemetry-instrumentation-botocore
132+
# opentelemetry-instrumentation-redis
130133
# opentelemetry-instrumentation-requests
134+
# opentelemetry-propagator-aws-xray
131135
# opentelemetry-sdk
132136
# opentelemetry-semantic-conventions
133137
opentelemetry-exporter-otlp==1.27.0
@@ -141,9 +145,21 @@ opentelemetry-exporter-otlp-proto-grpc==1.27.0
141145
opentelemetry-exporter-otlp-proto-http==1.27.0
142146
# via opentelemetry-exporter-otlp
143147
opentelemetry-instrumentation==0.48b0
144-
# via opentelemetry-instrumentation-requests
148+
# via
149+
# opentelemetry-instrumentation-aio-pika
150+
# opentelemetry-instrumentation-botocore
151+
# opentelemetry-instrumentation-redis
152+
# opentelemetry-instrumentation-requests
153+
opentelemetry-instrumentation-aio-pika==0.48b0
154+
# via -r requirements/../../../packages/service-library/requirements/_base.in
155+
opentelemetry-instrumentation-botocore==0.48b0
156+
# via -r requirements/_base.in
157+
opentelemetry-instrumentation-redis==0.48b0
158+
# via -r requirements/../../../packages/service-library/requirements/_base.in
145159
opentelemetry-instrumentation-requests==0.48b0
146160
# via -r requirements/../../../packages/service-library/requirements/_base.in
161+
opentelemetry-propagator-aws-xray==1.0.2
162+
# via opentelemetry-instrumentation-botocore
147163
opentelemetry-proto==1.27.0
148164
# via
149165
# opentelemetry-exporter-otlp-proto-common
@@ -156,6 +172,8 @@ opentelemetry-sdk==1.27.0
156172
# opentelemetry-exporter-otlp-proto-http
157173
opentelemetry-semantic-conventions==0.48b0
158174
# via
175+
# opentelemetry-instrumentation-botocore
176+
# opentelemetry-instrumentation-redis
159177
# opentelemetry-instrumentation-requests
160178
# opentelemetry-sdk
161179
opentelemetry-util-http==0.48b0
@@ -297,6 +315,8 @@ wrapt==1.16.0
297315
# aiobotocore
298316
# deprecated
299317
# opentelemetry-instrumentation
318+
# opentelemetry-instrumentation-aio-pika
319+
# opentelemetry-instrumentation-redis
300320
yarl==1.12.1
301321
# via
302322
# aio-pika

packages/postgres-database/requirements/_base.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77
alembic
88
pydantic
99
sqlalchemy[postgresql_psycopg2binary,postgresql_asyncpg] # SEE extras in https://github.com/sqlalchemy/sqlalchemy/blob/main/setup.cfg#L43
10+
opentelemetry-instrumentation-aiopg
1011
yarl

packages/postgres-database/requirements/_base.txt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@ async-timeout==4.0.3
44
# via asyncpg
55
asyncpg==0.29.0
66
# via sqlalchemy
7+
deprecated==1.2.14
8+
# via
9+
# opentelemetry-api
10+
# opentelemetry-semantic-conventions
711
greenlet==3.1.1
812
# via sqlalchemy
913
idna==3.10
1014
# via yarl
15+
importlib-metadata==8.4.0
16+
# via opentelemetry-api
1117
mako==1.3.5
1218
# via
1319
# -c requirements/../../../requirements/constraints.txt
@@ -16,12 +22,30 @@ markupsafe==2.1.5
1622
# via mako
1723
multidict==6.1.0
1824
# via yarl
25+
opentelemetry-api==1.27.0
26+
# via
27+
# opentelemetry-instrumentation
28+
# opentelemetry-instrumentation-aiopg
29+
# opentelemetry-instrumentation-dbapi
30+
# opentelemetry-semantic-conventions
31+
opentelemetry-instrumentation==0.48b0
32+
# via
33+
# opentelemetry-instrumentation-aiopg
34+
# opentelemetry-instrumentation-dbapi
35+
opentelemetry-instrumentation-aiopg==0.48b0
36+
# via -r requirements/_base.in
37+
opentelemetry-instrumentation-dbapi==0.48b0
38+
# via opentelemetry-instrumentation-aiopg
39+
opentelemetry-semantic-conventions==0.48b0
40+
# via opentelemetry-instrumentation-dbapi
1941
psycopg2-binary==2.9.9
2042
# via sqlalchemy
2143
pydantic==1.10.18
2244
# via
2345
# -c requirements/../../../requirements/constraints.txt
2446
# -r requirements/_base.in
47+
setuptools==75.2.0
48+
# via opentelemetry-instrumentation
2549
sqlalchemy==1.4.54
2650
# via
2751
# -c requirements/../../../requirements/constraints.txt
@@ -31,5 +55,13 @@ typing-extensions==4.12.2
3155
# via
3256
# alembic
3357
# pydantic
58+
wrapt==1.16.0
59+
# via
60+
# deprecated
61+
# opentelemetry-instrumentation
62+
# opentelemetry-instrumentation-aiopg
63+
# opentelemetry-instrumentation-dbapi
3464
yarl==1.12.1
3565
# via -r requirements/_base.in
66+
zipp==3.20.2
67+
# via importlib-metadata

packages/postgres-database/requirements/_tools.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@ pyyaml==6.0.2
6868
# pre-commit
6969
ruff==0.6.7
7070
# via -r requirements/../../../requirements/devenv.txt
71-
setuptools==75.1.0
72-
# via pip-tools
71+
setuptools==75.2.0
72+
# via
73+
# -c requirements/_base.txt
74+
# pip-tools
7375
tomlkit==0.13.2
7476
# via pylint
7577
typing-extensions==4.12.2

packages/service-library/requirements/_base.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ faststream
1818
opentelemetry-api
1919
opentelemetry-exporter-otlp
2020
opentelemetry-instrumentation-requests
21+
opentelemetry-instrumentation-aio-pika
22+
opentelemetry-instrumentation-redis
2123
opentelemetry-sdk
2224
psutil
2325
pydantic

packages/service-library/requirements/_base.txt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ opentelemetry-api==1.27.0
9393
# opentelemetry-exporter-otlp-proto-grpc
9494
# opentelemetry-exporter-otlp-proto-http
9595
# opentelemetry-instrumentation
96+
# opentelemetry-instrumentation-aio-pika
97+
# opentelemetry-instrumentation-redis
9698
# opentelemetry-instrumentation-requests
9799
# opentelemetry-sdk
98100
# opentelemetry-semantic-conventions
@@ -107,7 +109,14 @@ opentelemetry-exporter-otlp-proto-grpc==1.27.0
107109
opentelemetry-exporter-otlp-proto-http==1.27.0
108110
# via opentelemetry-exporter-otlp
109111
opentelemetry-instrumentation==0.48b0
110-
# via opentelemetry-instrumentation-requests
112+
# via
113+
# opentelemetry-instrumentation-aio-pika
114+
# opentelemetry-instrumentation-redis
115+
# opentelemetry-instrumentation-requests
116+
opentelemetry-instrumentation-aio-pika==0.48b0
117+
# via -r requirements/_base.in
118+
opentelemetry-instrumentation-redis==0.48b0
119+
# via -r requirements/_base.in
111120
opentelemetry-instrumentation-requests==0.48b0
112121
# via -r requirements/_base.in
113122
opentelemetry-proto==1.27.0
@@ -122,6 +131,7 @@ opentelemetry-sdk==1.27.0
122131
# opentelemetry-exporter-otlp-proto-http
123132
opentelemetry-semantic-conventions==0.48b0
124133
# via
134+
# opentelemetry-instrumentation-redis
125135
# opentelemetry-instrumentation-requests
126136
# opentelemetry-sdk
127137
opentelemetry-util-http==0.48b0
@@ -219,6 +229,8 @@ wrapt==1.16.0
219229
# via
220230
# deprecated
221231
# opentelemetry-instrumentation
232+
# opentelemetry-instrumentation-aio-pika
233+
# opentelemetry-instrumentation-redis
222234
yarl==1.12.1
223235
# via
224236
# aio-pika

packages/service-library/src/servicelib/fastapi/tracing.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,33 @@
1616
from settings_library.tracing import TracingSettings
1717

1818
log = logging.getLogger(__name__)
19+
#########
20+
try:
21+
from opentelemetry.instrumentation.aiopg import AsyncPGInstrumentor
22+
23+
HAS_ASYNCPG = True
24+
except ImportError:
25+
HAS_ASYNCPG = False
26+
#########
27+
try:
28+
from opentelemetry.instrumentation.asyncpg import AiopgInstrumentor
29+
30+
HAS_AIPPG = True
31+
except ImportError:
32+
HAS_AIPPG = False
33+
#########
34+
try:
35+
from opentelemetry.instrumentation.redis import RedisInstrumentor
36+
37+
HAS_REDIS = True
38+
except ImportError:
39+
HAS_REDIS = False
40+
try:
41+
from opentelemetry.instrumentation.botocore import BotocoreInstrumentor
42+
43+
HAS_BOTOCORE = True
44+
except ImportError:
45+
HAS_BOTOCORE = False
1946

2047

2148
def setup_tracing(
@@ -35,7 +62,7 @@ def setup_tracing(
3562
assert isinstance(global_tracer_provider, TracerProvider) # nosec
3663
tracing_destination: str = f"{tracing_settings.TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT}:{tracing_settings.TRACING_OPENTELEMETRY_COLLECTOR_PORT}/v1/traces"
3764
log.info(
38-
"Trying to connect service %s to tracing collector at %s.",
65+
"Trying to connect service %s to opentelemetry tracing collector at %s.",
3966
service_name,
4067
tracing_destination,
4168
)
@@ -45,3 +72,16 @@ def setup_tracing(
4572
global_tracer_provider.add_span_processor(span_processor)
4673
# Instrument FastAPI
4774
FastAPIInstrumentor().instrument_app(app)
75+
76+
if HAS_AIPPG:
77+
log.info("Attempting to add aiopg opentelemetry autoinstrumentation...")
78+
AiopgInstrumentor().instrument()
79+
if HAS_ASYNCPG:
80+
log.info("Attempting to add asyncpg opentelemetry autoinstrumentation...")
81+
AsyncPGInstrumentor().instrument()
82+
if HAS_REDIS:
83+
log.info("Attempting to add redis opentelemetry autoinstrumentation...")
84+
RedisInstrumentor().instrument()
85+
if HAS_BOTOCORE:
86+
log.info("Attempting to add botocore opentelemetry autoinstrumentation...")
87+
BotocoreInstrumentor().instrument()

services/agent/requirements/_base.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,10 @@ opentelemetry-api==1.27.0
139139
# opentelemetry-exporter-otlp-proto-grpc
140140
# opentelemetry-exporter-otlp-proto-http
141141
# opentelemetry-instrumentation
142+
# opentelemetry-instrumentation-aio-pika
142143
# opentelemetry-instrumentation-asgi
143144
# opentelemetry-instrumentation-fastapi
145+
# opentelemetry-instrumentation-redis
144146
# opentelemetry-instrumentation-requests
145147
# opentelemetry-sdk
146148
# opentelemetry-semantic-conventions
@@ -156,13 +158,19 @@ opentelemetry-exporter-otlp-proto-http==1.27.0
156158
# via opentelemetry-exporter-otlp
157159
opentelemetry-instrumentation==0.48b0
158160
# via
161+
# opentelemetry-instrumentation-aio-pika
159162
# opentelemetry-instrumentation-asgi
160163
# opentelemetry-instrumentation-fastapi
164+
# opentelemetry-instrumentation-redis
161165
# opentelemetry-instrumentation-requests
166+
opentelemetry-instrumentation-aio-pika==0.48b0
167+
# via -r requirements/../../../packages/service-library/requirements/_base.in
162168
opentelemetry-instrumentation-asgi==0.48b0
163169
# via opentelemetry-instrumentation-fastapi
164170
opentelemetry-instrumentation-fastapi==0.48b0
165171
# via -r requirements/../../../packages/service-library/requirements/_fastapi.in
172+
opentelemetry-instrumentation-redis==0.48b0
173+
# via -r requirements/../../../packages/service-library/requirements/_base.in
166174
opentelemetry-instrumentation-requests==0.48b0
167175
# via -r requirements/../../../packages/service-library/requirements/_base.in
168176
opentelemetry-proto==1.27.0
@@ -179,6 +187,7 @@ opentelemetry-semantic-conventions==0.48b0
179187
# via
180188
# opentelemetry-instrumentation-asgi
181189
# opentelemetry-instrumentation-fastapi
190+
# opentelemetry-instrumentation-redis
182191
# opentelemetry-instrumentation-requests
183192
# opentelemetry-sdk
184193
opentelemetry-util-http==0.48b0
@@ -327,6 +336,8 @@ wrapt==1.16.0
327336
# via
328337
# deprecated
329338
# opentelemetry-instrumentation
339+
# opentelemetry-instrumentation-aio-pika
340+
# opentelemetry-instrumentation-redis
330341
yarl==1.12.1
331342
# via
332343
# aio-pika

0 commit comments

Comments
 (0)