Handle OS signals to stop gracefully (#16)

* Cancel the context on receiving SIGINT or SIGTERM
* Update glide.yaml

Signed-off-by: Sergei Ivanov <sergei_ivanov@mail.ru>
This commit is contained in:
Sergei Ivanov 2019-06-25 03:30:32 +01:00 committed by Andriy Knysh
parent 6b19e1fd55
commit c78362c365
2 changed files with 42 additions and 12 deletions

View File

@ -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

26
main.go
View File

@ -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)
}