This example provides a docker-compose
file based on
the Quick start development environment
for APM. It gets the default distributions of Elasticsearch,
Kibana and APM Server up and running in Docker.
The docker-compose file also includes a basic FastAPI application using
AsyncElasticsearch
to execute requests asychronously
and a script to ping the web app with different endpoints.
- Install Docker Compose
- Run
docker-compose up
on the root folder of this example (examples/fastapi-apm/
)$ cd examples/fastapi-apm $ docker-compose up
- Follow the steps on the full documentation at elastic.co to get APM set up in your Kibana instance.
The following services will be available:
- Kibana: http://localhost:5601
- Elasticsearch: http://localhost:9200
- APM Server: http://localhost:8200
- FastAPI app: http://localhost:9292
Use your web browser or curl
against http://localhost:9292/ to check that
everything is working. You should see a JSON response from cluster.health
.
The docker-compose file will also run a ping.py
script.
This script will make requests irregularly to the web app to simulate
proper traffic and fill your APM Dashboard with data, even errors.
You can comment the pinger container from docker-compose.yml
if you want
to have all the services running and test the different endpoints (or add your own)
by yourself.
Once the app is running, you can open the following routes in your web browser or via curl
. The responses are in JSON:
/
- The root path returns the response fromcluster.health
/ingest
- This will bulk insert 1,000 documents in thegames
index in slices of 250 at a time./search/{param}
- Returns search results forparam
./error
- This route will trigger an error./delete
- This route will delete all the data in thegames
index./delete/{id}
- This route will delete a document with the given id from thegames
index./update/
- This route will update themodified
field on some docs in thegames
index./doc/{id}
- This route will return a document with a given ID from Elasticsearch.
Data is based on a DB dump from February 25, 2020 of TheGamesDB game data:
https://cdn.thegamesdb.net/json/database-latest.json