Commit 0951da9c by Torkel Ödegaard

Merge branch 'v3.1.x' of github.com:grafana/grafana into v3.1.x

parents a5f0f508 31952098
...@@ -18,15 +18,13 @@ dependencies: ...@@ -18,15 +18,13 @@ dependencies:
test: test:
override: override:
# FMT
- test -z "$(gofmt -s -l . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)" - test -z "$(gofmt -s -l . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)"
# GO VET
- go vet ./pkg/... - go vet ./pkg/...
# Go test # JS tests
- godep go test -v ./pkg/...
# js tests
- npm test - npm test
- npm run coveralls - npm run coveralls
# GO tests
- godep go test -v ./pkg/...
deployment: deployment:
master: master:
......
...@@ -353,9 +353,10 @@ enabled = true ...@@ -353,9 +353,10 @@ enabled = true
interval_seconds = 60 interval_seconds = 60
# Send internal Grafana metrics to graphite # Send internal Grafana metrics to graphite
; [metrics.graphite] [metrics.graphite]
; address = localhost:2003 # Enable by setting the address setting (ex localhost:2003)
; prefix = prod.grafana.%(instance_name)s. address =
prefix = service.grafana.%(instance_name)s.
[grafana_net] [grafana_net]
url = https://grafana.net url = https://grafana.net
...@@ -297,15 +297,16 @@ check_for_updates = true ...@@ -297,15 +297,16 @@ check_for_updates = true
# Metrics available at HTTP API Url /api/metrics # Metrics available at HTTP API Url /api/metrics
[metrics] [metrics]
# Disable / Enable internal metrics # Disable / Enable internal metrics
;enabled = true enabled = true
# Publish interval # Publish interval
;interval_seconds = 10 interval_seconds = 10
# Send internal metrics to Graphite # Send internal metrics to Graphite
; [metrics.graphite] [metrics.graphite]
; address = localhost:2003 # Enable by setting the address setting (ex localhost:2003)
; prefix = prod.grafana.%(instance_name)s. address =
prefix = service.grafana.%(instance_name)s.
#################################### Internal Grafana Metrics ########################## #################################### Internal Grafana Metrics ##########################
# Url used to to import dashboards directly from Grafana.net # Url used to to import dashboards directly from Grafana.net
......
...@@ -8,39 +8,11 @@ import ( ...@@ -8,39 +8,11 @@ import (
"github.com/codegangsta/cli" "github.com/codegangsta/cli"
"github.com/grafana/grafana/pkg/cmd/grafana-cli/commands" "github.com/grafana/grafana/pkg/cmd/grafana-cli/commands"
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger" "github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
"github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
) )
var version = "master" var version = "master"
func getGrafanaPluginDir() string {
currentOS := runtime.GOOS
defaultNix := "/var/lib/grafana/plugins"
if currentOS == "windows" {
return "../data/plugins"
}
pwd, err := os.Getwd()
if err != nil {
logger.Error("Could not get current path. using default")
return defaultNix
}
if isDevenvironment(pwd) {
return "../data/plugins"
}
return defaultNix
}
func isDevenvironment(pwd string) bool {
// if ../conf/defaults.ini exists, grafana is not installed as package
// that its in development environment.
_, err := os.Stat("../conf/defaults.ini")
return err == nil
}
func main() { func main() {
setupLogging() setupLogging()
...@@ -54,7 +26,7 @@ func main() { ...@@ -54,7 +26,7 @@ func main() {
cli.StringFlag{ cli.StringFlag{
Name: "pluginsDir", Name: "pluginsDir",
Usage: "path to the grafana plugin directory", Usage: "path to the grafana plugin directory",
Value: getGrafanaPluginDir(), Value: utils.GetGrafanaPluginDir(runtime.GOOS),
EnvVar: "GF_PLUGIN_DIR", EnvVar: "GF_PLUGIN_DIR",
}, },
cli.StringFlag{ cli.StringFlag{
......
package utils
import (
"os"
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
)
func GetGrafanaPluginDir(currentOS string) string {
//currentOS := runtime.GOOS
if currentOS == "windows" {
return returnOsDefault(currentOS)
}
pwd, err := os.Getwd()
if err != nil {
logger.Error("Could not get current path. using default")
return returnOsDefault(currentOS)
}
if isDevenvironment(pwd) {
return "../data/plugins"
}
return returnOsDefault(currentOS)
}
func isDevenvironment(pwd string) bool {
// if ../conf/defaults.ini exists, grafana is not installed as package
// that its in development environment.
_, err := os.Stat("../conf/defaults.ini")
return err == nil
}
func returnOsDefault(currentOs string) string {
switch currentOs {
case "windows":
return "../data/plugins"
case "darwin":
return "/usr/local/var/lib/grafana/plugins"
default: //"linux"
return "/var/lib/grafana/plugins"
}
}
...@@ -4,6 +4,7 @@ import ( ...@@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"fmt" "fmt"
"net" "net"
"strings"
"time" "time"
"github.com/grafana/grafana/pkg/log" "github.com/grafana/grafana/pkg/log"
...@@ -23,11 +24,24 @@ func CreateGraphitePublisher() (*GraphitePublisher, error) { ...@@ -23,11 +24,24 @@ func CreateGraphitePublisher() (*GraphitePublisher, error) {
return nil, nil return nil, nil
} }
address := graphiteSection.Key("address").String()
if address == "" {
return nil, nil
}
publisher := &GraphitePublisher{} publisher := &GraphitePublisher{}
publisher.prevCounts = make(map[string]int64) publisher.prevCounts = make(map[string]int64)
publisher.protocol = "tcp" publisher.protocol = "tcp"
publisher.address = graphiteSection.Key("address").MustString("localhost:2003") publisher.address = address
publisher.prefix = graphiteSection.Key("prefix").MustString("service.grafana.%(instance_name)s")
safeInstanceName := strings.Replace(setting.InstanceName, ".", "_", -1)
prefix := graphiteSection.Key("prefix").Value()
if prefix == "" {
prefix = "service.grafana.%(instance_name)s."
}
publisher.prefix = strings.Replace(prefix, "%(instance_name)s", safeInstanceName, -1)
return publisher, nil return publisher, nil
} }
......
package metrics
import (
"testing"
"github.com/grafana/grafana/pkg/setting"
. "github.com/smartystreets/goconvey/convey"
)
func TestGraphitePublisher(t *testing.T) {
Convey("Test graphite prefix replacement", t, func() {
var err error
err = setting.NewConfigContext(&setting.CommandLineArgs{
HomePath: "../../",
})
So(err, ShouldBeNil)
sec, err := setting.Cfg.NewSection("metrics.graphite")
sec.NewKey("prefix", "service.grafana.%(instance_name)s.")
sec.NewKey("address", "localhost:2001")
So(err, ShouldBeNil)
setting.InstanceName = "hostname.with.dots.com"
publisher, err := CreateGraphitePublisher()
So(err, ShouldBeNil)
So(publisher, ShouldNotBeNil)
So(publisher.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com.")
So(publisher.address, ShouldEqual, "localhost:2001")
})
Convey("Test graphite publisher default prefix", t, func() {
var err error
err = setting.NewConfigContext(&setting.CommandLineArgs{
HomePath: "../../",
})
So(err, ShouldBeNil)
sec, err := setting.Cfg.NewSection("metrics.graphite")
sec.NewKey("address", "localhost:2001")
So(err, ShouldBeNil)
setting.InstanceName = "hostname.with.dots.com"
publisher, err := CreateGraphitePublisher()
So(err, ShouldBeNil)
So(publisher, ShouldNotBeNil)
So(publisher.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com.")
So(publisher.address, ShouldEqual, "localhost:2001")
})
Convey("Test graphite publisher default values", t, func() {
var err error
err = setting.NewConfigContext(&setting.CommandLineArgs{
HomePath: "../../",
})
So(err, ShouldBeNil)
_, err = setting.Cfg.NewSection("metrics.graphite")
setting.InstanceName = "hostname.with.dots.com"
publisher, err := CreateGraphitePublisher()
So(err, ShouldBeNil)
So(publisher, ShouldBeNil)
})
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment