Metadata-Version: 2.1
Name: solarwinds-apm
Version: 0.12.1
Summary: Custom distro for OpenTelemetry to connect to SolarWinds
Home-page: https://www.appoptics.com/monitor/python-performance
Download-URL: https://pypi.org/project/solarwinds-apm/
Author: SolarWinds, LLC
Author-email: SWO-support@solarwinds.com
Keywords: solarwinds_apm appoptics_apm traceview tracelytics oboe liboboe instrumentation performance opentelemetry
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Typing :: Typed
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: opentelemetry-api (==1.18.0)
Requires-Dist: opentelemetry-sdk (==1.18.0)
Requires-Dist: opentelemetry-instrumentation (==0.39b0)
Requires-Dist: opentelemetry-instrumentation-logging (==0.39b0)

[![PyPI version](https://badge.fury.io/py/solarwinds-apm.svg)](https://badge.fury.io/py/solarwinds-apm) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/solarwinds-apm) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg?color=red)](https://github.com/solarwindscloud/solarwinds-apm-python/blob/main/LICENSE)

# solarwinds-apm-python
An [OpenTelemetry Python](https://opentelemetry-python.readthedocs.io/) distribution for SolarWinds Observability. Provides automatic configuration, instrumentation, and APM data export for Python applications.

----
## Requirements
All published artifacts support Python 3.7 or higher. A full list of system requirements is available at [SolarWinds Observability System Requirements](https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=app-sysreqs-python-agent).

See [CONTRIBUTING.md](https://github.com/solarwindscloud/solarwinds-apm-python/blob/main/CONTRIBUTING.md) for how to build for development.

## Getting Started
SolarWinds APM captures OpenTelemetry distributed traces and metrics from your application and sends them to SolarWinds Observability for analysis and visualization.

To install `solarwinds-apm-python` and all relevant Opentelemetry Python instrumentation libraries:
```
pip install solarwinds-apm
opentelemetry-bootstrap --action=install
```

`solarwinds_apm` already includes OpenTelemetry and therefore doesn't need to be installed separately. Python agent installation should be done _after_ installation of all other service dependencies. This is so `opentelemetry-bootstrap` detects those packages and installs their corresponding instrumentation libraries. For example:

```
pip install -r requirements.txt           # installs all other dependencies
pip install solarwinds-apm
opentelemetry-bootstrap --action=install
```

Set the service key and ingestion endpoint. An easy way to do this is via environment variables available to your application process. An example:

```
export SW_APM_SERVICE_KEY=<set-service-key-here>
export SW_APM_COLLECTOR=<set-collector-here>
```

Run your application with the prefix `opentelemetry-instrument` to wrap all common Python frameworks and start exporting OpenTelemetry traces and metrics:
```
opentelemetry-instrument <command_to_run_your_service>
```

You can also add custom span generation to your code by using the OpenTelemetry SDK. For example:
```
from opentelemetry import trace
tracer = trace.get_tracer(__name__)

with tracer.start_as_current_span("my_custom_span") as custom_span:
   custom_span.set_attribute("my_custom_attribute", "foo_value")
   print("Here is my custom OpenTelemetry span")
```


## Documentation

OpenTelemetry Python documentation is available at the [OpenTelemetry-Python API Reference](https://opentelemetry-python.readthedocs.io/).

Online documentation for SolarWinds APM Python features, configuration, and more is available at [SolarWinds Observability](https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=app-add-python-agent).


## Contributing

OpenTelemetry Python would not be possible without collaborations and efforts from many contributors. Our common goals as a community are to improve end user/developer experiences and empower them.

For more information about contributing to `solarwinds-apm-python`, see [CONTRIBUTING.md](https://github.com/solarwindscloud/solarwinds-apm-python/blob/main/CONTRIBUTING.md). Thank you to everyone who has contributed:

<a href="https://github.com/solarwindscloud/solarwinds-apm-python/graphs/contributors">
  <img src="https://contributors-img.web.app/image?repo=solarwindscloud/solarwinds-apm-python" />
</a>
