This article focuses on use cases where custom fields are necessary and provides examples of how to create custom problems fields to achieve the desired result.
Event sources can attach important metadata, such as dt.owner
or app-id
, as event fields. This allows you to define custom event fields directly within the configurations of their respective event sources.
Assume that you have a team-specific anomaly detector that needs to be configured on top of a DQL query to continuously monitor a metric and report a violation event if abnormal behavior is detected. The team's automation framework needs to automatically define a custom event field, dt.owner
, containing the owning team's name.
To do this, you need to define your own dt.owner
and app-id
event fields within the Anomaly Detector configuration.
We recommend that you use the interval: 1m
parameter to ensure proper data resolution for the analysis.
Abnormally high network traffic
.Abnormally high network traffic was detected for cluster 23
.Set the following Event properties:
Event property
Value
dt.source_entity
{dims.dt.source_entity}
event.type
ERROR_EVENT
event.name
Abnormally high network traffic
event.description
Abnormally high network traffic was detected for cluster 23
dt.owner
app-team-us-23
app-id
app-23
After you add the fields dt.owner
and app-id
to your anomaly detector configuration, each resulting violation event will be tagged with these new fields. The next step is to propagate these fields from the single violation events to problems.
To add a new field mapping
dt.owner
.app-id
.Once this configuration is saved, all newly created problems will automatically include field values from the single events for these keys.
Problem records in Grail are immutable. This means that you can modify the field mapping configuration at any time, but previously recorded problems that were closed before the modifications will not change. Any changes in field mapping or field naming will only apply after the configuration change.
Once this configuration step is complete, you can write DQL queries to filter problems using your newly introduced fields. The problem feed will automatically include your custom fields within the table and the filter bar at the top, as shown below:
All fields that occur on single violation events and are defined by the Dynatrace permission system as record permissions are automatically mapped onto problems. This allows you to segregate and manage access to the Dynatrace Grail data lake based on reading permissions for various user groups.
Assume you need to apply a policy to problems and Davis events that will allow your team to see the dt.security_context
field. You can do so by setting the policy boundaries within your team’s group permissions.
First, you need to configure dt.security_context
field within the problem field mapping settings.
app_id
.dt.security_context
.Once the security_context
field is successfully mapped on your problems, you can define a new policy boundary that uses the previously mapped security_context
field.
Team 23 boundary
.storage:dt.security_context IN ("app-23");
.Next, create a new Event Read permission and use it to assign the newly created boundary. The result should look similar to the example below:
Finally, map the new permission to an existing group of users.
In addition to applying the policy to problems and Davis events, setting the policy boundary allows you to apply the policy to all available Grail tables consistently. This avoids the unnecessary creation of many policy configs for each Grail table separately and allows a more efficient management of access within large-scale environments.
Since problem fields are natively stored in Grail, they eliminate the need for costly DQL joins. These fields are also natively transmitted through OpenPipeline and therefore can be used as workflow triggers, ensuring seamless integration.
Setting up filters based on problem fields offers several advantages:
You can use problem field filters to:
This approach allows you to enhance the overall efficiency and effectiveness of your monitoring and alerting processes.