Dynatrace Integration - EasyAlert

Dynatrace
Receive problem notifications from Dynatrace
Overview
Easyalert automatically detects and processes Problem Notification webhooks from Dynatrace.
Requirements
- Dynatrace account (SaaS or Managed)
- Easyalert account and active tenant
- Access to Settings > Integration > Problem notifications in Dynatrace
Setup Instructions
Step 1: Create Integration in Easyalert
- Go to Integrations page from left menu
- Click Add Integration button
- Select Dynatrace as Source Type
- Enter a name (e.g.,
Dynatrace Production) - Click Create to save
- Copy the generated Webhook URL
Example:
https://api.easyalert.io/api/v1/webhooks/ingest/wh_abc123...
Step 2: Create Webhook in Dynatrace
Go to Settings → Integration → Problem notifications → Add notification
| Field | Value |
|---|---|
| Display name | Easyalert |
| Webhook URL | Your Webhook URL |
| Notification type | Custom integration |
Step 3: Configure Payload Template
Use this recommended payload:
{
"PID": "{PID}",
"ProblemID": "{ProblemID}",
"State": "{State}",
"ProblemImpact": "{ProblemImpact}",
"ProblemSeverity": "{ProblemSeverity}",
"ProblemTitle": "{ProblemTitle}",
"ProblemURL": "{ProblemURL}",
"ProblemDetailsText": "{ProblemDetailsText}",
"ImpactedEntities": {ImpactedEntities},
"ImpactedEntityNames": "{ImpactedEntityNames}",
"Tags": "{Tags}",
"ProblemStartTime": {ProblemStartTime},
"ProblemEndTime": {ProblemEndTime},
"customer": "YOUR_CUSTOMER_NAME",
"team": "YOUR_TEAM_NAME",
"environment": "production"
}
⚠️ Warning: IMPORTANT:
{ImpactedEntities},{ProblemStartTime},{ProblemEndTime}must NOT be in quotes!
Step 4: Test the Integration
Use the Send test notification button in Dynatrace.
Placeholder Variables
| Placeholder | Description |
|---|---|
{PID} | Problem ID (short form) |
{ProblemID} | Full problem identifier |
{ProblemTitle} | Problem title |
{ProblemDetailsText} | Detailed description |
{ProblemSeverity} | Severity level |
{ProblemImpact} | Impact type (INFRASTRUCTURE, SERVICE, APPLICATION) |
{State} | OPEN, RESOLVED, or MERGED |
{ProblemURL} | Link to problem in Dynatrace |
{ImpactedEntities} | JSON array of affected entities |
{ImpactedEntityNames} | Entity names (comma-separated) |
{RootCauseEntity} | Root cause entity |
{ProblemStartTime} | Start time (epoch ms) |
{ProblemEndTime} | End time (epoch ms, -1 if open) |
{Tags} | Problem tags |
Field Mapping
| Dynatrace Field | Easyalert Field |
|---|---|
PID / ProblemID | Event ID |
ProblemTitle | Title |
ProblemDetailsText | Description |
State | Status |
ProblemSeverity | Severity |
ProblemImpact | Impact tag |
ImpactedEntityNames | Host/Service |
ProblemURL | URL |
State and Severity Mapping
Status Mapping
| Dynatrace State | Easyalert Status |
|---|---|
OPEN | Problem |
RESOLVED | OK |
MERGED | Problem (linked) |
Severity Mapping
| Dynatrace Severity | Easyalert Severity |
|---|---|
AVAILABILITY | Critical |
ERROR | Critical |
PERFORMANCE | High |
RESOURCE_CONTENTION | Warning |
CUSTOM_ALERT | Warning |
Custom Field → Tag Conversion
All custom fields and tags from {Tags} placeholder are automatically captured as tags.
Dynatrace Tags
{Tags} placeholder brings entity tags:
env:production,team:backend,customer:acme
In Easyalert:
tags.env = "production"
tags.team = "backend"
tags.customer = "acme"
Custom Field Example
Added to template:
{
"datacenter": "EU-West",
"project": "ecommerce"
}
In Easyalert:
tags.datacenter = "EU-West"
tags.project = "ecommerce"
Routing Examples
Escalation Routing:
tags.customer equals "AcmeCorp" → Acme Corp Policy
tags.env equals "production" → Production Policy
tags.team equals "backend" → Backend Team Policy
Notification Rules:
tags.ProblemSeverity equals "AVAILABILITY" → call + sms + email
tags.ProblemImpact equals "SERVICE" → Service Team channel
Impact Types
Dynatrace categorizes problem impact:
| Impact | Description |
|---|---|
INFRASTRUCTURE | Affects infrastructure components |
SERVICE | Affects monitored services |
APPLICATION | Affects applications |
ENVIRONMENT | Affects entire environment |
Impact is captured as a tag for routing.
Test
curl -X POST "YOUR_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{
"PID": "P-123",
"ProblemID": "P-123",
"State": "OPEN",
"ProblemSeverity": "ERROR",
"ProblemTitle": "High failure rate",
"ProblemURL": "https://abc.dynatrace.com/#problems",
"ImpactedEntities": [{"type": "SERVICE", "name": "api-service"}],
"Tags": "env:production,team:backend",
"ProblemStartTime": 1733234400000,
"customer": "TestCustomer"
}'
Recovery Test
curl -X POST "YOUR_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{
"PID": "P-123",
"ProblemID": "P-123",
"State": "RESOLVED",
"ProblemEndTime": 1733238000000
}'
Alerting Profile Integration
Configure which problems trigger notifications:
- Go to Settings → Alerting → Alerting profiles
- Create or edit a profile
- Define severity and scope rules
- Link to your webhook notification
This allows fine-grained control over which problems reach Easyalert.
Troubleshooting
Notifications not being received
- Verify webhook URL in Dynatrace settings
- Test with "Send test notification" button
- Check Dynatrace notification logs
- Verify SSL/TLS settings if using HTTPS
- Is notification enabled?
Custom fields not becoming tags
- Verify field is added to template
- Check field name spelling
- View webhook samples in Easyalert
Invalid JSON error
- Ensure
{ImpactedEntities}is NOT in quotes - Ensure
{ProblemStartTime}is NOT in quotes - Ensure
{ProblemEndTime}is NOT in quotes - Validate JSON syntax
Resolved problems not closing incidents
- Ensure
Statefield is in payload - Check that RESOLVED state is being sent
- Verify
PIDmatches between OPEN and RESOLVED
Missing entity information
- Include
{ImpactedEntityNames}in payload - Check that problem has entity association
- Use
{ImpactedEntities}for detailed JSON
Best Practices
Use Alerting Profiles: Filter which problems send notifications to avoid noise from low-priority issues.
Include Problem URL: Always include {ProblemURL} so responders can quickly access Dynatrace for details.
Tag Your Entities: Use Dynatrace tags (environment, team, service) for better routing in Easyalert.
Add Custom Fields for Routing: Include customer, team, environment in payload for escalation routing.
Configure Problem Detection: Tune Dynatrace's automatic problem detection to reduce false positives before they reach Easyalert.