<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Journey overview on Grafana Labs</title><link>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/</link><description>Recent content in Journey overview on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/learning-hub/dashboards-as-code-git-sync/01-intro/index.xml" rel="self" type="application/rss+xml"/><item><title>Journey overview</title><link>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/01-course-overview/</link><pubDate>Tue, 11 Aug 2026 10:11:48 +0200</pubDate><guid>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/01-course-overview/</guid><content><![CDATA[&lt;h2 id=&#34;what-youll-learn&#34;&gt;What you&amp;rsquo;ll learn&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;ve ever lost track of who changed a dashboard, or spent an afternoon recreating panels someone deleted by accident, this journey is for you. You&amp;rsquo;ll manage dashboards the same way you manage application code: define them in a programming language, keep the files in Git, and keep Grafana aligned with that repository.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-build&#34;&gt;What you&amp;rsquo;ll build&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;A dashboard defined in Go or TypeScript with the Foundation SDK&lt;/li&gt;
&lt;li&gt;JSON for that dashboard stored in a GitHub repository&lt;/li&gt;
&lt;li&gt;Grafana kept in sync with that Git repository through Git Sync&lt;/li&gt;
&lt;li&gt;A GitHub Actions pipeline that regenerates the JSON when code changes&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By the end, every dashboard change can go through version control, and Grafana stays aligned with your dashboards stored in Git.&lt;/p&gt;
]]></content><description>&lt;h2 id="what-youll-learn">What you&amp;rsquo;ll learn&lt;/h2>
&lt;p>If you&amp;rsquo;ve ever lost track of who changed a dashboard, or spent an afternoon recreating panels someone deleted by accident, this journey is for you. You&amp;rsquo;ll manage dashboards the same way you manage application code: define them in a programming language, keep the files in Git, and keep Grafana aligned with that repository.&lt;/p></description></item><item><title>Who this journey is for</title><link>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/02-who-this-is-for/</link><pubDate>Tue, 11 Aug 2026 10:11:48 +0200</pubDate><guid>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/02-who-this-is-for/</guid><content><![CDATA[&lt;h2 id=&#34;youre-in-the-right-place-if-you&#34;&gt;You&amp;rsquo;re in the right place if you&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Already use Git to review workflows and want dashboards in that same process&lt;/li&gt;
&lt;li&gt;Are tired of manual dashboard management that doesn&amp;rsquo;t scale&lt;/li&gt;
&lt;li&gt;Want version control and pull requests for your observability stack without adopting Terraform (plan-and-apply infrastructure-as-code) for dashboard deploy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This journey deploys dashboards with Git Sync. If your team already standardizes on Terraform for Grafana resources, take the Terraform version of this journey instead.&lt;/p&gt;

&lt;a  class=&#34;btn btn--primary btn--large&#34; href=&#34;/docs/learning-hub/dashboards-as-code/&#34; rel=&#34;noopener noreferrer&#34;&gt;
Dashboards as Code with the Foundation SDK and Terraform
&lt;/a&gt;
&lt;h2 id=&#34;assumed-knowledge&#34;&gt;Assumed knowledge&lt;/h2&gt;
&lt;p&gt;You don&amp;rsquo;t need to be an expert, but you should be familiar with the following tools and concepts.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Skill&lt;/th&gt;
              &lt;th&gt;Level needed&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Grafana&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Know what dashboards, panels, and data sources are&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Git &#43; GitHub&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Comfortable with branches, commits, and pull requests&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Go or TypeScript&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Can read code snippets in either language&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;You don&amp;rsquo;t need prior experience with the Foundation SDK or Git Sync. This journey covers both from scratch. Terraform is not required.&lt;/p&gt;
]]></content><description>&lt;h2 id="youre-in-the-right-place-if-you">You&amp;rsquo;re in the right place if you&lt;/h2>
&lt;ul>
&lt;li>Already use Git to review workflows and want dashboards in that same process&lt;/li>
&lt;li>Are tired of manual dashboard management that doesn&amp;rsquo;t scale&lt;/li>
&lt;li>Want version control and pull requests for your observability stack without adopting Terraform (plan-and-apply infrastructure-as-code) for dashboard deploy&lt;/li>
&lt;/ul>
&lt;p>This journey deploys dashboards with Git Sync. If your team already standardizes on Terraform for Grafana resources, take the Terraform version of this journey instead.&lt;/p></description></item><item><title>Why Grafana as code</title><link>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/03-why-as-code/</link><pubDate>Tue, 11 Aug 2026 10:11:48 +0200</pubDate><guid>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/03-why-as-code/</guid><content><![CDATA[&lt;h2 id=&#34;the-problem-with-manual-processes&#34;&gt;The problem with manual processes&lt;/h2&gt;
&lt;p&gt;Your team has 30 dashboards across staging and production. Someone tweaks a threshold in production on Friday afternoon, and by Monday no one remembers what changed or why. That&amp;rsquo;s &lt;strong&gt;dashboard drift&lt;/strong&gt;: live dashboards silently diverging from their intended state. Manual dashboard management creates three recurring problems like this that grow worse as your team scales.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Problem&lt;/th&gt;
              &lt;th&gt;What happens&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;dashboard drift&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Anyone with edit access can change a dashboard in the UI with no review, so the live version diverges from what you intended&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Duplication&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Teams copy dashboards instead of sharing one source; fixes don&amp;rsquo;t propagate&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;No audit trail&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;You can&amp;rsquo;t answer &amp;ldquo;who changed what, when, and why&amp;rdquo; at scale&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;how-as-code-solves-this&#34;&gt;How as code solves this&lt;/h2&gt;
&lt;p&gt;Managing dashboards as code means keeping dashboard definitions in version-controlled files instead of only in the UI. You gain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Version control.&lt;/strong&gt; Every change is a Git commit with context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code review.&lt;/strong&gt; Pull requests catch mistakes before they reach production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automation.&lt;/strong&gt; A CI/CD pipeline can regenerate files so what&amp;rsquo;s in the repo stays the source of truth.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recovery.&lt;/strong&gt; You can restore a known-good version from Git after a bad edit or accidental delete.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h2 id="the-problem-with-manual-processes">The problem with manual processes&lt;/h2>
&lt;p>Your team has 30 dashboards across staging and production. Someone tweaks a threshold in production on Friday afternoon, and by Monday no one remembers what changed or why. That&amp;rsquo;s &lt;strong>dashboard drift&lt;/strong>: live dashboards silently diverging from their intended state. Manual dashboard management creates three recurring problems like this that grow worse as your team scales.&lt;/p></description></item><item><title>The Observability as Code tools landscape</title><link>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/04-tools-landscape/</link><pubDate>Tue, 11 Aug 2026 10:11:48 +0200</pubDate><guid>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/04-tools-landscape/</guid><content><![CDATA[&lt;h2 id=&#34;grafanas-observability-as-code-tools&#34;&gt;Grafana&amp;rsquo;s Observability as Code tools&lt;/h2&gt;
&lt;p&gt;Grafana offers several as-code tools. Each solves a different part of the problem, and they can work together. This diagram shows how they relate in a generate-and-sync workflow.&lt;/p&gt;

&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;tools-landscape.svg&#34; title=&#34;Diagram showing how Observability as Code tools connect: Foundation SDK generates dashboard JSON, which flows to gcx, Terraform, or Git Sync for use with Grafana&#34;&gt;
    &lt;img
      class=&#34;lazyload d-inline-block&#34;
      data-src=&#34;tools-landscape.svg&#34;
      alt=&#34;Diagram showing how Observability as Code tools connect: Foundation SDK generates dashboard JSON, which flows to gcx, Terraform, or Git Sync for use with Grafana&#34; width=&#34;800&#34; height=&#34;320&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;This journey focuses on the &lt;strong&gt;Foundation SDK&lt;/strong&gt; (generate) &#43; &lt;strong&gt;Git Sync&lt;/strong&gt; (sync) &#43; &lt;strong&gt;GitHub Actions&lt;/strong&gt; (automate) workflow. While the SDK alone only creates dashboards as code but doesn&amp;rsquo;t update Grafana, Git Sync is what keeps Grafana aligned with the JSON in Git.&lt;/p&gt;
&lt;h2 id=&#34;tool-overview&#34;&gt;Tool overview&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Tool&lt;/th&gt;
              &lt;th&gt;What it does&lt;/th&gt;
              &lt;th&gt;Use it for&lt;/th&gt;
              &lt;th&gt;Part of this journey?&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Foundation SDK&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Defines dashboards in typed code (Go, TypeScript, Python, Java, PHP)&lt;/td&gt;
              &lt;td&gt;Generating dashboard JSON programmatically&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Git Sync&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Syncs dashboard and folder JSON in a Git repo with Grafana&lt;/td&gt;
              &lt;td&gt;Git-native workflows where the repository is the source of truth&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Terraform provider&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Manages Grafana resources with Terraform plan and apply&lt;/td&gt;
              &lt;td&gt;Teams already using Terraform for infrastructure&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;No&lt;/strong&gt; (covered in the &lt;a href=&#34;/docs/learning-hub/dashboards-as-code/&#34;&gt;Terraform journey&lt;/a&gt;)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;gcx&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Grafana CLI that pushes or pulls resources from your machine or a pipeline&lt;/td&gt;
              &lt;td&gt;Quick pushes, scripting, alternate CI deploy steps&lt;/td&gt;
              &lt;td&gt;&lt;strong&gt;No&lt;/strong&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h2 id="grafanas-observability-as-code-tools">Grafana&amp;rsquo;s Observability as Code tools&lt;/h2>
&lt;p>Grafana offers several as-code tools. Each solves a different part of the problem, and they can work together. This diagram shows how they relate in a generate-and-sync workflow.&lt;/p></description></item><item><title>Prerequisites</title><link>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/05-prerequisites/</link><pubDate>Tue, 11 Aug 2026 10:11:48 +0200</pubDate><guid>https://grafana.com/docs/learning-hub/dashboards-as-code-git-sync/01-intro/05-prerequisites/</guid><content><![CDATA[&lt;h2 id=&#34;required&#34;&gt;Required&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A Grafana instance (Grafana Cloud, OSS, or Enterprise) where you have Grafana Admin access, so you can open &lt;strong&gt;Administration &amp;gt; General &amp;gt; Provisioning&lt;/strong&gt; later. You can &lt;a href=&#34;/signup/cloud/connect-account&#34;&gt;sign up for free&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A Git repository you can commit to. This journey focuses on GitHub, but Git Sync also works with any Git repository, such as GitLab or Bitbucket&lt;/li&gt;
&lt;li&gt;Go or Node.js installed for the Foundation SDK language you choose&lt;/li&gt;
&lt;li&gt;A GitHub personal access token when you reach Git Sync setup: a credential string that lets Grafana read and write the repository, or any other authentication method you may use&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Terraform is not required for this journey.&lt;/p&gt;
]]></content><description>&lt;h2 id="required">Required&lt;/h2>
&lt;ul>
&lt;li>A Grafana instance (Grafana Cloud, OSS, or Enterprise) where you have Grafana Admin access, so you can open &lt;strong>Administration &amp;gt; General &amp;gt; Provisioning&lt;/strong> later. You can &lt;a href="/signup/cloud/connect-account">sign up for free&lt;/a>&lt;/li>
&lt;li>A Git repository you can commit to. This journey focuses on GitHub, but Git Sync also works with any Git repository, such as GitLab or Bitbucket&lt;/li>
&lt;li>Go or Node.js installed for the Foundation SDK language you choose&lt;/li>
&lt;li>A GitHub personal access token when you reach Git Sync setup: a credential string that lets Grafana read and write the repository, or any other authentication method you may use&lt;/li>
&lt;/ul>
&lt;p>Terraform is not required for this journey.&lt;/p></description></item></channel></rss>