Skip to content

Datadog

Overview

Datadog ingests custom log data over a plain HTTPS endpoint — the Logs Intake API. Britive can push its audit log to any HTTPS URL through a webhook notification medium. Pointing one at the other gives you a live feed of Britive audit activity in Datadog with nothing to install and no compute to run on either side.

What you’ll accomplish:

  • Get a Datadog API key and the correct Logs Intake API endpoint for your Datadog site
  • Confirm the endpoint accepts a test log
  • Configure a webhook notification medium in Britive pointed at it
  • Attach the notification medium to Britive’s audit log so matching events are forwarded automatically

Prerequisites

Before you begin, make sure you have:

  • A Britive tenant with System admin access (to configure notification mediums and audit log webhooks)
  • A Datadog organization, and you know which Datadog site it’s on (US1, US3, US5, EU1, AP1, AP2, UK1, US1-FED, or US2-FED) — every request in this guide goes to a site-specific hostname
  • Permission to create an API key under Datadog Organization Settings

Never hardcode the Datadog API key in code or commit it to a repository. It has no built-in expiration — treat it with the same care as any other long-lived credential, and store it in a secrets manager.

How It Works

    graph LR
    A["Britive Audit Log"] -->|"event matches<br/>filter expression"| B["Webhook<br/>Notification Medium"]
    B -->|"HTTPS POST<br/>(API key on the request)"| C["Datadog<br/>Logs Intake API v2"]
    C --> D["Log indexed<br/>under ddsource / service"]
  
StageWhat happens
FilterBritive evaluates every audit event against the filter expression on the audit log webhook
ForwardA matching event is POSTed as JSON to the URL configured on the webhook notification medium
AuthenticateDatadog’s Logs Intake API validates the API key on every request
IngestDatadog stores and indexes the JSON body as a log, tagged with the ddsource and service values you set

Unlike a SIEM that requires you to provision a separate feed object first, Datadog’s Logs Intake API is a fixed, always-on endpoint per site — there’s no “create a feed” step. You only need a valid API key and the right hostname for your org’s Datadog site.

Get a Datadog API Key and Intake Endpoint

Find your Datadog site’s log intake hostname

Match your org’s Datadog site to its Logs Intake API hostname:

Datadog siteLog intake hostname
US1http-intake.logs.datadoghq.com
US3http-intake.logs.us3.datadoghq.com
US5http-intake.logs.us5.datadoghq.com
EU1http-intake.logs.datadoghq.eu
AP1http-intake.logs.ap1.datadoghq.com
AP2http-intake.logs.ap2.datadoghq.com
UK1http-intake.logs.uk1.datadoghq.com
US1-FEDhttp-intake.logs.ddog-gov.com
US2-FEDhttp-intake.logs.us2.ddog-gov.com

Your full endpoint is https://<hostname>/api/v2/logs. If you’re not sure which site you’re on, check the URL you use to log in to Datadog, or My Preferences in the Datadog UI.

Create an API key

In Datadog, go to Organization Settings → API Keys → New Key. Enter a name and click Create API key. Copy it immediately — Datadog does not guarantee you can retrieve it again later.

New keys are eventually consistent and can take a few seconds to become usable. If a test request fails with 401/403 immediately after creating the key, wait a few seconds and retry before assuming it’s wrong.

Test the Intake Endpoint

Britive’s own integration doc gives this as the verification command before wiring anything up:

test-log.sh
curl -X POST -H 'Content-Type: application/json' \
  -d '{"test": "test"}' \
  'https://http-intake.logs.us5.datadoghq.com/api/v2/logs?dd-api-key=<apikey>&ddsource=demo&service=br'

Replace us5 with your own site’s hostname from the table above, <apikey> with the key you just created, and set ddsource/service to values meaningful in your environment.

Datadog’s own Send logs API reference only documents authentication via the DD-API-KEY header, not a dd-api-key query parameter — every code sample on that page uses -H "DD-API-KEY: ${DD_API_KEY}". Run the command above and confirm it succeeds (see below) before relying on it. If it doesn’t authenticate, use the header form instead — set the URL to https://<hostname>/api/v2/logs?ddsource=demo&service=br and add DD-API-KEY as a request header on the Britive webhook notification medium (Britive’s webhook medium supports custom headers).

A successful request returns HTTP 202 and an empty body. Check the status code explicitly, since curl without -f/--fail prints nothing distinctive on success either way:

curl -s -o /dev/null -w '%{http_code}\n' -X POST -H 'Content-Type: application/json' \
  -d '{"test": "test"}' \
  'https://http-intake.logs.us5.datadoghq.com/api/v2/logs?dd-api-key=<apikey>&ddsource=demo&service=br'

Datadog’s limits on this endpoint, per request:

LimitValue
Max payload size (uncompressed)5 MB
Max size for a single log1 MB — larger logs are truncated, not rejected
Max entries in a batch array1,000

Add Content-Encoding: gzip as a header if you want to send compressed logs — Datadog recommends it, though it isn’t required for Britive’s single-event-per-request forwarding.

Once this command reliably returns 202, you’re ready to build the notification medium URL in Britive.

Configure the Webhook Notification Medium in Britive

Open Notification Mediums

Log in to Britive with administrator privileges and go to System admin → Global Settings → Notification Mediums.

Add a medium

Click Add Medium. Enter a Name (for example Datadog) and an optional Description.

Select Webhook

From the application drop-down, select Webhook. Enter the full intake URL — including the API key, ddsource, and service query parameters you just verified — as the Webhook URL:

https://http-intake.logs.<your-site-hostname>/api/v2/logs?dd-api-key=<apikey>&ddsource=britive&service=britive-audit-log

Save

Click Save. This medium is now available to attach to the audit log.

The API key sits in plain text in this URL. Britive stores it as part of the notification medium configuration — restrict who has System admin access, the same as you would for any other stored credential.

Forward Audit Logs to the Webhook

Open Manage Webhooks

Go to System admin → Audit Log → Manage Webhooks.

Add the webhook

Click Add Webhook. Select the Datadog notification medium you just created.

Set the filter expression

Leave the filter blank to receive all audit logs, or add a filter to receive a subset.

The filter expression field uses a function-call syntax — operator(field, 'value') — matching what the Manage Webhooks screen itself shows as an example:

FilterKeeps
contains(event.eventType, 'access.checkout.request')Checkout request events — the example shown directly on the Manage Webhooks screen

Only the contains(...) form above is confirmed against a live tenant. The Audit Log’s Advanced Search also documents STARTS WITH, NOT EQUALS, and EQUALS operators, which likely correspond to similarly-named functions here — and multiple conditions likely combine with and, based on the same page. Confirm the exact function names and how to combine conditions directly on your tenant’s Manage Webhooks screen before building anything beyond a single contains(...) filter.

Save

Click Save.

Audit log webhook configuration is eventually consistent. Britive’s own docs say to allow about 15 minutes after saving before you expect to see data flowing.

What Arrives in Datadog

Datadog does not require a parser the way some SIEMs do — it indexes whatever JSON keys a log contains and makes them searchable as facets. But Britive’s audit record doesn’t naturally populate Datadog’s own reserved attributes:

Datadog reserved attributeWhere it comes from here
ddsource, serviceSet by you, as query parameters on the webhook URL — fixed values for every event from this integration
hostnameNot set by Britive’s audit webhook; Datadog will show the intake source instead
messageThe full raw JSON body Britive sends — Britive’s audit event, not a plain-text message

Britive’s audit record itself carries the same five top-level groups documented for the Audit Log and used throughout Recommended Alerts: actor, client, event, target, and result. Expect to find these as nested JSON facets under whatever the log body lands as in Datadog, rather than as Datadog’s own first-class fields — capture a real event and inspect it in Datadog’s Log Explorer before building dashboards or monitors, since the exact shape hasn’t been independently confirmed against a live payload for this guide.

If you want typed fields instead of raw JSON facets, add a Log Pipeline with a JSON parser processor scoped to source:britive (or whatever ddsource you chose).

Verify

Confirm the test request still succeeds

Re-run the curl command from Test the Intake Endpoint if you haven’t already, and confirm it returns 202.

Generate a real Britive event

Perform an action in Britive that matches your filter — for example, check out a profile if your filter includes event.eventType sw access..

Confirm it arrived in Datadog

In Datadog, go to Logs → Explorer and search source:<your-ddsource> (or service:<your-service>). Allow up to 15 minutes after first saving the webhook.

Troubleshoot

SymptomLikely CauseFix
No logs in Datadog after 15+ minutesBritive webhook not attached, filter matches nothing, or wrong Datadog site hostname usedConfirm the notification medium is selected under Manage Webhooks; start with an empty filter to rule it out; double-check the intake hostname matches your org’s actual Datadog site
Test curl returns 401 or 403Missing, invalid, or not-yet-propagated API keyRe-check the key value; if newly created, wait a few seconds and retry; confirm you copied the full key with no hidden characters
Test curl returns 413Payload larger than 5 MB uncompressedBritive sends one event per request by default — this shouldn’t occur unless something else is posting to the same endpoint
Query parameter silently doesn’t authenticateThe dd-api-key query-param auth method isn’t accepted for your account or Datadog siteSwitch to the DD-API-KEY header method — see the callout under Test the Intake Endpoint
Logs arrive but every field is buried in a raw JSON blobExpected without a Log Pipeline — Datadog has no built-in Britive parserSee What Arrives in Datadog; add a JSON parser processor to a Log Pipeline scoped to your ddsource
Notification medium can’t be selected under Manage WebhooksMedium wasn’t saved as type Webhook, or wasn’t saved at allRe-check the medium under Global Settings → Notification Mediums

Next Steps

Last updated on