Send deployment id and minio version in http header (#14378)

This commit is contained in:
Shireesh Anjal 2022-02-24 03:06:01 +05:30 committed by GitHub
parent 27f64dd9a4
commit 25144fedd5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 34 additions and 12 deletions

View file

@ -161,7 +161,7 @@ func StartGateway(ctx *cli.Context, gw Gateway) {
signal.Notify(globalOSSignalCh, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT) signal.Notify(globalOSSignalCh, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)
// This is only to uniquely identify each gateway deployments. // This is only to uniquely identify each gateway deployments.
globalDeploymentID = env.Get("MINIO_GATEWAY_DEPLOYMENT_ID", mustGetUUID()) globalDeploymentID = env.Get("MINIO_GATEWAY_DEPLOYMENT_ID", mustGetUUID())
logger.SetDeploymentID(globalDeploymentID) xhttp.SetDeploymentID(globalDeploymentID)
if gw == nil { if gw == nil {
logger.FatalIf(errUnexpected, "Gateway implementation not initialized") logger.FatalIf(errUnexpected, "Gateway implementation not initialized")

View file

@ -493,7 +493,8 @@ func serverMain(ctx *cli.Context) {
logFatalErrs(err, Endpoint{}, true) logFatalErrs(err, Endpoint{}, true)
} }
logger.SetDeploymentID(globalDeploymentID) xhttp.SetDeploymentID(globalDeploymentID)
xhttp.SetMinIOVersion(Version)
// Enable background operations for erasure coding // Enable background operations for erasure coding
if globalIsErasure { if globalIsErasure {

View file

@ -191,3 +191,9 @@ const (
UploadID = "uploadId" UploadID = "uploadId"
) )
// http headers sent to webhook targets
const (
// Reports the version of MinIO server
MinIOVersion = "x-minio-version"
)

View file

@ -33,6 +33,14 @@ import (
humanize "github.com/dustin/go-humanize" humanize "github.com/dustin/go-humanize"
) )
var (
// GlobalMinIOVersion - is sent in the header to all http targets
GlobalMinIOVersion string
// GlobalDeploymentID - is sent in the header to all http targets
GlobalDeploymentID string
)
const ( const (
serverShutdownPoll = 500 * time.Millisecond serverShutdownPoll = 500 * time.Millisecond
@ -196,3 +204,13 @@ func NewServer(addrs []string) *Server {
httpServer.MaxHeaderBytes = DefaultMaxHeaderBytes httpServer.MaxHeaderBytes = DefaultMaxHeaderBytes
return httpServer return httpServer
} }
// SetMinIOVersion -- MinIO version from the main package is set here
func SetMinIOVersion(minioVer string) {
GlobalMinIOVersion = minioVer
}
// SetDeploymentID -- Deployment Id from the main package is set here
func SetDeploymentID(deploymentID string) {
GlobalDeploymentID = deploymentID
}

View file

@ -28,6 +28,7 @@ import (
"time" "time"
"github.com/klauspost/compress/gzhttp" "github.com/klauspost/compress/gzhttp"
xhttp "github.com/minio/minio/internal/http"
"github.com/minio/minio/internal/logger/message/audit" "github.com/minio/minio/internal/logger/message/audit"
) )
@ -146,7 +147,7 @@ func GetAuditEntry(ctx context.Context) *audit.Entry {
} }
r = &audit.Entry{ r = &audit.Entry{
Version: audit.Version, Version: audit.Version,
DeploymentID: globalDeploymentID, DeploymentID: xhttp.GlobalDeploymentID,
Time: time.Now().UTC(), Time: time.Now().UTC(),
} }
SetAuditEntry(ctx, r) SetAuditEntry(ctx, r)
@ -170,7 +171,7 @@ func AuditLog(ctx context.Context, w http.ResponseWriter, r *http.Request, reqCl
return return
} }
entry = audit.ToEntry(w, r, reqClaims, globalDeploymentID) entry = audit.ToEntry(w, r, reqClaims, xhttp.GlobalDeploymentID)
// indicates all requests for this API call are inbound // indicates all requests for this API call are inbound
entry.Trigger = "incoming" entry.Trigger = "incoming"

View file

@ -32,6 +32,7 @@ import (
"github.com/minio/highwayhash" "github.com/minio/highwayhash"
"github.com/minio/minio-go/v7/pkg/set" "github.com/minio/minio-go/v7/pkg/set"
xhttp "github.com/minio/minio/internal/http"
"github.com/minio/minio/internal/logger/message/log" "github.com/minio/minio/internal/logger/message/log"
) )
@ -53,8 +54,6 @@ const (
var trimStrings []string var trimStrings []string
var globalDeploymentID string
// TimeFormat - logging time format. // TimeFormat - logging time format.
const TimeFormat string = "15:04:05 MST 01/02/2006" const TimeFormat string = "15:04:05 MST 01/02/2006"
@ -130,11 +129,6 @@ func uniqueEntries(paths []string) []string {
return m.ToSlice() return m.ToSlice()
} }
// SetDeploymentID -- Deployment Id from the main package is set here
func SetDeploymentID(deploymentID string) {
globalDeploymentID = deploymentID
}
// Init sets the trimStrings to possible GOPATHs // Init sets the trimStrings to possible GOPATHs
// and GOROOT directories. Also append github.com/minio/minio // and GOROOT directories. Also append github.com/minio/minio
// This is done to clean up the filename, when stack trace is // This is done to clean up the filename, when stack trace is
@ -319,7 +313,7 @@ func logIf(ctx context.Context, err error, errKind ...interface{}) {
// Get the cause for the Error // Get the cause for the Error
message := fmt.Sprintf("%v (%T)", err, err) message := fmt.Sprintf("%v (%T)", err, err)
if req.DeploymentID == "" { if req.DeploymentID == "" {
req.DeploymentID = globalDeploymentID req.DeploymentID = xhttp.GlobalDeploymentID
} }
objects := make([]log.ObjectVersion, 0, len(req.Objects)) objects := make([]log.ObjectVersion, 0, len(req.Objects))

View file

@ -144,6 +144,8 @@ func (h *Target) logEntry(entry interface{}) {
return return
} }
req.Header.Set(xhttp.ContentType, "application/json") req.Header.Set(xhttp.ContentType, "application/json")
req.Header.Set(xhttp.MinIOVersion, xhttp.GlobalMinIOVersion)
req.Header.Set(xhttp.MinioDeploymentID, xhttp.GlobalDeploymentID)
// Set user-agent to indicate MinIO release // Set user-agent to indicate MinIO release
// version to the configured log endpoint // version to the configured log endpoint