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:
parent
6b19e1fd55
commit
c78362c365
28
glide.yaml
28
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
|
||||
26
main.go
26
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)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user