VictoriaMetrics accepts data from DataDog agent, DogStatsD and DataDog Lambda Extension via “submit metrics” API at /datadog/api/v2/series or via “sketches” API at /datadog/api/beta/sketches.

See full list of Graphite-related configuration flags by running:

      /path/to/victoria-metrics-prod --help | grep datadog
    

VictoriaMetrics components like vmagent, vminsert or single-node can receive inserts from DataDog agent.

See how to send data to VictoriaMetrics via DataDog “submit metrics” API. The imported data can be read via export API.

Sending metrics to VictoriaMetrics #

DataDog agent allows configuring destinations for metrics sending via ENV variable DD_DD_URL or via configuration file in section dd_url.

DD to VM

To configure DataDog agent via ENV variable add the following prefix:

      DD_DD_URL=http://<victoriametrics-addr>:8428/datadog
    

Replace <victoriametrics-addr> with the VictoriaMetrics hostname or IP address.

For cluster version use vminsert address:

      http://<vminsert-addr>:8480/insert/<tenant>/datadog
    

Replace <vminsert-addr> with the hostname or IP address of vminsert service.

If you have more than 1 vminsert, configure load-balancing. Replace <tenant> based on your multitenancy settings.

To configure DataDog agent via configuration file add the following line:

      dd_url: http://<victoriametrics-addr>:8428/datadog
    

Sending metrics to DataDog and VictoriaMetrics #

DataDog allows configuring Dual Shipping via ENV variable DD_ADDITIONAL_ENDPOINTS or via configuration file additional_endpoints.

DD to VM

Run DataDog agent using the following ENV variable with VictoriaMetrics as additional metrics receiver:

      DD_ADDITIONAL_ENDPOINTS='{\"http://<victoriametrics-addr>:8428/datadog\": [\"apikey\"]}'
    

To configure DataDog Dual Shipping via configuration file add the following line:

      additional_endpoints:
  "http://<victoriametrics-addr>:8428/datadog":
  - apikey
    

Serverless DataDog plugin #

Disable logs (logs ingestion is not supported by VictoriaMetrics) and set a custom endpoint in serverless.yaml:

      custom:
  datadog:
    enableDDLogs: false             # VictoriaMetrics doesn't support logs ingestion.
    apiKey: fakekey                 # Set any key, otherwise plugin fails
provider:
  environment:
    DD_DD_URL: <victoriametrics-addr>:8428/datadog   # VictoriaMetrics endpoint for DataDog
    

For logs ingestion see DataDog integration with VictoriaLogs.

Additional details #

VictoriaMetrics automatically sanitizes metric names for the data ingested via DataDog protocol according to DataDog metric naming recommendations. If you need accepting metric names as is without sanitizing, then pass -datadog.sanitizeMetricName=false command-line flag to VictoriaMetrics.

Extra labels may be added to all the written time series by passing extra_label=name=value query args. For example, /datadog/api/v2/series?extra_label=foo=bar would add {foo="bar"} label to all the ingested metrics.

DataDog agent sends the configured tags to undocumented endpoint - /datadog/intake. This endpoint isn’t supported by VictoriaMetrics yet. This prevents from adding the configured tags to DataDog agent data sent into VictoriaMetrics. The workaround is to run a sidecar vmagent alongside every DataDog agent, which must run with DD_DD_URL=http://localhost:8429/datadog environment variable. The sidecar vmagent must be configured with the needed tags via -remoteWrite.label command-line flag and must forward incoming data with the added tags to a centralized VictoriaMetrics specified via -remoteWrite.url command-line flag.

See how to add labels to metrics on ingestion.