Skip to content

Commit 00b723d

Browse files
authored
[supservisor] configurable SSH log level (#16713)
as well rate limit SSH stdout
1 parent 97b1b5d commit 00b723d

File tree

1 file changed

+23
-19
lines changed
  • components/supervisor/pkg/supervisor

1 file changed

+23
-19
lines changed

components/supervisor/pkg/supervisor/ssh.go

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"golang.org/x/xerrors"
1919

2020
"github.com/gitpod-io/gitpod/common-go/log"
21+
"github.com/gitpod-io/gitpod/supervisor/pkg/dropwriter"
2122
"github.com/sirupsen/logrus"
2223
)
2324

@@ -103,25 +104,23 @@ func (s *sshServer) handleConn(ctx context.Context, conn net.Conn) {
103104
"-oSubsystem sftp internal-sftp",
104105
"-oStrictModes no", // don't care for home directory and file permissions
105106
)
106-
// TODO enabled DEBUG mode by default - reconsider it
107-
sshdLogLevel := "DEBUG"
108-
if s.cfg.isDebugWorkspace() {
109-
switch log.Log.Logger.GetLevel() {
110-
case logrus.PanicLevel:
111-
sshdLogLevel = "FATAL"
112-
case logrus.FatalLevel:
113-
sshdLogLevel = "FATAL"
114-
case logrus.ErrorLevel:
115-
sshdLogLevel = "ERROR"
116-
case logrus.WarnLevel:
117-
sshdLogLevel = "INFO"
118-
case logrus.InfoLevel:
119-
sshdLogLevel = "INFO"
120-
case logrus.DebugLevel:
121-
sshdLogLevel = "VERBOSE"
122-
case logrus.TraceLevel:
123-
sshdLogLevel = "DEBUG"
124-
}
107+
// can be configured with gp env LOG_LEVEL=DEBUG to see SSH sessions/channels
108+
sshdLogLevel := "ERROR"
109+
switch log.Log.Logger.GetLevel() {
110+
case logrus.PanicLevel:
111+
sshdLogLevel = "FATAL"
112+
case logrus.FatalLevel:
113+
sshdLogLevel = "FATAL"
114+
case logrus.ErrorLevel:
115+
sshdLogLevel = "ERROR"
116+
case logrus.WarnLevel:
117+
sshdLogLevel = "INFO"
118+
case logrus.InfoLevel:
119+
sshdLogLevel = "INFO"
120+
case logrus.DebugLevel:
121+
sshdLogLevel = "VERBOSE"
122+
case logrus.TraceLevel:
123+
sshdLogLevel = "DEBUG"
125124
}
126125
args = append(args, "-oLogLevel "+sshdLogLevel)
127126

@@ -150,6 +149,11 @@ func (s *sshServer) handleConn(ctx context.Context, conn net.Conn) {
150149
cmd.Env = s.envvars
151150
cmd.ExtraFiles = []*os.File{socketFD}
152151
cmd.Stderr = os.Stderr
152+
if s.cfg.WorkspaceLogRateLimit > 0 {
153+
limit := int64(s.cfg.WorkspaceLogRateLimit)
154+
cmd.Stderr = dropwriter.Writer(cmd.Stderr, dropwriter.NewBucket(limit*1024*3, limit*1024))
155+
log.WithField("limit_kb_per_sec", limit).Info("rate limiting SSH log output")
156+
}
153157
cmd.Stdin = bufio.NewReader(socketFD)
154158
cmd.Stdout = bufio.NewWriter(socketFD)
155159

0 commit comments

Comments
 (0)