瀏覽代碼

Merge pull request #10025 from jgrassler/systemd-sdnotify

Use systemd notification where applicable
Carl Bergquist 8 年之前
父節點
當前提交
820abef82d
共有 3 個文件被更改,包括 37 次插入1 次删除
  1. 1 1
      packaging/rpm/systemd/grafana-server.service
  2. 2 0
      pkg/cmd/grafana-server/server.go
  3. 34 0
      pkg/util/sdnotify.go

+ 1 - 1
packaging/rpm/systemd/grafana-server.service

@@ -9,7 +9,7 @@ After=postgresql.service mariadb.service mysql.service
 EnvironmentFile=/etc/sysconfig/grafana-server
 User=grafana
 Group=grafana
-Type=simple
+Type=notify
 Restart=on-failure
 WorkingDirectory=/usr/share/grafana
 RuntimeDirectory=grafana

+ 2 - 0
pkg/cmd/grafana-server/server.go

@@ -29,6 +29,7 @@ import (
 
 	"github.com/grafana/grafana/pkg/social"
 	"github.com/grafana/grafana/pkg/tracing"
+	"github.com/grafana/grafana/pkg/util"
 )
 
 func NewGrafanaServer() models.GrafanaServer {
@@ -96,6 +97,7 @@ func (g *GrafanaServerImpl) Start() {
 		return
 	}
 
+	util.SdNotify("READY=1")
 	g.startHttpServer()
 }
 

+ 34 - 0
pkg/util/sdnotify.go

@@ -0,0 +1,34 @@
+package util
+
+import (
+	"errors"
+	"net"
+	"os"
+)
+
+var NoNotifySocket = errors.New("NOTIFY_SOCKET environment variable empty or unset.")
+
+func SdNotify(state string) error {
+	notifySocket := os.Getenv("NOTIFY_SOCKET")
+
+	if notifySocket == "" {
+		return NoNotifySocket
+	}
+
+	socketAddr := &net.UnixAddr{
+		Name: notifySocket,
+		Net:  "unixgram",
+	}
+
+	conn, err := net.DialUnix(socketAddr.Net, nil, socketAddr)
+
+	if err != nil {
+		return err
+	}
+
+	_, err = conn.Write([]byte(state))
+
+	conn.Close()
+
+	return err
+}