Skip to content
This repository was archived by the owner on Aug 23, 2023. It is now read-only.

switch to logrus logging library #1052

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 17 additions & 9 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ unused-packages = true
name = "github.com/Shopify/sarama"
version = "1.10.1"

[[constraint]]
name = "github.com/Sirupsen/logrus"
version = "0.7.3"

[[constraint]]
name = "github.com/alyu/configparser"
branch = "master"
Expand Down Expand Up @@ -144,6 +140,10 @@ unused-packages = true
name = "github.com/sergi/go-diff"
version = "v1.0.0"

[[constraint]]
name = "github.com/sirupsen/logrus"
version = "1.0.6"

[[constraint]]
name = "github.com/smartystreets/goconvey"
branch = "master"
Expand Down
12 changes: 7 additions & 5 deletions cluster/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"net/http"
"time"

"github.com/raintank/worldping-api/pkg/log"
"github.com/rakyll/globalconf"
log "github.com/sirupsen/logrus"
)

var (
Expand Down Expand Up @@ -79,13 +79,13 @@ func ConfigProcess() {

// check settings in cluster section
if !validMode(mode) {
log.Fatal(4, "CLU Config: invalid cluster operating mode")
log.Fatal("CLU Config: invalid cluster operating mode")
}

Mode = ModeType(mode)

if httpTimeout == 0 {
log.Fatal(4, "CLU Config: http-timeout must be a non-zero duration string like 60s")
log.Fatal("CLU Config: http-timeout must be a non-zero duration string, i.e. 60s")
}

transport = &http.Transport{
Expand All @@ -109,14 +109,16 @@ func ConfigProcess() {

// check settings in swim section
if swimUseConfig != "manual" && swimUseConfig != "default-lan" && swimUseConfig != "default-local" && swimUseConfig != "default-wan" {
log.Fatal(4, "CLU Config: invalid swim-use-config setting")
log.Fatal("CLU Config: invalid swim-use-config setting")
}

if swimUseConfig == "manual" {
var err error
swimBindAddr, err = net.ResolveTCPAddr("tcp", swimBindAddrStr)
if err != nil {
log.Fatal(4, "CLU Config: swim-bind-addr is not a valid TCP address: %s", err.Error())
log.WithFields(log.Fields{
"swim.bind.addr": err.Error(),
}).Fatal("CLU Config: swim-bind-addr is not a valid TCP address")
}
}
}
50 changes: 38 additions & 12 deletions cluster/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (

"github.com/grafana/metrictank/stats"
"github.com/hashicorp/memberlist"
"github.com/raintank/worldping-api/pkg/log"
log "github.com/sirupsen/logrus"
)

var (
Expand Down Expand Up @@ -106,7 +106,7 @@ func NewMemberlistManager(thisNode HTTPNode) *MemberlistManager {
case "default-wan":
mgr.cfg = memberlist.DefaultWANConfig()
default:
panic("invalid swimUseConfig. should already have been validated")
log.Panic("invalid swimUseConfig. should already have been validated")
}
mgr.cfg.Events = mgr
mgr.cfg.Delegate = mgr
Expand All @@ -118,10 +118,15 @@ func NewMemberlistManager(thisNode HTTPNode) *MemberlistManager {
}

func (c *MemberlistManager) Start() {
log.Info("CLU Start: Starting cluster on %s:%d", c.cfg.BindAddr, c.cfg.BindPort)
log.WithFields(log.Fields{
"bind.addr": c.cfg.BindAddr,
"bind.port": c.cfg.BindPort,
}).Info("CLU Start: Starting cluster")
list, err := memberlist.Create(c.cfg)
if err != nil {
log.Fatal(4, "CLU Start: Failed to create memberlist: %s", err.Error())
log.WithFields(log.Fields{
"error": err.Error(),
}).Info("CLU Start: Failed to create memberlist")
}
c.setList(list)

Expand All @@ -130,9 +135,13 @@ func (c *MemberlistManager) Start() {
}
n, err := list.Join(strings.Split(peersStr, ","))
if err != nil {
log.Fatal(4, "CLU Start: Failed to join cluster: %s", err.Error())
log.WithFields(log.Fields{
"error": err.Error(),
}).Fatal("CLU Start: Failed to join cluster")
}
log.Info("CLU Start: joined to %d nodes in cluster", n)
log.WithFields(log.Fields{
"num.nodes": n,
}).Info("CLU Start: joined to nodes in cluster")
}

func (c *MemberlistManager) setList(list *memberlist.Memberlist) {
Expand Down Expand Up @@ -214,11 +223,17 @@ func (c *MemberlistManager) NotifyJoin(node *memberlist.Node) {
if len(node.Meta) == 0 {
return
}
log.Info("CLU manager: HTTPNode %s with address %s has joined the cluster", node.Name, node.Addr.String())
log.WithFields(log.Fields{
"node.name": node.Name,
"http.addr": node.Addr.String(),
}).Info("CLU manager: HTTPNode has joined the cluster")
member := HTTPNode{}
err := json.Unmarshal(node.Meta, &member)
if err != nil {
log.Error(3, "CLU manager: Failed to decode node meta from %s: %s", node.Name, err.Error())
log.WithFields(log.Fields{
"node.name": node.Name,
"error": err.Error(),
}).Error("CLU manager: Failed to decode node meta")
unmarshalErrJoin.Inc()
return
}
Expand All @@ -234,7 +249,9 @@ func (c *MemberlistManager) NotifyLeave(node *memberlist.Node) {
eventsLeave.Inc()
c.Lock()
defer c.Unlock()
log.Info("CLU manager: HTTPNode %s has left the cluster", node.Name)
log.WithFields(log.Fields{
"node.name": node.Name,
}).Info("CLU manager: HTTPNode has left the cluster")
delete(c.members, node.Name)
c.clusterStats()
}
Expand All @@ -249,7 +266,10 @@ func (c *MemberlistManager) NotifyUpdate(node *memberlist.Node) {
member := HTTPNode{}
err := json.Unmarshal(node.Meta, &member)
if err != nil {
log.Error(3, "CLU manager: Failed to decode node meta from %s: %s", node.Name, err.Error())
log.WithFields(log.Fields{
"node.name": node.Name,
"error": err.Error(),
}).Error("CLU manager: Failed to decode node meta")
unmarshalErrUpdate.Inc()
// if the node is known, lets mark it as notReady until it starts sending valid data again.
if p, ok := c.members[node.Name]; ok {
Expand All @@ -266,7 +286,11 @@ func (c *MemberlistManager) NotifyUpdate(node *memberlist.Node) {
member.local = true
}
c.members[node.Name] = member
log.Info("CLU manager: HTTPNode %s at %s has been updated - %s", node.Name, node.Addr.String(), node.Meta)
log.WithFields(log.Fields{
"node.name": node.Name,
"node.addr": node.Addr.String(),
"node.meta": node.Meta,
}).Info("CLU manager: HTTPNode has been updated")
c.clusterStats()
}

Expand All @@ -286,7 +310,9 @@ func (c *MemberlistManager) NodeMeta(limit int) []byte {
meta, err := json.Marshal(c.members[c.nodeName])
c.RUnlock()
if err != nil {
log.Fatal(4, "CLU manager: %s", err.Error())
log.WithFields(log.Fields{
"error": err.Error(),
}).Fatal("CLU manager")
}
return meta
}
Expand Down
15 changes: 11 additions & 4 deletions cluster/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"github.com/grafana/metrictank/tracing"
opentracing "github.com/opentracing/opentracing-go"
tags "github.com/opentracing/opentracing-go/ext"
"github.com/raintank/worldping-api/pkg/log"
log "github.com/sirupsen/logrus"
)

//go:generate stringer -type=NodeState
Expand Down Expand Up @@ -157,7 +157,9 @@ func (n HTTPNode) Post(ctx context.Context, name, path string, body Traceable) (
carrier := opentracing.HTTPHeadersCarrier(req.Header)
err = Tracer.Inject(span.Context(), opentracing.HTTPHeaders, carrier)
if err != nil {
log.Error(3, "CLU failed to inject span into headers: %s", err)
log.WithFields(log.Fields{
"error": err.Error(),
}).Error("CLU failed to inject span into headers")
}
req.Header.Add("Content-Type", "application/json")

Expand All @@ -178,15 +180,20 @@ func (n HTTPNode) Post(ctx context.Context, name, path string, body Traceable) (
// then abort the http request.
select {
case <-ctx.Done():
log.Debug("CLU HTTPNode: context canceled. terminating request to peer %s", n.Name)
log.WithFields(log.Fields{
"peer.name": n.Name,
}).Debug("CLU HTTPNode: context canceled. terminating request to peer")
transport.CancelRequest(req)
<-c // Wait for client.Do but ignore result
case resp := <-c:
err := resp.err
rsp := resp.r
if err != nil {
tags.Error.Set(span, true)
log.Error(3, "CLU HTTPNode: error trying to talk to peer %s: %s", n.Name, err.Error())
log.WithFields(log.Fields{
"peer.name": n.Name,
"error": err.Error(),
}).Error("CLU HTTPNode: error trying to talk to peer")
return nil, NewError(http.StatusServiceUnavailable, errors.New("error trying to talk to peer"))
}
return handleResp(rsp)
Expand Down
Loading