Getting Started with Tracing
Overview
Datadog Application Performance Monitoring (APM or tracing) is used to collect traces from your backend application code. This beginners’ guide shows you how to get your first trace into Datadog.
Note: Datadog APM is available for many languages and frameworks. See the documentation on Instrumenting Your Application
Datadog account
If you haven’t already, create a Datadog account.
Datadog Agent
Before installing the Datadog Agent, set up a Vagrant Ubuntu 22.04 virtual machine using the following commands. For more information about Vagrant, see their Getting Started page.
vagrant init ubuntu/jammy64
vagrant up
vagrant ssh
To install the Datadog Agent on a host, use the one line install command updated with your Datadog API key:
DD_API_KEY=<DATADOG_API_KEY> DD_SITE="" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"
Validation
Verify the Agent is running with the status command:
sudo datadog-agent status
After a few minutes, verify the Agent is connected to your account by checking the Infrastructure List in Datadog.
Datadog APM
Follow the in-app documentation (recommended)
For the remaining steps, follow the Quick start instructions within the Datadog site for the best experience, including:
- Step-by-step instructions scoped to your deployment configuration (in this case, a host-based deployment).
- Dynamically set
service
, env
, and version
tags. - Enable the Continuous Profiler, ingesting 100% of traces, and Trace ID injection into logs during setup.
Enable APM
For the latest versions of Agent v6 and v7, APM is enabled by default. You can see this in the Agent datadog.yaml
configuration file:
# apm_config:
## Whether or not the APM Agent should run
# enabled: true
And in trace-agent.log
:
# /var/log/datadog/trace-agent.log:
2019-03-25 20:33:18 INFO (run.go:136) - trace-agent running on host ubuntu-jammy
2019-03-25 20:33:18 INFO (api.go:144) - listening for traces at http://localhost:8126
2019-03-25 20:33:28 INFO (api.go:341) - no data received
2019-03-25 20:34:18 INFO (service.go:63) - total number of tracked services: 0
Environment name
For the best experience, it is recommended to use the the environment variable DD_ENV
to configure env
through your service’s tracer.
Additionally, if your tracer has logs injection enabled then the env
is consistent across traces and logs. Read more about how this works in Unified Service Tagging.
Alternatively, name your environment by updating datadog.yaml
to set env
under apm_config
. To learn more about setting env
for APM, see the setting primary tags to scope guide.
APM application
Installation
Before setting up the application, install pip
then flask
and ddtrace
on your Ubuntu VM:
sudo apt-get install python-pip
pip install flask
pip install ddtrace
Create
On the Ubuntu VM, create the application hello.py
with the following content:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5050)
Run
Run hello.py
with ddtrace
which automatically instruments your application in Datadog:
export DD_SERVICE=hello
ddtrace-run python hello.py
You should see a similar output to:
* Serving Flask app "hello" (lazy loading)
...
* Running on http://0.0.0.0:5050/ (Press CTRL+C to quit)
Test
Test your application and send your traces to Datadog using curl
. Your application should be running (as shown above). In a separate command prompt run:
vagrant ssh
curl http://0.0.0.0:5050/
This outputs:
After a few minutes, your trace displays in Datadog under the hello
service. Check the services page or trace list.
Further Reading
Additional helpful documentation, links, and articles: