Skip to content

Commit

Permalink
Add missing using instrumentation libraries pages: Python (#4369)
Browse files Browse the repository at this point in the history
  • Loading branch information
theletterf committed May 2, 2024
1 parent b2f1a44 commit d8844b5
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 0 deletions.
110 changes: 110 additions & 0 deletions content/en/docs/languages/python/libraries.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
title: Using instrumentation libraries
linkTitle: Libraries
weight: 40
cSpell:ignore: HTTPX httpx instrumentor uninstrument
---

{{% docs/languages/libraries-intro "Python" %}}

## Use instrumentation libraries

If a library does not ship with native OpenTelemetry support, you can use
[instrumentation libraries](/docs/specs/otel/glossary/#instrumentation-library)
to generate telemetry data for a library or framework.

For example,
[the instrumentation library for HTTPX](https://pypi.org/project/opentelemetry-instrumentation-httpx/)
automatically creates [spans](/docs/concepts/signals/traces/#spans) based on
HTTP requests.

## Setup

You can install each instrumentation library separately using pip. For example:

```sh
pip install opentelemetry-instrumentation-{instrumented-library}
```

In the previous example, `{instrumented-library}` is the name of the
instrumentation.

To install a development version, clone or fork the
`opentelemetry-python-contrib` repository and run the following command to do an
editable installation:

```sh
pip install -e ./instrumentation/opentelemetry-instrumentation-{integration}
```

After installation, you will need to initialize the instrumentation library.
Each library typically has its own way to initialize.

## Example with HTTPX instrumentation

Here's how you can instrument HTTP requests made using the `httpx` library.

First, install the instrumentation library using pip:

```sh
pip install opentelemetry-instrumentation-httpx
```

Next, use the instrumentor to automatically trace requests from all clients:

```python
import httpx
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor

url = "https://some.url/get"
HTTPXClientInstrumentor().instrument()

with httpx.Client() as client:
response = client.get(url)

async with httpx.AsyncClient() as client:
response = await client.get(url)
```

### Turn off instrumentations

If needed, you can uninstrument specific clients or all clients using the
`uninstrument_client` method. For example:

```python
import httpx
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor

HTTPXClientInstrumentor().instrument()
client = httpx.Client()

# Uninstrument a specific client
HTTPXClientInstrumentor.uninstrument_client(client)

# Uninstrument all clients
HTTPXClientInstrumentor().uninstrument()
```

## Available instrumentation libraries

A full list of instrumentation libraries produced by OpenTelemetry is available
from the [opentelemetry-python-contrib][] repository.

You can also find more instrumentations available in the
[registry](/ecosystem/registry/?language=python&component=instrumentation).

## Next steps

After you have set up instrumentation libraries, you might want to add your own
[instrumentation](/docs/languages/python/instrumentation) to your code, to
collect custom telemetry data.

You might also want to configure an appropriate exporter to
[export your telemetry data](/docs/languages/python/exporters) to one or more
telemetry backends.

You can also check the
[automatic instrumentation for Python](/docs/languages/python/automatic).

[opentelemetry-python-contrib]:
https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation#readme
8 changes: 8 additions & 0 deletions static/refcache.json
Original file line number Diff line number Diff line change
Expand Up @@ -3823,6 +3823,10 @@
"StatusCode": 200,
"LastSeen": "2024-01-18T19:37:26.943394-05:00"
},
"https://github.com/open-telemetry/opentelemetry-python-contrib/": {
"StatusCode": 200,
"LastSeen": "2024-04-26T12:45:03.066448+02:00"
},
"https://github.com/open-telemetry/opentelemetry-python/": {
"StatusCode": 200,
"LastSeen": "2024-01-10T11:27:53.222542-08:00"
Expand Down Expand Up @@ -7127,6 +7131,10 @@
"StatusCode": 206,
"LastSeen": "2024-01-30T16:14:48.105173-05:00"
},
"https://pypi.org/project/opentelemetry-instrumentation-httpx/": {
"StatusCode": 206,
"LastSeen": "2024-04-28T16:14:45.577134727Z"
},
"https://qryn.metrico.in/#/support": {
"StatusCode": 206,
"LastSeen": "2024-01-30T16:03:54.589618-05:00"
Expand Down

0 comments on commit d8844b5

Please sign in to comment.