Repository: open-telemetry/opentelemetry-python-contrib

Issue:
`http.client.duration` metric description is incorrect
**Describe your environment** 
This is for the OpenTelemetry demo. This is the loadgenerator service in the demo that uses Locust (2.15.1) to generate a load for the demo application. It uses python 3.11-slim-buster as the base image for Python runtime. In code we leverage the `urllib3` instrumentation package with a call to `URLLib3Instrumentor().instrument()` at the top of the the locustfile.py

The `http.client.duration` metric has a description that does not conform with the OpenTelemetry semantic convention. This creates an issue when used with OpenTelemetry instrumented services that emit the same metric from a different language SDK (ie: Javascript). The OpenTelemetry Collector's, Prometheus exporter will specifically drop a metric if received that has the same name but a different description from a metric previously received.

**Steps to reproduce**
Run the demo and look at the OpenTelemetry collector logs to show an error on the Prometheus export. The error will be for the `http.client.duration` metric, indicating the Help text (description) does not match what was received prior for the same metric name. 

**What is the expected behavior?**
The description for the `http.client.duration` metric should be: `Measures the duration of outbound HTTP requests.`

This is defined in the OpenTelemetry [semantic convention](https://github.com/open-telemetry/semantic-conventions/blob/main/model/metrics/http.yaml#L157) for this metric.

**What is the actual behavior?**
The description for the `http.client.duration` metric is: `measures the duration outbound HTTP requests`

**Additional context**
https://github.com/open-telemetry/opentelemetry-python-contrib/blob/e318c947a23152c8ff1700f0aad44261be0588cd/instrumentation/opentelemetry-instrumentation-urllib3/src/opentelemetry/instrumentation/urllib3/__init__.py#L176



Discussion:

Resolving patch:
diff --git a/instrumentation/opentelemetry-instrumentation-urllib/src/opentelemetry/instrumentation/urllib/__init__.py b/instrumentation/opentelemetry-instrumentation-urllib/src/opentelemetry/instrumentation/urllib/__init__.py
--- a/instrumentation/opentelemetry-instrumentation-urllib/src/opentelemetry/instrumentation/urllib/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-urllib/src/opentelemetry/instrumentation/urllib/__init__.py
@@ -307,17 +307,17 @@ def _create_client_histograms(meter) -> Dict[str, Histogram]:
         MetricInstruments.HTTP_CLIENT_DURATION: meter.create_histogram(
             name=MetricInstruments.HTTP_CLIENT_DURATION,
             unit="ms",
-            description="measures the duration outbound HTTP requests",
+            description="Measures the duration of outbound HTTP requests.",
         ),
         MetricInstruments.HTTP_CLIENT_REQUEST_SIZE: meter.create_histogram(
             name=MetricInstruments.HTTP_CLIENT_REQUEST_SIZE,
             unit="By",
-            description="measures the size of HTTP request messages (compressed)",
+            description="Measures the size of HTTP request messages.",
         ),
         MetricInstruments.HTTP_CLIENT_RESPONSE_SIZE: meter.create_histogram(
             name=MetricInstruments.HTTP_CLIENT_RESPONSE_SIZE,
             unit="By",
-            description="measures the size of HTTP response messages (compressed)",
+            description="Measures the size of HTTP response messages.",
         ),
     }
 
diff --git a/instrumentation/opentelemetry-instrumentation-urllib3/src/opentelemetry/instrumentation/urllib3/__init__.py b/instrumentation/opentelemetry-instrumentation-urllib3/src/opentelemetry/instrumentation/urllib3/__init__.py
--- a/instrumentation/opentelemetry-instrumentation-urllib3/src/opentelemetry/instrumentation/urllib3/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-urllib3/src/opentelemetry/instrumentation/urllib3/__init__.py
@@ -183,17 +183,17 @@ def _instrument(self, **kwargs):
         duration_histogram = meter.create_histogram(
             name=MetricInstruments.HTTP_CLIENT_DURATION,
             unit="ms",
-            description="measures the duration outbound HTTP requests",
+            description="Measures the duration of outbound HTTP requests.",
         )
         request_size_histogram = meter.create_histogram(
             name=MetricInstruments.HTTP_CLIENT_REQUEST_SIZE,
             unit="By",
-            description="measures the size of HTTP request messages (compressed)",
+            description="Measures the size of HTTP request messages.",
         )
         response_size_histogram = meter.create_histogram(
             name=MetricInstruments.HTTP_CLIENT_RESPONSE_SIZE,
             unit="By",
-            description="measures the size of HTTP response messages (compressed)",
+            description="Measures the size of HTTP response messages.",
         )
 
         _instrument(


Test patch: