Workflow Views
NOTE: This is a beta feature, undergoing fast iterations and documents might be outdated. You might have a better visibility from changelogs. Or directly message our team if you have any further queries.
Objective:
The Workflow builder is being designed to help you bring together metrics from different dashboards and even sources, into a single dashboard. For example, look at the visualisation below. In this visualisation:
- You are tracking product metrics related to the payment funnel
- Monitoring API latencies & error % for critical APIs
Creating a workflow
Creating a workflow means you need to have metrics defined before you can actually plot them. This could be:
- Metrics defined within Doctor Droid platform
- Connections established with 3rd party integration sources
Currently for workflow views, only the following metric sources are enabled:
Post connecting to other metric sources, to create a workflow, simply write the JSON in the following format:
{
"compare_to": "enter_past_comparison_time_here", // 1h, 1d, 1w, 1mo
"nodes": [
{
"name": "node_name_here",
"metrics": [
{
"name": "metric_name",
"source": "source_name", // Allowed Sources: Datadog, Sentry, Dr-Droid
"expr": "expression" //As per the specific source guidelines
},
{
"name": "metric_name_2",
"source": "source_name_2", // Allowed Sources: Datadog, Sentry, Dr-Droid
"expr": "expression_2" //As per the specific source guidelines
}
]
},
{
"name": "node_name_2",
"metrics": [
{
"name": "metric_name_2a",
"source": "source_name_2a", // Allowed Sources: Datadog, Sentry, Dr-Droid
"expr": "expression_2a" //As per the specific source guidelines
},
{
"name": "metric_name_2b",
"source": "source_name_2b", // Allowed Sources: Datadog, Sentry, Dr-Droid
"expr": "expression_2b" //As per the specific source guidelines
}
]
}
]
}
Sample Output:
Configuration for Sample Output:
{
"compare_to": "1d",
"nodes": [
{
"name": "ingestion API",
"metrics": [
{
"name": "Hits",
"source":"Datadog",
"expr": "sum:trace.django.request.hits{env:prod,service:ingest}.as_count()"
},
{
"name": "Errors",
"source":"Datadog",
"expr": "sum:trace.django.request.errors{env:prod,service:ingest}.as_count()"
},
{
"name": "Avg Latency",
"source":"Datadog",
"expr": "avg:trace.django.request{env:prod,service:ingest}"
}
]
},
{
"name": "Raw",
"metrics": [
{
"name": "Hits",
"source":"Datadog",
"expr": "sum:trace.kafka_consumer.raw_events.consume_msgs.hits{env:prod,service:raw-events-consumer-ingest}.as_count()"
},
{
"name": "Avg Latency",
"source":"Datadog",
"expr": "avg:trace.kafka_consumer.raw_events.consume_msgs{env:prod,service:raw-events-consumer-ingest}"
}
]
},
{
"name": "Processed",
"metrics": [
{
"name": "Hits",
"source":"Datadog",
"expr": "sum:trace.kafka_consumer.processed_events.consume_msgs.hits{env:prod,service:processed-events-clickhouse-consumer-ingest}.as_count()"
}
]
}
]
}
Updated about 9 hours ago