OpsCanary
observabilitygrafanaPractitioner

Visualizing Workflows in Grafana: Mastering the Graphviz Panel

5 min read Grafana BlogReviewed for accuracy
Share
PractitionerHands-on experience recommended

In today's fast-paced development environments, visualizing workflows and business processes is crucial for effective monitoring and decision-making. The Graphviz panel in Grafana addresses this need by allowing you to create dynamic visual representations of your processes. Instead of manually drawing diagrams, you describe them using DOT, a graph-description language that Graphviz has refined for over 30 years. This approach not only saves time but also ensures that your diagrams automatically adjust as your data changes.

The Graphviz panel operates in three modes: Builder mode, Code mode, and Query mode. Builder mode is perfect for quick sketches, enabling you to click and add nodes and edges without writing any code. For those who prefer more control, Code mode allows you to write DOT directly, incorporating dashboard variables for a tailored experience. Query mode takes it a step further, binding live data to your diagrams by returning DOT strings from your queries. This flexibility means you can create anything from simple flowcharts to complex service maps that reflect real-time metrics.

Currently, the Graphviz panel is in private preview across all editions of Grafana, which means you might encounter some limitations. Angular support has ended with Grafana 12, so be aware of potential compatibility issues. As you implement this tool, keep in mind that while it offers powerful visualization capabilities, it may not be suitable for every scenario. Always consider the scale and requirements of your project before diving in.

Key takeaways

  • Utilize Builder mode for quick sketches without coding.
  • Leverage Code mode for detailed control using DOT language.
  • Bind live data to diagrams using Query mode for real-time insights.
  • Remember that Graphviz is in private preview; expect potential limitations.
  • Stay aware of compatibility issues, especially with Angular support ending in Grafana 12.

Why it matters

Visualizing workflows in real-time can significantly enhance your team's ability to monitor processes and identify bottlenecks, leading to faster decision-making and improved operational efficiency.

Code examples

DOT
digraph {
  Checkout -> Authorization -> "Fraud Check" -> Settlement
}
DOT
1digraph payment_flow {
2  rankdir=LR;
3  bgcolor="transparent";
4  node [shape=box style="rounded,filled" fontname="Inter" fontcolor="white" penwidth=0];
5  edge [color="#8e8e8e" fontname="Inter" fontsize=10 fontcolor="#c7c7c7"];
6
7  Checkout     [label="Checkout\n1,240 tx/min"       fillcolor="#73BF69"];
8  Authorize    [label="Authorization\n99.2% success"  fillcolor="#73BF69"];
9  Fraud        [label="Fraud Check\np95 420ms"         fillcolor="#FADE2A"];
10  Settlement   [label="Settlement\n1,180 tx/min"       fillcolor="#73BF69"];
11  Payout       [label="Payout\nclearing"               fillcolor="#73BF69"];
12  Review       [label="Manual Review\n8 queued"        fillcolor="#FF9830"];
13
14  Checkout -> Authorize [label="1.2k/min"];
15  Authorize -> Fraud    [label="99.4%"];
16  Fraud -> Settlement   [label="99.4%"];
17  Fraud -> Review       [label="0.6%" color="#FF9830"];
18  Settlement -> Payout;
19}
DOT
1digraph service_map {
2  rankdir=TB;
3  bgcolor="transparent";
4  node [shape=box style="rounded,filled" fontname="Inter" fontcolor="white" penwidth=0];
5  edge [color="#8e8e8e"];
6
7  gateway  [label="api-gateway\n2.1k req/s"   fillcolor="#73BF69"];
8  web      [label="web\n1.4k req/s"           fillcolor="#73BF69"];
9  checkout [label="checkout\np95 180ms"        fillcolor="#73BF69"];
10  catalog  [label="catalog\np95 90ms"          fillcolor="#73BF69"];
11  payments [label="payments\np95 890ms"        fillcolor="#FADE2A"];
12  orders   [label="orders\np95 210ms"          fillcolor="#73BF69"];
13  postgres [label="postgres\n96% conns"        fillcolor="#F2495C"];
14  cache    [label="redis\n41% mem"             fillcolor="#73BF69"];
15
16  gateway -> web      [penwidth=4];
17  gateway -> catalog  [penwidth=2];
18  web -> checkout     [penwidth=3];
19  checkout -> payments[penwidth=3 color="#FADE2A"];
20  checkout -> orders  [penwidth=2];
21  payments -> postgres[penwidth=4 color="#F2495C"];
22  orders -> postgres  [penwidth=3 color="#F2495C"];
23  catalog -> cache    [penwidth=2];
24}

When NOT to use this

The official docs don't call out specific anti-patterns here. Use your judgment based on your scale and requirements.

Want the complete reference?

Read official docs

Test what you just learned

Quiz questions written from this article

Take the quiz →
DigitalOcean Serverless InferenceSponsor

OpenAI & Anthropic-compatible inference API — no GPU provisioning needed. 55+ models, pay-per-token with no minimums. VPC + zero data retention by default.

Try Serverless Inference →

Get the daily digest

One email. 5 articles. Every morning.

No spam. Unsubscribe anytime.