proxyd: Parameterize full RPC request logging (#3110)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
parent
68cdd2ec8f
commit
cd0afa3176
@ -18,6 +18,9 @@ type ServerConfig struct {
|
||||
TimeoutSeconds int `toml:"timeout_seconds"`
|
||||
|
||||
MaxUpstreamBatchSize int `toml:"max_upstream_batch_size"`
|
||||
|
||||
EnableRequestLog bool `toml:"enable_request_log"`
|
||||
MaxRequestBodyLogLen int `toml:"max_request_body_log_len"`
|
||||
}
|
||||
|
||||
type CacheConfig struct {
|
||||
|
@ -222,6 +222,8 @@ func Start(config *Config) (func(), error) {
|
||||
secondsToDuration(config.Server.TimeoutSeconds),
|
||||
config.Server.MaxUpstreamBatchSize,
|
||||
rpcCache,
|
||||
config.Server.EnableRequestLog,
|
||||
config.Server.MaxRequestBodyLogLen,
|
||||
)
|
||||
|
||||
if config.Metrics.Enabled {
|
||||
|
@ -28,7 +28,7 @@ const (
|
||||
MaxBatchRPCCalls = 100
|
||||
cacheStatusHdr = "X-Proxyd-Cache-Status"
|
||||
defaultServerTimeout = time.Second * 10
|
||||
maxLogLength = 2000
|
||||
maxRequestBodyLogLen = 2000
|
||||
defaultMaxUpstreamBatchSize = 10
|
||||
)
|
||||
|
||||
@ -40,6 +40,8 @@ type Server struct {
|
||||
wsMethodWhitelist *StringSet
|
||||
rpcMethodMappings map[string]string
|
||||
maxBodySize int64
|
||||
enableRequestLog bool
|
||||
maxRequestBodyLogLen int
|
||||
authenticatedPaths map[string]string
|
||||
timeout time.Duration
|
||||
maxUpstreamBatchSize int
|
||||
@ -60,6 +62,8 @@ func NewServer(
|
||||
timeout time.Duration,
|
||||
maxUpstreamBatchSize int,
|
||||
cache RPCCache,
|
||||
enableRequestLog bool,
|
||||
maxRequestBodyLogLen int,
|
||||
) *Server {
|
||||
if cache == nil {
|
||||
cache = &NoopRPCCache{}
|
||||
@ -87,6 +91,8 @@ func NewServer(
|
||||
timeout: timeout,
|
||||
maxUpstreamBatchSize: maxUpstreamBatchSize,
|
||||
cache: cache,
|
||||
enableRequestLog: enableRequestLog,
|
||||
maxRequestBodyLogLen: maxRequestBodyLogLen,
|
||||
upgrader: &websocket.Upgrader{
|
||||
HandshakeTimeout: 5 * time.Second,
|
||||
},
|
||||
@ -169,11 +175,13 @@ func (s *Server) HandleRPC(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
RecordRequestPayloadSize(ctx, len(body))
|
||||
|
||||
if s.enableRequestLog {
|
||||
log.Info("Raw RPC request",
|
||||
"body", truncate(string(body)),
|
||||
"body", truncate(string(body), s.maxRequestBodyLogLen),
|
||||
"req_id", GetReqID(ctx),
|
||||
"auth", GetAuthCtx(ctx),
|
||||
)
|
||||
}
|
||||
|
||||
if IsBatch(body) {
|
||||
reqs, err := ParseBatchRPCReq(body)
|
||||
@ -527,9 +535,13 @@ func (n *NoopRPCCache) PutRPC(context.Context, *RPCReq, *RPCRes) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func truncate(str string) string {
|
||||
if len(str) > maxLogLength {
|
||||
return str[:maxLogLength] + "..."
|
||||
func truncate(str string, maxLen int) string {
|
||||
if maxLen == 0 {
|
||||
maxLen = maxRequestBodyLogLen
|
||||
}
|
||||
|
||||
if len(str) > maxLen {
|
||||
return str[:maxLen] + "..."
|
||||
} else {
|
||||
return str
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user