From f71cdc676d7c4c190b44958066960fd86effaf82 Mon Sep 17 00:00:00 2001 From: Mayer Ma Date: Thu, 18 Jun 2020 13:13:36 +0800 Subject: [PATCH] 1, Support Cloudwatch target 2, Change all import package from K-Phoen/grabana to private fork of package path breeze7086/grabana --- client.go | 4 +- client_test.go | 2 +- cmd/example/main.go | 28 ++++++------- cmd/yaml/main.go | 4 +- dashboard/dashboard.go | 10 ++--- decoder/dashboard.go | 4 +- decoder/graph.go | 8 ++-- decoder/row.go | 4 +- decoder/singlestat.go | 4 +- decoder/singlestat_test.go | 2 +- decoder/table.go | 4 +- decoder/target.go | 4 +- decoder/target_test.go | 2 +- decoder/text.go | 4 +- decoder/variables.go | 10 ++--- decoder/yaml.go | 2 +- doc.go | 2 +- go.mod | 2 +- graph/graph.go | 29 +++++++++++-- graph/graph_test.go | 4 +- row/row.go | 8 ++-- singlestat/singlestat.go | 2 +- table/table.go | 2 +- target/cloudwatch/cloudwatch.go | 58 ++++++++++++++++++++++++++ target/cloudwatch/cloudwatch_test.go | 29 +++++++++++++ target/prometheus/prometheus_test.go | 2 +- target/stackdriver/stackdriver_test.go | 2 +- 27 files changed, 172 insertions(+), 64 deletions(-) create mode 100644 target/cloudwatch/cloudwatch.go create mode 100644 target/cloudwatch/cloudwatch_test.go diff --git a/client.go b/client.go index a1d8d6b8..282f8776 100644 --- a/client.go +++ b/client.go @@ -11,8 +11,8 @@ import ( "net/http" "strings" - "github.com/K-Phoen/grabana/alert" - "github.com/K-Phoen/grabana/dashboard" + "github.com/breeze7086/grabana/alert" + "github.com/breeze7086/grabana/dashboard" "github.com/grafana-tools/sdk" ) diff --git a/client_test.go b/client_test.go index e476846e..516acb28 100644 --- a/client_test.go +++ b/client_test.go @@ -8,7 +8,7 @@ import ( "strings" "testing" - builder "github.com/K-Phoen/grabana/dashboard" + builder "github.com/breeze7086/grabana/dashboard" "github.com/stretchr/testify/require" ) diff --git a/cmd/example/main.go b/cmd/example/main.go index 70c5453a..42c0c71f 100644 --- a/cmd/example/main.go +++ b/cmd/example/main.go @@ -6,20 +6,20 @@ import ( "net/http" "os" - "github.com/K-Phoen/grabana" - "github.com/K-Phoen/grabana/alert" - "github.com/K-Phoen/grabana/axis" - "github.com/K-Phoen/grabana/dashboard" - "github.com/K-Phoen/grabana/graph" - "github.com/K-Phoen/grabana/row" - "github.com/K-Phoen/grabana/singlestat" - "github.com/K-Phoen/grabana/table" - "github.com/K-Phoen/grabana/target/prometheus" - "github.com/K-Phoen/grabana/text" - "github.com/K-Phoen/grabana/variable/constant" - "github.com/K-Phoen/grabana/variable/custom" - "github.com/K-Phoen/grabana/variable/interval" - "github.com/K-Phoen/grabana/variable/query" + "github.com/breeze7086/grabana" + "github.com/breeze7086/grabana/alert" + "github.com/breeze7086/grabana/axis" + "github.com/breeze7086/grabana/dashboard" + "github.com/breeze7086/grabana/graph" + "github.com/breeze7086/grabana/row" + "github.com/breeze7086/grabana/singlestat" + "github.com/breeze7086/grabana/table" + "github.com/breeze7086/grabana/target/prometheus" + "github.com/breeze7086/grabana/text" + "github.com/breeze7086/grabana/variable/constant" + "github.com/breeze7086/grabana/variable/custom" + "github.com/breeze7086/grabana/variable/interval" + "github.com/breeze7086/grabana/variable/query" ) func main() { diff --git a/cmd/yaml/main.go b/cmd/yaml/main.go index 88b62e51..2bef94b1 100644 --- a/cmd/yaml/main.go +++ b/cmd/yaml/main.go @@ -8,8 +8,8 @@ import ( "net/http" "os" - "github.com/K-Phoen/grabana" - "github.com/K-Phoen/grabana/decoder" + "github.com/breeze7086/grabana" + "github.com/breeze7086/grabana/decoder" ) func main() { diff --git a/dashboard/dashboard.go b/dashboard/dashboard.go index 14cbad8a..40ef0d49 100644 --- a/dashboard/dashboard.go +++ b/dashboard/dashboard.go @@ -3,11 +3,11 @@ package dashboard import ( "encoding/json" - "github.com/K-Phoen/grabana/row" - "github.com/K-Phoen/grabana/variable/constant" - "github.com/K-Phoen/grabana/variable/custom" - "github.com/K-Phoen/grabana/variable/interval" - "github.com/K-Phoen/grabana/variable/query" + "github.com/breeze7086/grabana/row" + "github.com/breeze7086/grabana/variable/constant" + "github.com/breeze7086/grabana/variable/custom" + "github.com/breeze7086/grabana/variable/interval" + "github.com/breeze7086/grabana/variable/query" "github.com/grafana-tools/sdk" ) diff --git a/decoder/dashboard.go b/decoder/dashboard.go index 902142f5..6f9a37ea 100644 --- a/decoder/dashboard.go +++ b/decoder/dashboard.go @@ -3,8 +3,8 @@ package decoder import ( "fmt" - "github.com/K-Phoen/grabana/dashboard" - "github.com/K-Phoen/grabana/row" + "github.com/breeze7086/grabana/dashboard" + "github.com/breeze7086/grabana/row" ) var ErrPanelNotConfigured = fmt.Errorf("panel not configured") diff --git a/decoder/graph.go b/decoder/graph.go index 26e5894b..57fd11b5 100644 --- a/decoder/graph.go +++ b/decoder/graph.go @@ -3,10 +3,10 @@ package decoder import ( "fmt" - "github.com/K-Phoen/grabana/alert" - "github.com/K-Phoen/grabana/axis" - "github.com/K-Phoen/grabana/graph" - "github.com/K-Phoen/grabana/row" + "github.com/breeze7086/grabana/alert" + "github.com/breeze7086/grabana/axis" + "github.com/breeze7086/grabana/graph" + "github.com/breeze7086/grabana/row" ) var ErrNoAlertThresholdDefined = fmt.Errorf("no threshold defined") diff --git a/decoder/row.go b/decoder/row.go index 7ad588dd..00b002ef 100644 --- a/decoder/row.go +++ b/decoder/row.go @@ -1,8 +1,8 @@ package decoder import ( - "github.com/K-Phoen/grabana/dashboard" - "github.com/K-Phoen/grabana/row" + "github.com/breeze7086/grabana/dashboard" + "github.com/breeze7086/grabana/row" ) type DashboardRow struct { diff --git a/decoder/singlestat.go b/decoder/singlestat.go index 1b4473e5..f542cdd0 100644 --- a/decoder/singlestat.go +++ b/decoder/singlestat.go @@ -3,8 +3,8 @@ package decoder import ( "fmt" - "github.com/K-Phoen/grabana/row" - "github.com/K-Phoen/grabana/singlestat" + "github.com/breeze7086/grabana/row" + "github.com/breeze7086/grabana/singlestat" ) var ErrInvalidColoringTarget = fmt.Errorf("invalid coloring target") diff --git a/decoder/singlestat_test.go b/decoder/singlestat_test.go index 6fdeaf54..c4618597 100644 --- a/decoder/singlestat_test.go +++ b/decoder/singlestat_test.go @@ -3,7 +3,7 @@ package decoder import ( "testing" - "github.com/K-Phoen/grabana/singlestat" + "github.com/breeze7086/grabana/singlestat" "github.com/stretchr/testify/require" ) diff --git a/decoder/table.go b/decoder/table.go index 67ac5336..28b339aa 100644 --- a/decoder/table.go +++ b/decoder/table.go @@ -1,8 +1,8 @@ package decoder import ( - "github.com/K-Phoen/grabana/row" - "github.com/K-Phoen/grabana/table" + "github.com/breeze7086/grabana/row" + "github.com/breeze7086/grabana/table" ) type DashboardTable struct { diff --git a/decoder/target.go b/decoder/target.go index 9cd8965e..7dd79fe8 100644 --- a/decoder/target.go +++ b/decoder/target.go @@ -3,8 +3,8 @@ package decoder import ( "fmt" - "github.com/K-Phoen/grabana/target/prometheus" - "github.com/K-Phoen/grabana/target/stackdriver" + "github.com/breeze7086/grabana/target/prometheus" + "github.com/breeze7086/grabana/target/stackdriver" ) var ErrTargetNotConfigured = fmt.Errorf("target not configured") diff --git a/decoder/target_test.go b/decoder/target_test.go index 2c344a34..80405ffa 100644 --- a/decoder/target_test.go +++ b/decoder/target_test.go @@ -3,7 +3,7 @@ package decoder import ( "testing" - "github.com/K-Phoen/grabana/target/stackdriver" + "github.com/breeze7086/grabana/target/stackdriver" "github.com/stretchr/testify/require" ) diff --git a/decoder/text.go b/decoder/text.go index 6b43bccc..97e090d1 100644 --- a/decoder/text.go +++ b/decoder/text.go @@ -1,8 +1,8 @@ package decoder import ( - "github.com/K-Phoen/grabana/row" - "github.com/K-Phoen/grabana/text" + "github.com/breeze7086/grabana/row" + "github.com/breeze7086/grabana/text" ) type DashboardText struct { diff --git a/decoder/variables.go b/decoder/variables.go index d8b0e877..ab59fb9b 100644 --- a/decoder/variables.go +++ b/decoder/variables.go @@ -3,12 +3,12 @@ package decoder import ( "fmt" - "github.com/K-Phoen/grabana/variable/interval" + "github.com/breeze7086/grabana/variable/interval" - "github.com/K-Phoen/grabana/dashboard" - "github.com/K-Phoen/grabana/variable/constant" - "github.com/K-Phoen/grabana/variable/custom" - "github.com/K-Phoen/grabana/variable/query" + "github.com/breeze7086/grabana/dashboard" + "github.com/breeze7086/grabana/variable/constant" + "github.com/breeze7086/grabana/variable/custom" + "github.com/breeze7086/grabana/variable/query" ) var ErrVariableNotConfigured = fmt.Errorf("variable not configured") diff --git a/decoder/yaml.go b/decoder/yaml.go index d52c4151..a7bc2020 100644 --- a/decoder/yaml.go +++ b/decoder/yaml.go @@ -3,7 +3,7 @@ package decoder import ( "io" - builder "github.com/K-Phoen/grabana/dashboard" + builder "github.com/breeze7086/grabana/dashboard" "gopkg.in/yaml.v2" ) diff --git a/doc.go b/doc.go index 597b84ee..002984ee 100644 --- a/doc.go +++ b/doc.go @@ -50,6 +50,6 @@ creation of dashboards, this library is meant for you. ), ) -For a more information visit https://github.com/K-Phoen/grabana +For a more information visit https://github.com/breeze7086/grabana */ package grabana diff --git a/go.mod b/go.mod index a660d702..ec9e66ff 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/K-Phoen/grabana +module github.com/breeze7086/grabana go 1.13 diff --git a/graph/graph.go b/graph/graph.go index dfaee5d9..efd7b892 100644 --- a/graph/graph.go +++ b/graph/graph.go @@ -1,10 +1,11 @@ package graph import ( - "github.com/K-Phoen/grabana/alert" - "github.com/K-Phoen/grabana/axis" - "github.com/K-Phoen/grabana/target/prometheus" - "github.com/K-Phoen/grabana/target/stackdriver" + "github.com/breeze7086/grabana/alert" + "github.com/breeze7086/grabana/axis" + "github.com/breeze7086/grabana/target/cloudwatch" + "github.com/breeze7086/grabana/target/prometheus" + "github.com/breeze7086/grabana/target/stackdriver" "github.com/grafana-tools/sdk" ) @@ -129,6 +130,26 @@ func WithPrometheusTarget(query string, options ...prometheus.Option) Option { } } +// WithCloudwatchTarget adds a cloudwatch query to the graph. +func WithCloudwatchTarget(namespace string, metricName string, statistics []string, dimensions map[string]string, region string, period string, options ...cloudwatch.Option) Option { + target := cloudwatch.New(namespace, metricName, statistics, dimensions, region, period, options...) + + return func(graph *Graph) { + graph.Builder.AddTarget(&sdk.Target{ + RefID: target.Ref, + Hide: target.Hidden, + Expr: target.Expression, + Alias: target.Alias, + Namespace: target.Namespace, + MetricName: target.MetricName, + Statistics: target.Statistics, + Dimensions: target.Dimensions, + Period: target.Period, + Region: target.Region, + }) + } +} + // WithStackdriverTarget adds a stackdriver query to the graph. func WithStackdriverTarget(target *stackdriver.Stackdriver) Option { return func(graph *Graph) { diff --git a/graph/graph_test.go b/graph/graph_test.go index 21b9027c..f9f8a041 100644 --- a/graph/graph_test.go +++ b/graph/graph_test.go @@ -3,8 +3,8 @@ package graph import ( "testing" - "github.com/K-Phoen/grabana/axis" - "github.com/K-Phoen/grabana/target/stackdriver" + "github.com/breeze7086/grabana/axis" + "github.com/breeze7086/grabana/target/stackdriver" "github.com/stretchr/testify/require" ) diff --git a/row/row.go b/row/row.go index bf4116ac..58ca1d7c 100644 --- a/row/row.go +++ b/row/row.go @@ -1,10 +1,10 @@ package row import ( - "github.com/K-Phoen/grabana/graph" - "github.com/K-Phoen/grabana/singlestat" - "github.com/K-Phoen/grabana/table" - "github.com/K-Phoen/grabana/text" + "github.com/breeze7086/grabana/graph" + "github.com/breeze7086/grabana/singlestat" + "github.com/breeze7086/grabana/table" + "github.com/breeze7086/grabana/text" "github.com/grafana-tools/sdk" ) diff --git a/singlestat/singlestat.go b/singlestat/singlestat.go index 80b965af..cbc80ab0 100644 --- a/singlestat/singlestat.go +++ b/singlestat/singlestat.go @@ -3,7 +3,7 @@ package singlestat import ( "strings" - "github.com/K-Phoen/grabana/target/prometheus" + "github.com/breeze7086/grabana/target/prometheus" "github.com/grafana-tools/sdk" ) diff --git a/table/table.go b/table/table.go index 5b15474a..16c5db72 100644 --- a/table/table.go +++ b/table/table.go @@ -1,7 +1,7 @@ package table import ( - "github.com/K-Phoen/grabana/target/prometheus" + "github.com/breeze7086/grabana/target/prometheus" "github.com/grafana-tools/sdk" ) diff --git a/target/cloudwatch/cloudwatch.go b/target/cloudwatch/cloudwatch.go new file mode 100644 index 00000000..3e5adaec --- /dev/null +++ b/target/cloudwatch/cloudwatch.go @@ -0,0 +1,58 @@ +package cloudwatch + +type Option func(target *Cloudwatch) + +type Cloudwatch struct { + Namespace string + MetricName string + Statistics []string + Dimensions map[string]string + Region string + Period string + + Ref string + Hidden bool + Alias string + Expression string +} + +func New(namespace string, metricName string, statistics []string, dimensions map[string]string, region string, period string, options ...Option) *Cloudwatch { + cloudwatch := &Cloudwatch{ + Namespace: namespace, + MetricName: metricName, + Statistics: statistics, + Dimensions: dimensions, + Region: region, + Period: period, + } + + for _, opt := range options { + opt(cloudwatch) + } + + return cloudwatch +} + +func Ref(ref string) Option { + return func(cloudwatch *Cloudwatch) { + cloudwatch.Ref = ref + } +} + +func Hide() Option { + return func(cloudwatch *Cloudwatch) { + cloudwatch.Hidden = true + } +} + +func Alias(alias string) Option { + return func(cloudwatch *Cloudwatch) { + cloudwatch.Alias = alias + } +} + +func Expression(expr string) Option { + return func(cloudwatch *Cloudwatch) { + cloudwatch.Expression = expr + } +} diff --git a/target/cloudwatch/cloudwatch_test.go b/target/cloudwatch/cloudwatch_test.go new file mode 100644 index 00000000..e1f1bbe5 --- /dev/null +++ b/target/cloudwatch/cloudwatch_test.go @@ -0,0 +1,29 @@ +package cloudwatch_test + +import ( + "github.com/breeze7086/grabana/target/cloudwatch" + "github.com/stretchr/testify/require" + "testing" +) + +func TestNewCloudwatchTargetCanBeCreated(t *testing.T) { + req := require.New(t) + + namespace := "LBProvisionedLCU" + metricName := "ProvisionedLCU" + statistics := []string{"Average"} + dimensions := map[string]string{ + "Loadbalancer Name": "9f2e1c28-default-prometheu-0928", + } + region := "us-east-1" + period := "" + + target := cloudwatch.New(namespace, metricName, statistics, dimensions, region, period) + + req.Equal(namespace, target.Namespace) + req.Equal(metricName, target.MetricName) + req.Equal(statistics, target.Statistics) + req.Equal(dimensions, target.Dimensions) + req.Equal(region, target.Region) + req.Equal(period, target.Period) +} diff --git a/target/prometheus/prometheus_test.go b/target/prometheus/prometheus_test.go index a75d06eb..05e7b23b 100644 --- a/target/prometheus/prometheus_test.go +++ b/target/prometheus/prometheus_test.go @@ -3,7 +3,7 @@ package prometheus_test import ( "testing" - "github.com/K-Phoen/grabana/target/prometheus" + "github.com/breeze7086/grabana/target/prometheus" "github.com/stretchr/testify/require" ) diff --git a/target/stackdriver/stackdriver_test.go b/target/stackdriver/stackdriver_test.go index 6e5446e7..32cbec82 100644 --- a/target/stackdriver/stackdriver_test.go +++ b/target/stackdriver/stackdriver_test.go @@ -3,7 +3,7 @@ package stackdriver_test import ( "testing" - "github.com/K-Phoen/grabana/target/stackdriver" + "github.com/breeze7086/grabana/target/stackdriver" "github.com/stretchr/testify/require" )