VictoriaMetrics components like vmagent, vminsert or single-node 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.

For logs ingestion see DataDog integration with VictoriaLogs .

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

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

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.