Datadog and Dynatrace are popular tools when it comes to monitoring and observability. In this article I have compared Datadog and Dynatrace across different aspects like getting started, infrastructure monitoring, log monitoring, pricing, etc.

✅ Info

💡 This article is my personal take based on the experience I had when integrating Datadog and Dynatrace. Some takeaways are subjective based on my personal preference

Datadog vs Dynatrace cover image

Datadog vs Dynatrace: Overview

Here’s a comparison of the main features between Datadog and Dynatrace.

FeatureDatadogDynatrace
Infrastructure monitoring
APM
Log monitoring
Real-User monitoring
SLA Monitoring
OpenTelemetry support🟡
Free tier
On premise
Cloud SIEM🟡
Workflow Automation
AIOps
Access control

✅ - Available

❌ - Not Available

🟡 - Limited

Datadog vs Dynatrace: Testing Environment

In this hands-on test, I used a Python application that was connected to a MongoDB database. In order to have a level playing field, I did not want to host them on my own machine. Instead, I opted for t2.micro EC2 instances from AWS. These come with 1 vCPU and 1 GiB of RAM. For storage, I opted for 8 GB.

I created 2 EC2 instances (one for testing Datadog, the other for Dynatrace). Next, I installed MongoDB and had my Python application running in both. After a round of basic testing to see if everything was working fine, it was time to collect some metrics.`

Sign up Process

Datadog

Going to the Datadog website, I was prompted to create an account by providing my email and other details. There was no need to provide credit card details. After verifying my email with the security code sent, my account was created, and I was taken to the next page. This asked me about my tech stack. I found this easy to follow, and you get the option to skip this.

Proceeding from here, it took me directly to the Agent Setup page. I’ll talk about this process shortly.

The Datadog signup page asked me about the stack I was going to monitor
The Datadog signup page asked me about the stack I was going to monitor

Dynatrace

Dynatrace has a similar signup process. I provided my email and other details. Once verified, my account was created. There was no prompt to enter my billing details.

One thing to note about Dynatrace is that unlike Datadog, the account creation isn’t instant. It takes a while for the signup process to complete. I was presented with a “Processing your signup” page, and that took about 4 minutes to get done.

Once completed, I was taken to the landing page. But I didn’t find the UI very intuitive. Moreover, the Dynatrace Hub takes a very long time to load. Once the Hub was loaded, it showed direct integration with AWS. But that needs IAM role for access and would monitor my entire AWS account. That wasn’t my plan. And it took quite some time for me to figure out how to proceed from there. More on that later.

Dynatrace signup took quite some time to load
Dynatrace signup took quite some time to load

Agent Installation

Datadog

As part of the sign-up process, I was taken to the Agent Installation page. I selected Amazon Linux on the left, and it gave me the required command to run.

Datadog has easy to follow instructions for setting up the agent
Datadog has easy to follow instructions for setting up the agent

I went to my Datadog EC2 and ran the command. After downloading and installing the necessary packages, the Datadog Agent was up and running on my machine. That was easy.

Datadog agent installation
Datadog agent installation

Once the Agent had started, I came back to the website to check. As expected, I could see that Datadog had started monitoring 1 host. This showed me all the infrastructure metrics.

Datadog landing page after agent is connected
Datadog landing page after agent is connected

But Datadog did not start auto capturing the application metrics. I was prompted to install another application-specific Agent. For Python, I had to install the Datadog client *ddtrace*.

Next, in order to start with the instrumentation, I had to pass additional arguments to my application startup command. The UI provided all the necessary steps to build the final command.

Datadog application specific agent installation page
Datadog application specific agent installation page

Dynatrace

I didn’t find the Dynatrace UI to be intuitive or user-friendly. It kept showing role-based monitoring for AWS, but I just needed to monitor the single instance. I knew that I needed to install an agent, but I couldn’t find the instructions anywhere. After Googling for answers, I finally ended up on the Agent installation page.

For Dynatrace, you need the OneAgent. Since I am running a Linux instance, I navigated to the corresponding page. I was asked to generate a PaaS token (since I didn’t have one already). It then showed me a set of commands that I had to run.

Dynatrace UI for installing OneAgent
Dynatrace UI for installing OneAgent

The first command downloads the installer. The second one verifies the signature. I could run those without any issues.

Downloading and verifying OneAgent
Downloading and verifying OneAgent

Next, it was time to run the OneAgent. I had to run the command with *sudo* as it required root privileges. Took a minute, and then it showed that the OneAgent was successfully connected to Dynatrace.

OneAgent connected with Dynatrace
OneAgent connected with Dynatrace

I went to the Dynatrace website to check. The OneAgent tab showed that I had one host connected, and it was being monitored.

Dynatrace OneAgent showing a single EC2 host
Dynatrace OneAgent showing a single EC2 host

Unlike Datadog, I didn’t have to install anything additional (for now). Dynatrace automatically started monitoring both the Python application, and the MongoDB I was running.

I will talk about the monitoring aspects next.

Infrastructure Monitoring: Both provide detailed views

Datadog

Datadog presented an easy-to-follow dashboard for my EC2 instance. It showed the basics like CPU, Load, and Memory, along with the processes that were running on the instance.

APM isn’t a part of this dashboard. That resides as a separate tab.

Datadog dashboard for EC2 monitoring
Datadog dashboard for EC2 monitoring

Dynatrace

Dynatrace provided a single window where all the metrics were present. As I scrolled down the page, I could find all the necessary metrics that one might need to get started with.

Dynatrace dashboard for EC2 monitoring
Dynatrace dashboard for EC2 monitoring

One major differentiator with Datadog is the fact that in Dynatrace I could navigate to the APM from this dashboard itself. The Process analysis section showed all the processes that were running on the EC2 instance.

Dynatrace dashboard offers a single view where you can see the Process analysis
Dynatrace dashboard offers a single view where you can see the Process analysis

On clicking the Python app, I was taken to a detailed view where it not only showed the application metrics but also showed how it was connected to the MongoDB process. I found this rather interesting.

Application Monitoring: Datadog is simpler to start with

Datadog

Datadog has a separate tab for APM. On navigating there, I could see both my Python application and the MongoDB database being monitored.

Clicking on the app opened up a quick view of the Performance metrics. This included Requests and Errors, Latency, and % of time spent across services.

APM in Datadog
APM in Datadog

The app specific service page provided detailed view for the monitored metrics.

Expanded APM in Datadog
Expanded APM in Datadog

Even the database monitoring for MongoDB showed important metrics, including the database resources being called, along with latency and errors.

APM for MongoDB in Datadog
APM for MongoDB in Datadog

Although everything had a separate panel, it was detailed enough to check all the necessary metrics thoroughly.

Dynatrace

After checking the infrastructure and process metrics, I wanted to look at the application metrics, along with Logs and Traces. I once again found myself lost in the UI, trying to figure out where to go next. After searching for a while, I came across the documentation for setting up application metrics.

Dynatrace offers two options for instrumentation — using the OneAgent module for Python or using OpenTelemetry. The former required changes to code, and that’s not something I was looking for. Hence, I opted for the OpenTelemetry route.

Next, it was time for me to set up the required configuration. Going through the documentation, I had to figure out the OLTP endpoint, and the access token. Generating the access token was tricky as you have to know the access scopes required. I had to go to another document to find it.

With these in place, I had to install the python packages for opentelemetry. After that, I had to restart the Python app with the opentelemetry-instrument command.

Back in the Dynatrace UI, I had to look for the Distributed Traces option. Finally, I could see the traces being generated.

Traces captured via OTel in Dynatrace
Traces captured via OTel in Dynatrace

The UI is quite detailed. Clicking on any trace shows the relevant calls, as well as the option to see the logs for the trace.

Setting up the Request tracking for the REST endpoints needed additional configuration.

Detailed traces in Dynatrace
Detailed traces in Dynatrace

Logs Monitoring: Easier Setup with Dynatrace

Datadog

By default, the log exporter is disabled in the Datadog Agent. I had to manually make the required changes. The Datadog documentation provided the necessary steps to take.

First, I had to open the datadog.yaml configuration file. This was present in the /etc/datadog-agent directory. I had to use sudo in order to add the following changes.

logs_enabled: true
logs_config:
  force_use_http: true

After this, I had to restart the agent.

But this didn’t start capturing the application logs. I had to figure out a way to mention the log file, which for me was present in /tmp/server.log for the Python application.

I navigated to the /etc/datadog-agent/conf.d directory. Here, I created a python.d folder. Inside this folder, I created a conf.yaml file with the following content.

logs:
  - type: file
    path: /tmp/server.log
    service: flaskapp
    source: python

I restarted my application. Using the datadog-agent status command, I could see that the Logs Agent was active and that it was sending logs from the log file.

Datadog agent sending logs
Datadog agent sending logs

Dynatrace

In contrast to Datadog, Dynatrace started capturing logs by default. In order to set the custom log file, I did not need to make any changes from the EC2 terminal. Rather, every configuration was driven from the Dynatrace UI.

From the Hosts Classic page, I opened the Settings for my EC2 instance. Scrolling down, I found the Log Monitoring option, inside which was the option for custom log sources. Here, I just had to provide the full file path for my server.log file.

Dynatrace UI for setting custom log sources
Dynatrace UI for setting custom log sources

With this, I was able to see the application logs.

Dynatrace UI showing events and logs
Dynatrace UI showing events and logs

Pricing

Datadog

Datadog has two major pricing options:

  • Pay As You Go
  • Create Your Own Plan

You have to manually take into account the price of every single component that you will be monitoring. While it might be intuitive if you have a very limited set of applications, this becomes complicated once that number increases.

Datadog pricing page
Datadog pricing page

Dynatrace

For Dynatrace, there is the option of opting for full-stack monitoring. But do note that not everything is covered under this, and you might need to opt additional things, or go for a custom plan by talking to the sales team.

Dynatrace pricing page
Dynatrace pricing page

Documentation: Datadog is better

Both Datadog and Dynatrace have a good amount of official documentation. Between the two, I personally found Datadog to be more straightforward. For Dynatrace, I had to open multiple documents and hop from one to the other to figure out how to do things.

Datadog also has a lot of explainer videos on YouTube that might help you set things up faster.

Datadog vs Dynatrace: Final Verdict

After using both tools, I could not come up with a clear winner. While Datadog was easier for me to integrate, Dynatrace provided more granular insights into my application.

Pricing aside, both Datadog and Dynatrace can be viable monitoring options. If you want simplicity, I’d say go for Datadog. On the other hand, if you want to control all aspects of your pipeline, Dynatrace is the answer.

Dynatrace has a steeper learning curve. The UI is also not that intuitive. You have to go through quite some documentation in order to figure out how to do simple things.

Having said that, Datadog isn’t perfect either. I was especially taken aback by the amount of additional manual setup I had to do in order to get the log ingestion to work. There also isn’t a single dashboard that gives me insights into both infra and application monitoring.

SigNoz: A Better Alternative

If you’re looking for an easy-to-use solution that covers all your monitoring needs, then look no further than SigNoz. SigNoz covers it all - Metrics, Logs, and Traces.

Here are the notable features:

  • It’s open-source
  • It’s OpenTelemetry-native
  • No hidden pricing or special pricing for custom metrics
  • No user-based or host-based pricing

Being a full-stack APM and observability tool, SigNoz offers everything that you might need in order to gain insight into your entire tech stack. Powered by Clickhouse as the underlying database, SigNoz offers blazing fast ingestion and data aggregation.

You get the crucial metrics like latency, error rates, and external calls right from the get-go. Creating custom dashboards are also a breeze.

Getting Started with SigNoz

SigNoz cloud is the easiest way to run SigNoz. Sign up for a free account and get 30 days of unlimited access to all features. Try SigNoz Cloud
CTA You can also install and self-host SigNoz yourself since it is open-source. With 16,000+ GitHub stars, open-source SigNoz is loved by developers. Find the instructions to self-host SigNoz.


Further Reading:

SigNoz - an open-source Datadog Alternative

Top 9 Dynatrace Alternatives