Try it free

Set up Cost Allocation for logs

  • Latest Dynatrace
  • How-to guide
  • 4-min read
  • Published Nov 04, 2026

You can use Cost Allocation to allocate your Dynatrace Platform Subscription (DPS) usage to the cost centers and products that you define.

Allocating costs provides a transparent and detailed account of the Dynatrace expenditures that originate from each cost center or product, which in turn helps your organization optimize its budgets. Cost Allocation works with log data regardless of your ingestion method.

On this page, you'll learn how to set up Cost Allocation for log data.

Overview

For ingested logs, you can allocate costs related to ingest, retain, and query consumption.

  • Dynatrace natively supports Cost Allocation for Log - Ingest, Log - Retain, and Log - Retain with Included Queries, as described on this page.
  • To allocate Log - Query costs, see Configure user-based Cost Allocation for queries, Automation Workflow, and Agentic AppEngine.

We recommend setting up Cost Allocation along organizational lines and deployment scopes. Suitable concepts include log.source, dt.host_group.id, k8s.cluster.name, and k8s.namespace.name. These attributes are typically available on all logs, regardless of ingest method.

To add Cost Allocation information to your log data, enrich your records with the dt.cost.costcenter and dt.cost.product Grail attributes. Cost Allocation works regardless of how the logs were ingested, whether via OneAgent, the Log Ingest API, cloud log forwarders, or OpenTelemetry.

Allocate log ingest and retention costs

Depending on how you ingest your logs, there are different ways to allocate your costs. Our recommendations are:

  • If you ingest via OneAgent or Kubernetes: Enrich on ingest.
  • If you ingest via API: Enrich either at the source, or via OpenPipeline.

Enrich on ingest

With ingest enrichment, you can create rules to automatically enrich all ingested log signals with dt.cost.costcenter and dt.cost.product. The data is stored in Grail:

  • It's available via Dashboards Dashboards, Notebooks Notebooks, Account Management, and the Dynatrace API.
  • You can use the data across Dynatrace (for example, pipeline routing, bucket assignment, access control, as well as Cost Allocation) without any post-processing steps.

For more information about enriching on ingest, see Configure ingest enrichment rules.

Enrich at the source

You can define Cost Allocation at the source via OneAgent, Kubernetes labels or annotations, or OpenTelemetry.

This lets you use your existing labels and tags, so that dt.cost.costcenter and dt.cost.product are already present when your data arrives.

Enrich with OpenPipeline

If you only need to allocate costs at the deployment level of granularity (such as log source, cluster, or namespace), you can use OpenPipeline to

  • Map primary Grail fields (works for most use cases).
  • Derive Cost Allocation tags based on multiple fields (if you have a more sophisticated tagging strategy for cost centers).

Map primary Grail fields

Do this in the Cost allocation and Product allocation stages in OpenPipeline.

  1. Identify the primary Grail field that you want to base your allocation on, such as log.source or k8s.namespace.name.
  2. Go to OpenPipeline OpenPipeline > Logs.
  3. Go to the Pipelines tab, select an existing pipeline or create a new one, and go to the Cost allocation stage (to set dt.cost.costcenter) or the Product allocation stage (to set dt.cost.product).
  4. Add a DPS Cost Allocation - Cost Center or DPS Cost Allocation - Product processor. Define a matching condition, and set the value either as a static string or copied from a field on the record.

For the full list of parameters and processor examples, see Cost allocation via OpenPipeline.

Derive cost centers or products based on multiple fields

If you have a more sophisticated strategy for cost center tags, it might not be enough to map a single field directly to dt.cost.costcenter or dt.cost.product.

In this case, we recommend that you use a DQL processor in OpenPipeline to derive cost centers or products from a combination of fields, and then set dt.cost.costcenter or dt.cost.product from the resulting field with the Cost allocation stage. For examples, see OpenPipeline processing examples.

Before you change the values of dt.cost.costcenter or dt.cost.product, make sure they're defined in the Cost Allocation allow lists.

Related topics

  • Set up Cost Allocation
  • Set up Grail permissions for logs
  • Cost allocation via OpenPipeline
  • Set up Cost Allocation for OneAgent deployments
  • Set up Cost Allocation for Kubernetes deployments
Related tags
Dynatrace Platform