Skip to content

Commit 1b9dc9a

Browse files
committed
Merge branch 'open-telemetry:main' into grpc_dev
2 parents ea0a4a3 + 7625b82 commit 1b9dc9a

File tree

121 files changed

+1130
-353
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+1130
-353
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
- 'release/*'
77
pull_request:
88
env:
9-
CORE_REPO_SHA: c09f2076a1878c6d58b78d3895485ef5559f30f7
9+
CORE_REPO_SHA: ece57231cde5bb5656775a62f027cab0b1c76fce
1010

1111
jobs:
1212
build:

CHANGELOG.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,27 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v1.12.0rc2-0.32b0...HEAD)
8+
## [Unreleased]
9+
10+
## [1.12.0-0.33b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.12.0-0.33b0) - 2022-08-08
11+
912
- Adding multiple db connections support for django-instrumentation's sqlcommenter
1013
([#1187](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1187))
1114
- SQLCommenter semicolon bug fix
1215
([#1200](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1200/files))
16+
- Adding sqlalchemy native tags in sqlalchemy commenter
17+
([#1206](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1206))
18+
- Add psycopg2 native tags to sqlcommenter
19+
([#1203](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1203))
1320

1421
### Added
1522
- `opentelemetry-instrumentation-redis` add support to instrument RedisCluster clients
1623
([#1177](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1177))
1724
- `opentelemetry-instrumentation-sqlalchemy` Added span for the connection phase ([#1133](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/1133))
25+
- Add metric instrumentation in asgi
26+
([#1197](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1197))
27+
- Add metric instumentation for flask
28+
([#1186](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1186))
1829

1930
## [1.12.0rc2-0.32b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.12.0rc2-0.32b0) - 2022-07-01
2031

@@ -51,6 +62,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
5162
([#1127](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1127))
5263
- Add metric instrumentation for WSGI
5364
([#1128](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1128))
65+
- Add metric instrumentation for Urllib3
66+
([#1198](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1198))
5467
- `opentelemetry-instrumentation-aio-pika` added RabbitMQ aio-pika module instrumentation.
5568
([#1095](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1095))
5669
- `opentelemetry-instrumentation-requests` Restoring metrics in requests

_template/setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ package_dir=
4747
packages=find_namespace:
4848

4949
install_requires =
50-
opentelemetry-api ~= 1.3
50+
opentelemetry-api ~= 1.12
5151

5252
[options.extras_require]
5353
test =

_template/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.32b0"
15+
__version__ = "0.33b0"

docs-requirements.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,6 @@ httpx>=0.18.0
4141

4242
# indirect dependency pins
4343
markupsafe==2.0.1
44-
itsdangerous==2.0.1
44+
itsdangerous==2.0.1
45+
46+
docutils==0.16

eachdist.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ sortfirst=
1616
ext/*
1717

1818
[stable]
19-
version=1.12.0rc2
19+
version=1.12.0
2020

2121
packages=
2222
opentelemetry-sdk
@@ -34,7 +34,7 @@ packages=
3434
opentelemetry-api
3535

3636
[prerelease]
37-
version=0.32b0
37+
version=0.33b0
3838

3939
packages=
4040
all

exporter/opentelemetry-exporter-datadog/setup.cfg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ package_dir=
4141
packages=find_namespace:
4242
install_requires =
4343
ddtrace>=0.34.0,<0.47.0
44-
opentelemetry-api ~= 1.3
45-
opentelemetry-sdk ~= 1.3
44+
opentelemetry-api ~= 1.12
45+
opentelemetry-sdk ~= 1.12
4646
opentelemetry-semantic-conventions == 0.30b0
4747

4848
[options.packages.find]

exporter/opentelemetry-exporter-richconsole/setup.cfg

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ package_dir=
4141
packages=find_namespace:
4242
install_requires =
4343
rich>=10.0.0
44-
opentelemetry-api ~= 1.3
45-
opentelemetry-sdk ~= 1.3
46-
opentelemetry-semantic-conventions == 0.32b0
44+
opentelemetry-api ~= 1.12
45+
opentelemetry-sdk ~= 1.12
46+
opentelemetry-semantic-conventions == 0.33b0
4747

4848
[options.packages.find]
4949
where = src

exporter/opentelemetry-exporter-richconsole/src/opentelemetry/exporter/richconsole/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.32b0"
15+
__version__ = "0.33b0"

instrumentation/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
| [opentelemetry-instrumentation-elasticsearch](./opentelemetry-instrumentation-elasticsearch) | elasticsearch >= 2.0 | No
1818
| [opentelemetry-instrumentation-falcon](./opentelemetry-instrumentation-falcon) | falcon >= 1.4.1, < 4.0.0 | No
1919
| [opentelemetry-instrumentation-fastapi](./opentelemetry-instrumentation-fastapi) | fastapi ~= 0.58 | No
20-
| [opentelemetry-instrumentation-flask](./opentelemetry-instrumentation-flask) | flask >= 1.0, < 3.0 | No
20+
| [opentelemetry-instrumentation-flask](./opentelemetry-instrumentation-flask) | flask >= 1.0, < 3.0 | Yes
2121
| [opentelemetry-instrumentation-grpc](./opentelemetry-instrumentation-grpc) | grpcio ~= 1.27 | No
2222
| [opentelemetry-instrumentation-httpx](./opentelemetry-instrumentation-httpx) | httpx >= 0.18.0 | No
2323
| [opentelemetry-instrumentation-jinja2](./opentelemetry-instrumentation-jinja2) | jinja2 >= 2.7, < 4.0 | No
@@ -40,5 +40,5 @@
4040
| [opentelemetry-instrumentation-system-metrics](./opentelemetry-instrumentation-system-metrics) | psutil >= 5 | No
4141
| [opentelemetry-instrumentation-tornado](./opentelemetry-instrumentation-tornado) | tornado >= 5.1.1 | No
4242
| [opentelemetry-instrumentation-urllib](./opentelemetry-instrumentation-urllib) | urllib | No
43-
| [opentelemetry-instrumentation-urllib3](./opentelemetry-instrumentation-urllib3) | urllib3 >= 1.0.0, < 2.0.0 | No
43+
| [opentelemetry-instrumentation-urllib3](./opentelemetry-instrumentation-urllib3) | urllib3 >= 1.0.0, < 2.0.0 | Yes
4444
| [opentelemetry-instrumentation-wsgi](./opentelemetry-instrumentation-wsgi) | wsgi | Yes

instrumentation/opentelemetry-instrumentation-aio-pika/setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ install_requires =
4848
test =
4949
pytest
5050
wrapt >= 1.0.0, < 2.0.0
51-
opentelemetry-test-utils == 0.32b0
51+
opentelemetry-test-utils == 0.33b0
5252

5353
[options.packages.find]
5454
where = src

instrumentation/opentelemetry-instrumentation-aio-pika/src/opentelemetry/instrumentation/aio_pika/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.32b0"
15+
__version__ = "0.33b0"

instrumentation/opentelemetry-instrumentation-aiohttp-client/setup.cfg

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ package_dir=
4040
=src
4141
packages=find_namespace:
4242
install_requires =
43-
opentelemetry-api ~= 1.3
44-
opentelemetry-semantic-conventions == 0.32b0
45-
opentelemetry-instrumentation == 0.32b0
46-
opentelemetry-util-http == 0.32b0
43+
opentelemetry-api ~= 1.12
44+
opentelemetry-semantic-conventions == 0.33b0
45+
opentelemetry-instrumentation == 0.33b0
46+
opentelemetry-util-http == 0.33b0
4747
wrapt >= 1.0.0, < 2.0.0
4848

4949
[options.packages.find]
@@ -54,4 +54,4 @@ test =
5454

5555
[options.entry_points]
5656
opentelemetry_instrumentor =
57-
aiohttp-client = opentelemetry.instrumentation.aiohttp_client:AioHttpClientInstrumentor
57+
aiohttp-client = opentelemetry.instrumentation.aiohttp_client:AioHttpClientInstrumentor

instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.32b0"
15+
__version__ = "0.33b0"

instrumentation/opentelemetry-instrumentation-aiopg/setup.cfg

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ package_dir=
4040
=src
4141
packages=find_namespace:
4242
install_requires =
43-
opentelemetry-api ~= 1.3
44-
opentelemetry-instrumentation-dbapi == 0.32b0
45-
opentelemetry-instrumentation == 0.32b0
43+
opentelemetry-api ~= 1.12
44+
opentelemetry-instrumentation-dbapi == 0.33b0
45+
opentelemetry-instrumentation == 0.33b0
4646
wrapt >= 1.0.0, < 2.0.0
4747

4848
[options.extras_require]
4949
test =
50-
opentelemetry-test-utils == 0.32b0
51-
opentelemetry-semantic-conventions == 0.32b0
50+
opentelemetry-test-utils == 0.33b0
51+
opentelemetry-semantic-conventions == 0.33b0
5252

5353
[options.packages.find]
5454
where = src

instrumentation/opentelemetry-instrumentation-aiopg/src/opentelemetry/instrumentation/aiopg/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.32b0"
15+
__version__ = "0.33b0"

instrumentation/opentelemetry-instrumentation-asgi/setup.cfg

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ package_dir=
4040
=src
4141
packages=find_namespace:
4242
install_requires =
43-
opentelemetry-api ~= 1.3
44-
opentelemetry-semantic-conventions == 0.32b0
45-
opentelemetry-instrumentation == 0.32b0
46-
opentelemetry-util-http == 0.32b0
43+
opentelemetry-api ~= 1.12
44+
opentelemetry-semantic-conventions == 0.33b0
45+
opentelemetry-instrumentation == 0.33b0
46+
opentelemetry-util-http == 0.33b0
4747
asgiref ~= 3.0
4848

4949
[options.extras_require]
5050
test =
51-
opentelemetry-test-utils == 0.32b0
51+
opentelemetry-test-utils == 0.33b0
5252

5353
[options.packages.find]
5454
where = src

instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ def client_response_hook(span: Span, message: dict):
149149
import typing
150150
import urllib
151151
from functools import wraps
152+
from timeit import default_timer
152153
from typing import Tuple
153154

154155
from asgiref.compatibility import guarantee_single_callable
@@ -162,13 +163,16 @@ def client_response_hook(span: Span, message: dict):
162163
_start_internal_or_server_span,
163164
http_status_to_status_code,
164165
)
166+
from opentelemetry.metrics import get_meter
165167
from opentelemetry.propagators.textmap import Getter, Setter
166168
from opentelemetry.semconv.trace import SpanAttributes
167169
from opentelemetry.trace import Span, set_span_in_context
168170
from opentelemetry.trace.status import Status, StatusCode
169171
from opentelemetry.util.http import (
170172
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST,
171173
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE,
174+
_parse_active_request_count_attrs,
175+
_parse_duration_attrs,
172176
get_custom_headers,
173177
normalise_request_header_name,
174178
normalise_response_header_name,
@@ -391,9 +395,21 @@ def __init__(
391395
client_request_hook: _ClientRequestHookT = None,
392396
client_response_hook: _ClientResponseHookT = None,
393397
tracer_provider=None,
398+
meter_provider=None,
394399
):
395400
self.app = guarantee_single_callable(app)
396401
self.tracer = trace.get_tracer(__name__, __version__, tracer_provider)
402+
self.meter = get_meter(__name__, __version__, meter_provider)
403+
self.duration_histogram = self.meter.create_histogram(
404+
name="http.server.duration",
405+
unit="ms",
406+
description="measures the duration of the inbound HTTP request",
407+
)
408+
self.active_requests_counter = self.meter.create_up_down_counter(
409+
name="http.server.active_requests",
410+
unit="requests",
411+
description="measures the number of concurrent HTTP requests that are currently in-flight",
412+
)
397413
self.excluded_urls = excluded_urls
398414
self.default_span_details = (
399415
default_span_details or get_default_span_details
@@ -426,12 +442,17 @@ async def __call__(self, scope, receive, send):
426442
context_carrier=scope,
427443
context_getter=asgi_getter,
428444
)
429-
445+
attributes = collect_request_attributes(scope)
446+
attributes.update(additional_attributes)
447+
active_requests_count_attrs = _parse_active_request_count_attrs(
448+
attributes
449+
)
450+
duration_attrs = _parse_duration_attrs(attributes)
451+
if scope["type"] == "http":
452+
self.active_requests_counter.add(1, active_requests_count_attrs)
430453
try:
431454
with trace.use_span(span, end_on_exit=True) as current_span:
432455
if current_span.is_recording():
433-
attributes = collect_request_attributes(scope)
434-
attributes.update(additional_attributes)
435456
for key, value in attributes.items():
436457
current_span.set_attribute(key, value)
437458

@@ -454,10 +475,18 @@ async def __call__(self, scope, receive, send):
454475
span_name,
455476
scope,
456477
send,
478+
duration_attrs,
457479
)
480+
start = default_timer()
458481

459482
await self.app(scope, otel_receive, otel_send)
460483
finally:
484+
if scope["type"] == "http":
485+
duration = max(round((default_timer() - start) * 1000), 0)
486+
self.duration_histogram.record(duration, duration_attrs)
487+
self.active_requests_counter.add(
488+
-1, active_requests_count_attrs
489+
)
461490
if token:
462491
context.detach(token)
463492

@@ -478,7 +507,9 @@ async def otel_receive():
478507

479508
return otel_receive
480509

481-
def _get_otel_send(self, server_span, server_span_name, scope, send):
510+
def _get_otel_send(
511+
self, server_span, server_span_name, scope, send, duration_attrs
512+
):
482513
@wraps(send)
483514
async def otel_send(message):
484515
with self.tracer.start_as_current_span(
@@ -489,6 +520,9 @@ async def otel_send(message):
489520
if send_span.is_recording():
490521
if message["type"] == "http.response.start":
491522
status_code = message["status"]
523+
duration_attrs[
524+
SpanAttributes.HTTP_STATUS_CODE
525+
] = status_code
492526
set_status_code(server_span, status_code)
493527
set_status_code(send_span, status_code)
494528
elif message["type"] == "websocket.send":

instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.32b0"
15+
__version__ = "0.33b0"

0 commit comments

Comments
 (0)