diff --git a/grafana-watcher/main.go b/grafana-watcher/main.go
index 340967058d128f40eec82ff1b8456d585e08e3fe..ede90e83d66c80238cea0327036ffb73b8b96117 100644
--- a/grafana-watcher/main.go
+++ b/grafana-watcher/main.go
@@ -5,6 +5,7 @@ import (
 	"log"
 	"os"
 	"path/filepath"
+	"time"
 
 	fsnotify "gopkg.in/fsnotify.v1"
 
@@ -85,9 +86,32 @@ func main() {
 	}
 
 	g := grafana.New(*grafanaUrl)
-	du := updater.NewGrafanaDashboardUpdater(g.Dashboards(), filepath.Join(*watchDir, "*-dashboard.json"))
+
+	for {
+		log.Println("Waiting for Grafana to be available.")
+		_, err := g.Datasources().All()
+		if err == nil {
+			break
+		}
+		time.Sleep(time.Second)
+	}
+
 	su := updater.NewGrafanaDatasourceUpdater(g.Datasources(), filepath.Join(*watchDir, "*-datasource.json"))
+	log.Println("Initializing datasources.")
+	err := su.Init()
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	du := updater.NewGrafanaDashboardUpdater(g.Dashboards(), filepath.Join(*watchDir, "*-dashboard.json"))
+	log.Println("Initializing dashboards.")
+	err = du.Init()
+	if err != nil {
+		log.Fatal(err)
+	}
+
 	w := newVolumeWatcher(*watchDir)
+
 	w.AddEventHandler(du)
 	w.AddEventHandler(su)
 
diff --git a/grafana-watcher/updater/dashboard.go b/grafana-watcher/updater/dashboard.go
index 4094a1b0be520051a3f898d7ece5eba160bd80bc..754a9490a0273e7b171c450c7303bc7e1a46bfb3 100644
--- a/grafana-watcher/updater/dashboard.go
+++ b/grafana-watcher/updater/dashboard.go
@@ -9,6 +9,7 @@ import (
 )
 
 type Updater interface {
+	Init() error
 	OnModify() error
 }
 
@@ -24,7 +25,15 @@ func NewGrafanaDashboardUpdater(c grafana.DashboardsInterface, g string) Updater
 	}
 }
 
+func (u *GrafanaDashboardUpdater) Init() error {
+	return u.updateDashboards()
+}
+
 func (u *GrafanaDashboardUpdater) OnModify() error {
+	return u.updateDashboards()
+}
+
+func (u *GrafanaDashboardUpdater) updateDashboards() error {
 	err := u.deleteAllDashboards()
 	if err != nil {
 		return err
diff --git a/grafana-watcher/updater/datasource.go b/grafana-watcher/updater/datasource.go
index ad96852c81559fdf127bb4501938d8c198ea6ecc..77c502825d52723561b73b87feb3e90b01305ca0 100644
--- a/grafana-watcher/updater/datasource.go
+++ b/grafana-watcher/updater/datasource.go
@@ -20,7 +20,15 @@ func NewGrafanaDatasourceUpdater(c grafana.DatasourcesInterface, g string) Updat
 	}
 }
 
+func (u *GrafanaDatasourceUpdater) Init() error {
+	return u.updateDatasources()
+}
+
 func (u *GrafanaDatasourceUpdater) OnModify() error {
+	return u.updateDatasources()
+}
+
+func (u *GrafanaDatasourceUpdater) updateDatasources() error {
 	err := u.deleteAllDatasources()
 	if err != nil {
 		return err