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()"
        }
      ]
    }
  ]
}