Metadata-Version: 2.1
Name: bottle-elastic-apm
Version: 0.1.1
Summary: Plugin to implement instrumentation of elastic apm on a bottle server.
Home-page: https://gitlab.com/TruckPad/utils/bottle-elastic-apm
Author: TruckPad Dev Team
Author-email: devs@truckpad.com.br
License: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Internet :: WWW/HTTP
Description-Content-Type: text/markdown
License-File: LICENSE

# Bottle Elastic APM

Simple plugin to use ELK with APM server for your bottle application

### Using default_app

> `default_app()` uses AppStack, so you only need to install it once.

```python
from bottle import default_app, run
from bottle_elastic_apm import ElasticAPM, make_apm_client

ELK_CONFIG = {
    'service_name': 'my-app',
}

app = default_app()
app2 = default_app()

apm_client = make_apm_client(**ELK_CONFIG) # avoid multi client instances
app.install(ElasticAPM(client=apm_client))

@app.get('/')
def index():
    return 'Hello world!'

@app2.get('/2')
def index2():
    return 'Hello world!'

run(app)
```

### Using Bottle()

> `Bottle()` don't uses AppStack, so you need to install on all of them.

```python
from bottle import Bottle, run
from bottle_elastic_apm import ElasticAPM, make_apm_client

ELK_CONFIG = {
    'service_name': 'my-app',
}

app = Bottle()
app2 = Bottle()
app.mount('v2', app2)

apm_client = make_apm_client(**ELK_CONFIG) # avoid multi client instances
app.install(ElasticAPM(client=apm_client))
app2.install(ElasticAPM(client=apm_client))

@app.get('/')
def index():
    return 'Hello world!'

@app2.get('/2')
def index2():
    return 'Hello world!'

run(app)
```


### Avoid capture specific errors

```python
from bottle import default_app
from bottle_elastic_apm import ElasticAPM, make_apm_client

ELK_CONFIG = {
    'service_name': 'my-app',
}

app = default_app()
apm_client = make_apm_client(**ELK_CONFIG) # avoid multi client instances
app.install(ElasticAPM(client=apm_client, avoided_errors={(401, 'JWT: Signature has expired',)}))
```


