Developers

Developers

Overview

The Developers section contains reference materials for developing on Datadog. You may want to develop on Datadog if there is data you want to see in the product that you are not seeing. If this is the case, Datadog may already support the technology you need. See the table of commonly requested technologies to find the product or integration that may fulfill your needs.

If the solution you require is truly unavailable, you can contact Datadog Support to request a feature. You may also wish to create your own solution by using the reference materials in this section.

Partners and the Datadog Marketplace

Additionally, you may also be a partner who wants to build on Datadog and contribute to the Datadog Marketplace or to Datadog’s community integrations. See the Partner program details for information about becoming a Datadog partner.

Commonly requested technologies

If there is data you want to monitor with Datadog that you are not seeing, before building something custom, consider the following Datadog products and integrations:

logo
OpenMetricsThe Agent includes OpenMetrics and Prometheus checks capable of scraping Prometheus endpoints.
logo
Windows Performance CountersWindows services or applications that expose performance counters can be collected with the PDH integration.
logo
JMX BeansJVM-based applications expose JMX metrics that can be collected with the JMX integration. For example, the JMX integration is already used for official integrations like Solr, Tomcat, Cassandra, and more.
logo
LogsMost applications generate some type of log, it may be possible to leverage the Log Management product to accomplish base monitoring.
logo
APMThe Datadog APM & Continuous Profiler product provides out-of-the-box performance dashboards for web services, queues, and databases to monitor requests, errors, and latency.
logo
Custom MetricsCustom metrics can be submitted for business stats using developer tools like the API and DogStatsD.
logo
Custom IntegrationsDatadog Agent integrations are Python files querying for metrics. All Agent code is open source, so it's possible to write your own custom Agent integration. The integrations-extras GitHub repository contains many community developed custom Agent integrations.
logo
SNMP / Network TrafficNetwork devices, such as routers, switches, and printers emit SNMP (Simple Network Management Protocol) metrics, which can be collected with the Network Device Monitoring product. There is also the Network Performance Monitoring product, which can track all network traffic in and out of a host.
logo
EndpointFor URL uptimes, use an HTTP check or Synthetics Monitoring to validate if an endpoint or URL is running and accessible. Both work with public and private endpoints.
logo
ProcessesTo collect resource usage metrics for specific running processes on any host such as CPU, memory, I/O, etc. use the Processes integration. To query across all your running processes for open-ended debugging use Live Process Monitoring (like htop without having to SSH).
logo
Files / DirectoriesMeasuring the age of files, the number of files in a directory, or the size of a directory can be accomplished with the Directory check.
logo
Cloud ProvidersAll the major Cloud providers (AWS, GCP, Azure, Alibaba) emit metrics through APIs. Use the Datadog integration tiles in your account to configure these integrations which use Datadog servers to crawl and store your metrics.

Creating your own solution

Still not seeing the type of data that you need? Developers have several choices for sending unsupported data to Datadog.

  • DogStatsD is a metrics aggregation service that accepts custom metrics, events, and service checks.

  • Custom checks enable you to collect metrics from custom applications or systems. Custom Agent checks are suitable for many needs. For more advanced requirements like metrics preprocessing, you may choose to write an OpenMetrics check.

  • Integrations also enable you to collect metrics, events, and service checks from custom applications or systems. Integrations are reusable. You may keep your integration private, or write a public integration contributing to Datadog’s repository of community integrations to be used by other developers.

Custom check versus integration

The primary difference between custom checks and integrations is that integrations are reusable components that can become part of the Datadog’s ecosystem. They generally take more effort (time to develop) and are best suited for general use-cases such as application frameworks, open source projects, or commonly used software. For more niche scenarios, such as monitoring services that are not widely used outside your team or organization, writing a custom check may be the most efficient option.

However, you may choose to write an integration instead of a custom check if your particular use-case requires you to publish and deploy your solution as a Python wheel (.whl). Metrics emitted through custom checks are considered custom metrics, which have a cost associated based on your subscription plan. However, once an integration gets accepted into the Datadog ecosystem, metrics that it emits are no longer considered custom metrics, and do not count against your custom metric count. For more information about how this might impact cost, see Datadog Pricing.

Note: Writing a public integration (that is, one that is part of Datadog’s ecosystem, can be installed with the datadog-agent integration command, and is accepted into Datadog’s integrations-extras or integrations-core repositories) requires more work than a private integration. These integrations must pass all ddev validate steps, have usable tests, and undergo code review. You, as the code author, are the active maintainer of the integration and are responsible for ensuring its functionality.

When deciding how to send unsupported data to Datadog, the main considerations are effort (time to develop) and budget (cost of custom metrics). If you are trying to see data that Datadog doesn’t support, start by deciding which method makes the most sense to start sending data:

TypeEffortCustom MetricsLanguage
DogStatsDLowestYesAny
Custom checkLowYesPython
Private integrationMediumYesPython
Public integrationHighNoPython

If you are a partner developing for the Datadog Marketplace or community integrations, jump straight to the Marketplace and building an integration docs.

What’s the difference between a custom check and a service check?

A custom check, also know as a custom Agent check, lets you send internal service data to Datadog. A service check is much simpler and lets you monitor the up or down status of the specific service. Even though these are both checks, they have very different functionality and can be used separately and together based on your monitoring needs. For more information about each, see the custom check, and service check documentation sections.

General developer resources


Sending data by data types


Community


Other


Further Reading

Additional helpful documentation, links, and articles: