From 6f196510b81e5781703c5e1781b1c21637d46eb6 Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Mon, 22 Feb 2021 15:02:15 +0100 Subject: [PATCH 01/20] Add log on transfer close --- pkg/http-tunnel/server/tcpproxy.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pkg/http-tunnel/server/tcpproxy.go b/pkg/http-tunnel/server/tcpproxy.go index 456d0398..a35b0727 100644 --- a/pkg/http-tunnel/server/tcpproxy.go +++ b/pkg/http-tunnel/server/tcpproxy.go @@ -6,11 +6,12 @@ package server import ( "fmt" - "github.com/NodeFactoryIo/vedran/pkg/http-tunnel" - "github.com/NodeFactoryIo/vedran/pkg/http-tunnel/proto" - log "github.com/sirupsen/logrus" "io" "net" + + tunnel "github.com/NodeFactoryIo/vedran/pkg/http-tunnel" + "github.com/NodeFactoryIo/vedran/pkg/http-tunnel/proto" + log "github.com/sirupsen/logrus" ) // TCPProxy forwards TCP streams. @@ -80,7 +81,6 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage }).Error("dial failed", err) return } - defer local.Close() if err := tunnel.KeepAlive(local); err != nil { clogger.WithFields(log.Fields{ @@ -95,6 +95,7 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage "src": target, }) transfer(flushWriter{w}, local, loggerWithContext) + clogger.Info("Transfer close called") close(done) }() @@ -105,6 +106,12 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage transfer(local, r, loggerWithContext) <-done + err = local.Close() + if err != nil { + clogger.Errorf("Local close failed because of %v") + } + + clogger.Info("Transfer close called and magic happeneded") } func (p *TCPProxy) localAddrFor(hostPort string) string { From 43c8b332a605391c84d7f6ea5716ac59f0c58590 Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Mon, 22 Feb 2021 15:35:37 +0100 Subject: [PATCH 02/20] Undo defer --- pkg/http-tunnel/server/tcpproxy.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/http-tunnel/server/tcpproxy.go b/pkg/http-tunnel/server/tcpproxy.go index a35b0727..e562eeed 100644 --- a/pkg/http-tunnel/server/tcpproxy.go +++ b/pkg/http-tunnel/server/tcpproxy.go @@ -81,6 +81,7 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage }).Error("dial failed", err) return } + defer local.Close() if err := tunnel.KeepAlive(local); err != nil { clogger.WithFields(log.Fields{ @@ -106,10 +107,12 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage transfer(local, r, loggerWithContext) <-done - err = local.Close() - if err != nil { - clogger.Errorf("Local close failed because of %v") - } + /* + err = local.Close() + if err != nil { + clogger.Errorf("Local close failed because of %v") + } + */ clogger.Info("Transfer close called and magic happeneded") } From 99038ecd4494bd371438f44fefac550b323bc1df Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Mon, 22 Feb 2021 16:43:58 +0100 Subject: [PATCH 03/20] Add log before and after tunnel copy --- pkg/http-tunnel/server/utils.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/http-tunnel/server/utils.go b/pkg/http-tunnel/server/utils.go index b936074d..ec695844 100644 --- a/pkg/http-tunnel/server/utils.go +++ b/pkg/http-tunnel/server/utils.go @@ -5,15 +5,18 @@ package server import ( - log "github.com/sirupsen/logrus" "io" "net" "net/http" "strings" + + log "github.com/sirupsen/logrus" ) func transfer(dst io.Writer, src io.Reader, logger *log.Entry) { + log.Info("BEFORE COPY") n, err := io.Copy(dst, src) + log.Info("AFTER COPY") if err != nil { if (!strings.Contains(err.Error(), "context canceled") && !strings.Contains(err.Error(), "CANCEL")) && From 5f6353f1a1f66b8e359edf71af0e0dc82f5a8674 Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Mon, 22 Feb 2021 17:00:27 +0100 Subject: [PATCH 04/20] Add explicit return to transfer --- pkg/http-tunnel/server/utils.go | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/pkg/http-tunnel/server/utils.go b/pkg/http-tunnel/server/utils.go index ec695844..4dbb5de4 100644 --- a/pkg/http-tunnel/server/utils.go +++ b/pkg/http-tunnel/server/utils.go @@ -15,16 +15,10 @@ import ( func transfer(dst io.Writer, src io.Reader, logger *log.Entry) { log.Info("BEFORE COPY") - n, err := io.Copy(dst, src) + n, _ := io.Copy(dst, src) log.Info("AFTER COPY") - if err != nil { - if (!strings.Contains(err.Error(), "context canceled") && - !strings.Contains(err.Error(), "CANCEL")) && - !strings.Contains(err.Error(), "stream closed") { - logger.Error("copy error ", err) - } - } log.Debugf("transferred %d bytes", n) + return } func setXForwardedFor(h http.Header, remoteAddr string) { From 2ff5f79ade6491d167356495c9359372394d294d Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Mon, 22 Feb 2021 17:10:30 +0100 Subject: [PATCH 05/20] Add close after after any transfer ends + --- pkg/http-tunnel/server/tcpproxy.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/http-tunnel/server/tcpproxy.go b/pkg/http-tunnel/server/tcpproxy.go index e562eeed..c612a606 100644 --- a/pkg/http-tunnel/server/tcpproxy.go +++ b/pkg/http-tunnel/server/tcpproxy.go @@ -105,6 +105,7 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage "src": target, }) transfer(local, r, loggerWithContext) + close(done) <-done /* From a52a1c0592999b1361527350c9cc8833785d2e42 Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Tue, 23 Feb 2021 10:33:23 +0100 Subject: [PATCH 06/20] Remove transfer channel --- pkg/http-tunnel/server/tcpproxy.go | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/pkg/http-tunnel/server/tcpproxy.go b/pkg/http-tunnel/server/tcpproxy.go index c612a606..f21dd37f 100644 --- a/pkg/http-tunnel/server/tcpproxy.go +++ b/pkg/http-tunnel/server/tcpproxy.go @@ -81,7 +81,6 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage }).Error("dial failed", err) return } - defer local.Close() if err := tunnel.KeepAlive(local); err != nil { clogger.WithFields(log.Fields{ @@ -89,7 +88,6 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage }).Error("TCP keepalive for tunneled connection failed", err) } - done := make(chan struct{}) go func() { loggerWithContext := log.WithContext(p.logger.Context).WithFields(log.Fields{ "dst": msg.ForwardedHost, @@ -97,7 +95,6 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage }) transfer(flushWriter{w}, local, loggerWithContext) clogger.Info("Transfer close called") - close(done) }() loggerWithContext := log.WithContext(p.logger.Context).WithFields(log.Fields{ @@ -105,15 +102,10 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage "src": target, }) transfer(local, r, loggerWithContext) - close(done) - - <-done - /* - err = local.Close() - if err != nil { - clogger.Errorf("Local close failed because of %v") - } - */ + err = local.Close() + if err != nil + clogger.Errorf("Local close failed because of %v") + } clogger.Info("Transfer close called and magic happeneded") } From 94bef1e2040855692b553ea478d68e0e5d1c8482 Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Tue, 23 Feb 2021 10:34:35 +0100 Subject: [PATCH 07/20] Lint --- pkg/http-tunnel/server/tcpproxy.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/http-tunnel/server/tcpproxy.go b/pkg/http-tunnel/server/tcpproxy.go index f21dd37f..bae4bd71 100644 --- a/pkg/http-tunnel/server/tcpproxy.go +++ b/pkg/http-tunnel/server/tcpproxy.go @@ -103,7 +103,7 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage }) transfer(local, r, loggerWithContext) err = local.Close() - if err != nil + if err != nil { clogger.Errorf("Local close failed because of %v") } From 6a64f2463d7c8ff6f4afd50c03b802dd5961d87a Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Tue, 23 Feb 2021 10:54:31 +0100 Subject: [PATCH 08/20] Remove extra logs --- pkg/http-tunnel/server/tcpproxy.go | 6 ++---- pkg/http-tunnel/server/utils.go | 2 -- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/pkg/http-tunnel/server/tcpproxy.go b/pkg/http-tunnel/server/tcpproxy.go index bae4bd71..8fe3c736 100644 --- a/pkg/http-tunnel/server/tcpproxy.go +++ b/pkg/http-tunnel/server/tcpproxy.go @@ -94,7 +94,6 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage "src": target, }) transfer(flushWriter{w}, local, loggerWithContext) - clogger.Info("Transfer close called") }() loggerWithContext := log.WithContext(p.logger.Context).WithFields(log.Fields{ @@ -102,12 +101,11 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage "src": target, }) transfer(local, r, loggerWithContext) + err = local.Close() if err != nil { - clogger.Errorf("Local close failed because of %v") + clogger.Errorf("Transfer close failed because of %v") } - - clogger.Info("Transfer close called and magic happeneded") } func (p *TCPProxy) localAddrFor(hostPort string) string { diff --git a/pkg/http-tunnel/server/utils.go b/pkg/http-tunnel/server/utils.go index 4dbb5de4..73a03037 100644 --- a/pkg/http-tunnel/server/utils.go +++ b/pkg/http-tunnel/server/utils.go @@ -14,9 +14,7 @@ import ( ) func transfer(dst io.Writer, src io.Reader, logger *log.Entry) { - log.Info("BEFORE COPY") n, _ := io.Copy(dst, src) - log.Info("AFTER COPY") log.Debugf("transferred %d bytes", n) return } From bcbd9357fc8559a2aaeb73c36fc3811b6ed3f39c Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Tue, 23 Feb 2021 10:54:45 +0100 Subject: [PATCH 09/20] Remove extra return --- pkg/http-tunnel/server/utils.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/http-tunnel/server/utils.go b/pkg/http-tunnel/server/utils.go index 73a03037..0bd4186a 100644 --- a/pkg/http-tunnel/server/utils.go +++ b/pkg/http-tunnel/server/utils.go @@ -16,7 +16,6 @@ import ( func transfer(dst io.Writer, src io.Reader, logger *log.Entry) { n, _ := io.Copy(dst, src) log.Debugf("transferred %d bytes", n) - return } func setXForwardedFor(h http.Header, remoteAddr string) { From 740cbb2e3f98d0c97736526503309dc02de7dc39 Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Tue, 23 Feb 2021 10:57:51 +0100 Subject: [PATCH 10/20] Update CHANGELOG --- CHANGELOG.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20395e9c..ce4b781f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,17 @@ # Changelog -## [v0.5.3]((https://github.com/NodeFactoryIo/vedran/tree/HEAD)) -[Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.5.2...HEAD) +## [unreleased]((https://github.com/NodeFactoryIo/vedran/tree/HEAD)) +[Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.5.3...HEAD) + +### Added + +### Fix +- Fix tunnel tcp connections not closing after requests finish [\#197](https://github.com/NodeFactoryIo/vedran/pull/197) ([mpetrun5](https://github.com/mpetrun5)) + +### Changed + +## [v0.5.3]((https://github.com/NodeFactoryIo/vedran/tree/v0.5.3)) +[Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.5.2...v0.5.3) ### Added From 3c306ab4160e4630500858880ec80bf49708fc6b Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Tue, 23 Feb 2021 11:03:55 +0100 Subject: [PATCH 11/20] Lint --- pkg/http-tunnel/server/tcpproxy.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/http-tunnel/server/tcpproxy.go b/pkg/http-tunnel/server/tcpproxy.go index 8fe3c736..53777372 100644 --- a/pkg/http-tunnel/server/tcpproxy.go +++ b/pkg/http-tunnel/server/tcpproxy.go @@ -104,7 +104,7 @@ func (p *TCPProxy) Proxy(w io.Writer, r io.ReadCloser, msg *proto.ControlMessage err = local.Close() if err != nil { - clogger.Errorf("Transfer close failed because of %v") + clogger.Errorf("Transfer close failed because of %v", err) } } From 472476cf327eb4a3cded2bc4afed31548d1bb002 Mon Sep 17 00:00:00 2001 From: Mak Muftic Date: Wed, 24 Feb 2021 12:47:04 +0100 Subject: [PATCH 12/20] Add active nodes log --- internal/schedule/checkactive/schedule.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/schedule/checkactive/schedule.go b/internal/schedule/checkactive/schedule.go index c02eaa2b..308924ef 100644 --- a/internal/schedule/checkactive/schedule.go +++ b/internal/schedule/checkactive/schedule.go @@ -34,7 +34,7 @@ func StartScheduledTask(repos *repositories.Repos) { func scheduledTask(repos *repositories.Repos, actions actions.Actions) { log.Debug("Started task: check all active nodes") activeNodes := repos.NodeRepo.GetAllActiveNodes() - + var activeNodesAfterCheck []string for _, node := range *activeNodes { pingActive, err := active.CheckIfPingActive(node.ID, repos) @@ -60,6 +60,14 @@ func scheduledTask(repos *repositories.Repos, actions actions.Actions) { log.Errorf("Unable to remove node %s from active because of %v", node.ID, err) } log.Debugf("Node %s metrics lagging more than 10 blocks, removed node from active", node.ID) + } else { + activeNodesAfterCheck = append(activeNodesAfterCheck, node.ID) } } + + if len(activeNodesAfterCheck) == 0 { + log.Debug("There is no active nodes currently") + } else { + log.Debugf("Currently active nodes: %v", activeNodesAfterCheck) + } } From 8e5c65e02e217693efccf03467e8d1b13e29f18e Mon Sep 17 00:00:00 2001 From: Mak Muftic Date: Wed, 24 Feb 2021 12:54:12 +0100 Subject: [PATCH 13/20] Fix ping handler --- internal/controllers/ping.go | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/internal/controllers/ping.go b/internal/controllers/ping.go index 021c5db4..a33b3dfb 100644 --- a/internal/controllers/ping.go +++ b/internal/controllers/ping.go @@ -10,7 +10,7 @@ import ( log "github.com/sirupsen/logrus" ) -const pingOffset = 5 +const pingOffset = 8 func (c ApiController) PingHandler(w http.ResponseWriter, r *http.Request) { request := r.Context().Value(auth.RequestContextKey).(*auth.RequestContext) @@ -20,18 +20,24 @@ func (c ApiController) PingHandler(w http.ResponseWriter, r *http.Request) { log.Errorf("Unable to calculate node downtime, error: %v", err) } - if math.Abs(downtimeDuration.Seconds()) > (stats.PingIntervalInSeconds + pingOffset) { - downtime := models.Downtime{ - Start: lastPingTime, - End: request.Timestamp, - NodeId: request.NodeId, + // if two pings come one after another (in 2 second interval) + // this means that one ping stuck in network and + // there is no need to write multiple downtimes + if request.Timestamp.Sub(lastPingTime).Seconds() > 2 { + // check if there were downtime + if math.Abs(downtimeDuration.Seconds()) > (stats.PingIntervalInSeconds + pingOffset) { + downtime := models.Downtime{ + Start: lastPingTime, + End: request.Timestamp, + NodeId: request.NodeId, + } + err = c.repositories.DowntimeRepo.Save(&downtime) + if err != nil { + log.Errorf("Unable to save node downtime, error: %v", err) + } + + log.Debugf("Saved node %s downtime of: %f", request.NodeId, math.Abs(downtimeDuration.Seconds())) } - err = c.repositories.DowntimeRepo.Save(&downtime) - if err != nil { - log.Errorf("Unable to save node downtime, error: %v", err) - } - - log.Debugf("Saved node %s downtime of: %f", request.NodeId, math.Abs(downtimeDuration.Seconds())) } // save ping to database From b447c5604720b7c1389391b80c97bf1bc5d672a3 Mon Sep 17 00:00:00 2001 From: Mak Muftic Date: Wed, 24 Feb 2021 13:12:09 +0100 Subject: [PATCH 14/20] Fix ping controller tests --- internal/controllers/ping.go | 2 +- internal/controllers/ping_test.go | 27 +++++++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/internal/controllers/ping.go b/internal/controllers/ping.go index a33b3dfb..bd3fecc2 100644 --- a/internal/controllers/ping.go +++ b/internal/controllers/ping.go @@ -23,7 +23,7 @@ func (c ApiController) PingHandler(w http.ResponseWriter, r *http.Request) { // if two pings come one after another (in 2 second interval) // this means that one ping stuck in network and // there is no need to write multiple downtimes - if request.Timestamp.Sub(lastPingTime).Seconds() > 2 { + if math.Abs(request.Timestamp.Sub(lastPingTime).Seconds()) > 2 { // check if there were downtime if math.Abs(downtimeDuration.Seconds()) > (stats.PingIntervalInSeconds + pingOffset) { downtime := models.Downtime{ diff --git a/internal/controllers/ping_test.go b/internal/controllers/ping_test.go index 3ff40f78..c56d6a54 100644 --- a/internal/controllers/ping_test.go +++ b/internal/controllers/ping_test.go @@ -27,6 +27,8 @@ func TestApiController_PingHandler(t *testing.T) { downtimeSaveErr error calculateDowntimeErr error downtimeDuration time.Duration + requestTimestamp time.Time + lastPingTimestamp time.Time }{ { name: "Returns 200 if downtime calculation fails", @@ -37,26 +39,32 @@ func TestApiController_PingHandler(t *testing.T) { downtimeSaveCallCount: 0, downtimeDuration: time.Duration(0), calculateDowntimeErr: fmt.Errorf("ERROR"), + requestTimestamp: time.Now(), + lastPingTimestamp: time.Now().Add(-5 * time.Second), }, { - name: "Returns 200 if donwtime save fails", + name: "Returns 200 if downtime save fails", statusCode: 200, pingSaveCallCount: 1, pingSaveErr: nil, downtimeSaveErr: fmt.Errorf("ERROR"), downtimeSaveCallCount: 1, - downtimeDuration: time.Duration(time.Second * 11), + downtimeDuration: time.Duration(time.Second * 19), calculateDowntimeErr: nil, + requestTimestamp: time.Now(), + lastPingTimestamp: time.Now().Add(-19 * time.Second), }, { - name: "Saves downtime if downtime duration more than 5 seconds", + name: "Saves downtime if downtime duration more than 18 seconds", statusCode: 200, pingSaveCallCount: 1, pingSaveErr: nil, downtimeSaveErr: nil, downtimeSaveCallCount: 1, - downtimeDuration: time.Duration(time.Second * 11), + downtimeDuration: time.Duration(time.Second * 19), calculateDowntimeErr: nil, + requestTimestamp: time.Now(), + lastPingTimestamp: time.Now().Add(-19 * time.Second), }, { name: "Returns 500 if saving ping fails", @@ -67,6 +75,8 @@ func TestApiController_PingHandler(t *testing.T) { downtimeSaveCallCount: 0, downtimeDuration: time.Duration(time.Second * 8), calculateDowntimeErr: nil, + requestTimestamp: time.Now(), + lastPingTimestamp: time.Now().Add(-5 * time.Second), }, { name: "Returns 200 and does not save downtime if downtime duration less than 5 + 5 seconds", @@ -77,13 +87,14 @@ func TestApiController_PingHandler(t *testing.T) { downtimeSaveCallCount: 0, downtimeDuration: time.Duration(time.Second * 8), calculateDowntimeErr: nil, + requestTimestamp: time.Now(), + lastPingTimestamp: time.Now().Add(-5 * time.Second), }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { - timestamp := time.Now() // create mock controller nodeRepoMock := mocks.NodeRepository{} recordRepoMock := mocks.RecordRepository{} @@ -92,10 +103,10 @@ func TestApiController_PingHandler(t *testing.T) { pingRepoMock := mocks.PingRepository{} pingRepoMock.On("Save", &models.Ping{ NodeId: "1", - Timestamp: timestamp, + Timestamp: test.requestTimestamp, }).Return(test.pingSaveErr) pingRepoMock.On("CalculateDowntime", mock.Anything, mock.Anything).Return( - time.Now(), test.downtimeDuration, test.calculateDowntimeErr) + test.lastPingTimestamp, test.downtimeDuration, test.calculateDowntimeErr) downtimeRepoMock := mocks.DowntimeRepository{} downtimeRepoMock.On("Save", mock.Anything).Return(test.downtimeSaveErr) @@ -113,7 +124,7 @@ func TestApiController_PingHandler(t *testing.T) { req, _ := http.NewRequest("POST", "/api/v1/node", bytes.NewReader(nil)) c := &auth.RequestContext{ NodeId: "1", - Timestamp: timestamp, + Timestamp: test.requestTimestamp, } ctx := context.WithValue(req.Context(), auth.RequestContextKey, c) req = req.WithContext(ctx) From 0765b3a62966a997ae4bd8ac06f9b3486a8077ad Mon Sep 17 00:00:00 2001 From: Mak Muftic Date: Wed, 24 Feb 2021 13:19:24 +0100 Subject: [PATCH 15/20] Update CHANGELOG file --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce4b781f..0df62095 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Changelog -## [unreleased]((https://github.com/NodeFactoryIo/vedran/tree/HEAD)) -[Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.5.3...HEAD) +## [v0.5.4]((https://github.com/NodeFactoryIo/vedran/tree/v0.5.4)) +[Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.5.3...v0.5.4) ### Added From 9dc4ab938fc7fa23c3f75900bc3317ad3382e222 Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Fri, 26 Feb 2021 11:22:25 +0100 Subject: [PATCH 16/20] Relase v0.5.4 --- .version | 2 +- CHANGELOG.md | 1 + docker-compose.yml | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.version b/.version index 60acae26..5f8379dc 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -version=0.5.3 +version=0.5.4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 0df62095..96956500 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### Fix - Fix tunnel tcp connections not closing after requests finish [\#197](https://github.com/NodeFactoryIo/vedran/pull/197) ([mpetrun5](https://github.com/mpetrun5)) +- Ping handling upgrade [\#198](https://github.com/NodeFactoryIo/vedran/pull/198) ([MakMuftic](https://github.com/MakMuftic)) ### Changed diff --git a/docker-compose.yml b/docker-compose.yml index fc6346cf..dc1eb265 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,11 +26,11 @@ services: container_name: "vedran" vedran-daemon: - image: nodefactory/vedran-daemon:v0.3.2 + image: nodefactory/vedran-daemon:v0.3.4 depends_on: - vedran - polkadot - command: --id test-id --lb http://vedran:4000 --node-rpc http://polkadot:9933 --node-ws http://polkadot:9944 --node-metrics http://polkadot:9615 --payout-address 1Z4GTfUN2QHkSeHqdBUDawgbEWzqtfRG8ouJZ26z3cm7ePN --log-level info + command: --id test-id --lb http://vedran:4000 --node-rpc http://polkadot:9933 --node-ws ws://polkadot:9944 --node-metrics http://polkadot:9615 --payout-address 1Z4GTfUN2QHkSeHqdBUDawgbEWzqtfRG8ouJZ26z3cm7ePN --log-level info prometheus: image: prom/prometheus From 17f6b2992f678b3c264dc684875e717976dd355e Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Fri, 26 Feb 2021 12:16:31 +0100 Subject: [PATCH 17/20] Fix grafana request counters being request specific --- .../dashboards/vedran-dashboard.json | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/infra/grafana/provisioning/dashboards/vedran-dashboard.json b/infra/grafana/provisioning/dashboards/vedran-dashboard.json index 492defeb..9ebace63 100644 --- a/infra/grafana/provisioning/dashboards/vedran-dashboard.json +++ b/infra/grafana/provisioning/dashboards/vedran-dashboard.json @@ -99,7 +99,7 @@ }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "vedran_number_of_successful_requests", @@ -157,12 +157,12 @@ "calcs": [ "mean" ], - "fields": "/^\\{code=\"200\", handler=\"/\", instance=\"vedran:4000\", job=\"prometheus\", method=\"POST\"\\}$/", + "fields": "", "values": false }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "rate(http_request_duration_seconds_count[$__interval])", @@ -215,12 +215,12 @@ "calcs": [ "mean" ], - "fields": "/^\\{code=\"200\", handler=\"/ws\", instance=\"vedran:4000\", job=\"prometheus\", method=\"GET\"\\}$/", + "fields": "", "values": false }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "rate(http_request_duration_seconds_count[5m])", @@ -268,12 +268,12 @@ "calcs": [ "sum" ], - "fields": "/^\\{code=\"200\", handler=\"/\", instance=\"vedran:4000\", job=\"prometheus\", method=\"POST\"\\}$/", + "fields": "", "values": false }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "delta(http_request_duration_seconds_count[$__interval])", @@ -326,13 +326,13 @@ "calcs": [ "sum" ], - "fields": "/^\\{code=\"200\", handler=\"/ws\", instance=\"vedran:4000\", job=\"prometheus\", method=\"GET\"\\}$/", + "fields": "", "limit": 200, "values": false }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "delta(http_request_duration_seconds_count[$__interval])", @@ -386,7 +386,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "pointradius": 2, "points": false, "renderer": "flot", @@ -491,7 +491,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "pointradius": 2, "points": false, "renderer": "flot", @@ -603,7 +603,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "pointradius": 2, "points": false, "renderer": "flot", @@ -699,7 +699,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "pointradius": 2, "points": false, "renderer": "flot", @@ -803,7 +803,7 @@ }, "showUnfilled": true }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "sum by (address) (vedran_payout_distribution)", @@ -864,7 +864,7 @@ }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "vedran_payout_date", @@ -941,7 +941,7 @@ }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "vedran_version", @@ -1008,7 +1008,7 @@ }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "vedran_version", @@ -1073,7 +1073,7 @@ }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "vedran_lb_payout_fee_total_percentage", @@ -1138,7 +1138,7 @@ }, "textMode": "auto" }, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "targets": [ { "expr": "vedran_lb_payout_fee_total / 10000000000", @@ -1196,7 +1196,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "pointradius": 2, "points": false, "renderer": "flot", @@ -1295,7 +1295,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "pointradius": 2, "points": false, "renderer": "flot", @@ -1390,7 +1390,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "pointradius": 2, "points": false, "renderer": "flot", @@ -1485,7 +1485,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "pointradius": 2, "points": false, "renderer": "flot", @@ -1594,7 +1594,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.6", + "pluginVersion": "7.3.5", "pointradius": 2, "points": false, "renderer": "flot", @@ -1660,7 +1660,7 @@ "list": [] }, "time": { - "from": "now-15m", + "from": "now-5m", "to": "now" }, "timepicker": {}, @@ -1668,4 +1668,4 @@ "title": "Vedran Dashboard", "uid": "7tNmHxAGz", "version": 1 -} \ No newline at end of file +} From b35a1f3866fd883b3335a8505e0afe30a91bb07c Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Fri, 26 Feb 2021 12:18:50 +0100 Subject: [PATCH 18/20] Add CHANGELOG --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96956500..5b4e79d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [unreleased]((https://github.com/NodeFactoryIo/vedran/tree/HEAD)) +[Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.5.4...HEAD) + +### Added + +### Fix +- Fix request counters in grafana dashboard [\#200](https://github.com/NodeFactoryIo/vedran/pull/200) ([mpetrun5](https://github.com/mpetrun5)) + +### Changed + ## [v0.5.4]((https://github.com/NodeFactoryIo/vedran/tree/v0.5.4)) [Full Changelog](https://github.com/NodeFactoryIo/vedran/compare/v0.5.3...v0.5.4) From be7a29154aeb3bc40489fe0a7b3a2738f6ed2338 Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Fri, 26 Feb 2021 12:51:01 +0100 Subject: [PATCH 19/20] Add regex per handler for request counters --- .../provisioning/dashboards/vedran-dashboard.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/infra/grafana/provisioning/dashboards/vedran-dashboard.json b/infra/grafana/provisioning/dashboards/vedran-dashboard.json index 9ebace63..90cf5b70 100644 --- a/infra/grafana/provisioning/dashboards/vedran-dashboard.json +++ b/infra/grafana/provisioning/dashboards/vedran-dashboard.json @@ -157,7 +157,7 @@ "calcs": [ "mean" ], - "fields": "", + "fields": "/.*handler=\"/\".*/", "values": false }, "textMode": "auto" @@ -215,7 +215,7 @@ "calcs": [ "mean" ], - "fields": "", + "fields": "/.*handler=\"/ws\".*/", "values": false }, "textMode": "auto" @@ -223,7 +223,7 @@ "pluginVersion": "7.3.5", "targets": [ { - "expr": "rate(http_request_duration_seconds_count[5m])", + "expr": "rate(http_request_duration_seconds_count[$__interval])", "interval": "", "legendFormat": "", "refId": "A" @@ -268,7 +268,7 @@ "calcs": [ "sum" ], - "fields": "", + "fields": "/.*handler=\"/\".*/", "values": false }, "textMode": "auto" @@ -326,7 +326,7 @@ "calcs": [ "sum" ], - "fields": "", + "fields": "/.*handler=\"/ws\".*/", "limit": 200, "values": false }, @@ -1660,12 +1660,12 @@ "list": [] }, "time": { - "from": "now-5m", + "from": "now-15m", "to": "now" }, "timepicker": {}, "timezone": "", "title": "Vedran Dashboard", "uid": "7tNmHxAGz", - "version": 1 + "version": 2 } From bcf082a6c257892a3d3612aeba6030f6bd8edb37 Mon Sep 17 00:00:00 2001 From: Matija Petrunic Date: Fri, 26 Feb 2021 14:40:49 +0100 Subject: [PATCH 20/20] Fix request per seconds counters --- .../dashboards/vedran-dashboard.json | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/infra/grafana/provisioning/dashboards/vedran-dashboard.json b/infra/grafana/provisioning/dashboards/vedran-dashboard.json index 90cf5b70..0c585ec5 100644 --- a/infra/grafana/provisioning/dashboards/vedran-dashboard.json +++ b/infra/grafana/provisioning/dashboards/vedran-dashboard.json @@ -92,7 +92,7 @@ "orientation": "vertical", "reduceOptions": { "calcs": [ - "max" + "last" ], "fields": "", "values": false @@ -155,7 +155,7 @@ "orientation": "auto", "reduceOptions": { "calcs": [ - "mean" + "max" ], "fields": "/.*handler=\"/\".*/", "values": false @@ -165,7 +165,7 @@ "pluginVersion": "7.3.5", "targets": [ { - "expr": "rate(http_request_duration_seconds_count[$__interval])", + "expr": "rate(http_request_duration_seconds_count[$__range])", "interval": "", "legendFormat": "", "refId": "A" @@ -213,7 +213,7 @@ "orientation": "auto", "reduceOptions": { "calcs": [ - "mean" + "max" ], "fields": "/.*handler=\"/ws\".*/", "values": false @@ -223,7 +223,7 @@ "pluginVersion": "7.3.5", "targets": [ { - "expr": "rate(http_request_duration_seconds_count[$__interval])", + "expr": "rate(http_request_duration_seconds_count[$__range])", "interval": "", "legendFormat": "", "refId": "A" @@ -266,7 +266,7 @@ "orientation": "auto", "reduceOptions": { "calcs": [ - "sum" + "diff" ], "fields": "/.*handler=\"/\".*/", "values": false @@ -276,8 +276,11 @@ "pluginVersion": "7.3.5", "targets": [ { - "expr": "delta(http_request_duration_seconds_count[$__interval])", + "expr": "http_request_duration_seconds_count", + "format": "time_series", + "instant": false, "interval": "", + "intervalFactor": 1, "legendFormat": "", "refId": "A" } @@ -324,7 +327,7 @@ "orientation": "auto", "reduceOptions": { "calcs": [ - "sum" + "diff" ], "fields": "/.*handler=\"/ws\".*/", "limit": 200, @@ -335,7 +338,7 @@ "pluginVersion": "7.3.5", "targets": [ { - "expr": "delta(http_request_duration_seconds_count[$__interval])", + "expr": "http_request_duration_seconds_count", "interval": "", "legendFormat": "", "refId": "A" @@ -1660,12 +1663,12 @@ "list": [] }, "time": { - "from": "now-15m", + "from": "now-5m", "to": "now" }, "timepicker": {}, "timezone": "", "title": "Vedran Dashboard", "uid": "7tNmHxAGz", - "version": 2 + "version": 3 }