diff --git a/glide.yaml b/glide.yaml index f67d17c..c3d5634 100644 --- a/glide.yaml +++ b/glide.yaml @@ -1,11 +1,21 @@ package: github.com/cloudposse/prometheus-to-cloudwatch import: - - package: github.com/aws/aws-sdk-go/aws - - package: github.com/aws/aws-sdk-go/aws/credentials - - package: github.com/aws/aws-sdk-go/aws/session - - package: github.com/aws/aws-sdk-go/service/cloudwatch - - package: golang.org/x/net/context - - package: github.com/matttproud/golang_protobuf_extensions/pbutil - - package: github.com/prometheus/client_model/go - - package: github.com/prometheus/common/expfmt - - package: github.com/prometheus/common/model + - package: github.com/aws/aws-sdk-go + version: ^1.20.6 + subpackages: + - aws + - aws/credentials + - aws/session + - service/cloudwatch + - package: github.com/gobwas/glob + - package: github.com/matttproud/golang_protobuf_extensions + subpackages: + - pbutil + - package: github.com/prometheus/client_model + subpackages: + - go + - package: github.com/prometheus/common + version: ^0.6.0 + subpackages: + - expfmt + - model \ No newline at end of file diff --git a/main.go b/main.go index abe8343..f88f5a4 100644 --- a/main.go +++ b/main.go @@ -1,14 +1,16 @@ package main import ( + "context" "flag" "fmt" "github.com/gobwas/glob" - "golang.org/x/net/context" "log" "os" + "os/signal" "strconv" "strings" + "syscall" "time" ) @@ -140,6 +142,24 @@ func main() { log.Fatal("prometheus-to-cloudwatch: Error: ", err) } - fmt.Println("prometheus-to-cloudwatch: Starting prometheus-to-cloudwatch bridge") - bridge.Run(context.Background()) + log.Println("prometheus-to-cloudwatch: Starting prometheus-to-cloudwatch bridge") + + ctx := context.Background() + // trap Ctrl+C and call cancel on the context + ctx, cancel := context.WithCancel(ctx) + signals := make(chan os.Signal, 1) + signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM) + defer func() { + signal.Stop(signals) + cancel() + }() + go func() { + select { + case <-signals: + cancel() + case <-ctx.Done(): + } + }() + + bridge.Run(ctx) }