mirror of
https://github.com/minio/minio.git
synced 2025-07-14 11:21:52 -04:00
configure audit queue_size
This commit is contained in:
parent
7e8767c1c1
commit
ec42715219
@ -506,6 +506,7 @@ func lookupConfigs(s config.Config, setDriveCount int) {
|
|||||||
http.WithTargetName(k),
|
http.WithTargetName(k),
|
||||||
http.WithEndpoint(l.Endpoint),
|
http.WithEndpoint(l.Endpoint),
|
||||||
http.WithAuthToken(l.AuthToken),
|
http.WithAuthToken(l.AuthToken),
|
||||||
|
http.WithQueueSize(l.QueueSize),
|
||||||
http.WithUserAgent(loggerUserAgent),
|
http.WithUserAgent(loggerUserAgent),
|
||||||
http.WithLogKind(string(logger.All)),
|
http.WithLogKind(string(logger.All)),
|
||||||
http.WithTransport(NewGatewayHTTPTransport()),
|
http.WithTransport(NewGatewayHTTPTransport()),
|
||||||
@ -524,6 +525,7 @@ func lookupConfigs(s config.Config, setDriveCount int) {
|
|||||||
http.WithTargetName(k),
|
http.WithTargetName(k),
|
||||||
http.WithEndpoint(l.Endpoint),
|
http.WithEndpoint(l.Endpoint),
|
||||||
http.WithAuthToken(l.AuthToken),
|
http.WithAuthToken(l.AuthToken),
|
||||||
|
http.WithQueueSize(l.QueueSize),
|
||||||
http.WithUserAgent(loggerUserAgent),
|
http.WithUserAgent(loggerUserAgent),
|
||||||
http.WithLogKind(string(logger.All)),
|
http.WithLogKind(string(logger.All)),
|
||||||
http.WithTransport(NewGatewayHTTPTransport()),
|
http.WithTransport(NewGatewayHTTPTransport()),
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package logger
|
package logger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/minio/minio/cmd/config"
|
"github.com/minio/minio/cmd/config"
|
||||||
@ -33,6 +34,7 @@ type HTTP struct {
|
|||||||
Enabled bool `json:"enabled"`
|
Enabled bool `json:"enabled"`
|
||||||
Endpoint string `json:"endpoint"`
|
Endpoint string `json:"endpoint"`
|
||||||
AuthToken string `json:"authToken"`
|
AuthToken string `json:"authToken"`
|
||||||
|
QueueSize int `json:"queueSize"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config console and http logger targets
|
// Config console and http logger targets
|
||||||
@ -49,10 +51,12 @@ const (
|
|||||||
|
|
||||||
EnvLoggerWebhookEnable = "MINIO_LOGGER_WEBHOOK_ENABLE"
|
EnvLoggerWebhookEnable = "MINIO_LOGGER_WEBHOOK_ENABLE"
|
||||||
EnvLoggerWebhookEndpoint = "MINIO_LOGGER_WEBHOOK_ENDPOINT"
|
EnvLoggerWebhookEndpoint = "MINIO_LOGGER_WEBHOOK_ENDPOINT"
|
||||||
|
EnvLoggerWebhookQueueSize = "MINIO_LOGGER_WEBHOOK_QUEUE_SIZE"
|
||||||
EnvLoggerWebhookAuthToken = "MINIO_LOGGER_WEBHOOK_AUTH_TOKEN"
|
EnvLoggerWebhookAuthToken = "MINIO_LOGGER_WEBHOOK_AUTH_TOKEN"
|
||||||
|
|
||||||
EnvAuditWebhookEnable = "MINIO_AUDIT_WEBHOOK_ENABLE"
|
EnvAuditWebhookEnable = "MINIO_AUDIT_WEBHOOK_ENABLE"
|
||||||
EnvAuditWebhookEndpoint = "MINIO_AUDIT_WEBHOOK_ENDPOINT"
|
EnvAuditWebhookEndpoint = "MINIO_AUDIT_WEBHOOK_ENDPOINT"
|
||||||
|
EnvAuditWebhookQueueSize = "MINIO_AUDIT_WEBHOOK_QUEUE_SIZE"
|
||||||
EnvAuditWebhookAuthToken = "MINIO_AUDIT_WEBHOOK_AUTH_TOKEN"
|
EnvAuditWebhookAuthToken = "MINIO_AUDIT_WEBHOOK_AUTH_TOKEN"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -220,6 +224,14 @@ func LookupConfig(scfg config.Config) (Config, error) {
|
|||||||
if err != nil || !enable {
|
if err != nil || !enable {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
queueSizeEnv := EnvLoggerWebhookQueueSize
|
||||||
|
if target != config.Default {
|
||||||
|
queueSizeEnv = EnvLoggerWebhookQueueSize + config.Default + target
|
||||||
|
}
|
||||||
|
queueSize, err := strconv.Atoi(env.Get(queueSizeEnv, "100000"))
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
endpointEnv := EnvLoggerWebhookEndpoint
|
endpointEnv := EnvLoggerWebhookEndpoint
|
||||||
if target != config.Default {
|
if target != config.Default {
|
||||||
endpointEnv = EnvLoggerWebhookEndpoint + config.Default + target
|
endpointEnv = EnvLoggerWebhookEndpoint + config.Default + target
|
||||||
@ -232,6 +244,7 @@ func LookupConfig(scfg config.Config) (Config, error) {
|
|||||||
Enabled: true,
|
Enabled: true,
|
||||||
Endpoint: env.Get(endpointEnv, ""),
|
Endpoint: env.Get(endpointEnv, ""),
|
||||||
AuthToken: env.Get(authTokenEnv, ""),
|
AuthToken: env.Get(authTokenEnv, ""),
|
||||||
|
QueueSize: queueSize,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,6 +262,14 @@ func LookupConfig(scfg config.Config) (Config, error) {
|
|||||||
if err != nil || !enable {
|
if err != nil || !enable {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
queueSizeEnv := EnvAuditWebhookQueueSize
|
||||||
|
if target != config.Default {
|
||||||
|
queueSizeEnv = EnvAuditWebhookQueueSize + config.Default + target
|
||||||
|
}
|
||||||
|
queueSize, err := strconv.Atoi(env.Get(queueSizeEnv, "100000"))
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
endpointEnv := EnvAuditWebhookEndpoint
|
endpointEnv := EnvAuditWebhookEndpoint
|
||||||
if target != config.Default {
|
if target != config.Default {
|
||||||
endpointEnv = EnvAuditWebhookEndpoint + config.Default + target
|
endpointEnv = EnvAuditWebhookEndpoint + config.Default + target
|
||||||
@ -261,6 +282,7 @@ func LookupConfig(scfg config.Config) (Config, error) {
|
|||||||
Enabled: true,
|
Enabled: true,
|
||||||
Endpoint: env.Get(endpointEnv, ""),
|
Endpoint: env.Get(endpointEnv, ""),
|
||||||
AuthToken: env.Get(authTokenEnv, ""),
|
AuthToken: env.Get(authTokenEnv, ""),
|
||||||
|
QueueSize: queueSize,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,6 +311,7 @@ func LookupConfig(scfg config.Config) (Config, error) {
|
|||||||
Enabled: true,
|
Enabled: true,
|
||||||
Endpoint: kv.Get(Endpoint),
|
Endpoint: kv.Get(Endpoint),
|
||||||
AuthToken: kv.Get(AuthToken),
|
AuthToken: kv.Get(AuthToken),
|
||||||
|
QueueSize: 100000,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,6 +340,7 @@ func LookupConfig(scfg config.Config) (Config, error) {
|
|||||||
Enabled: true,
|
Enabled: true,
|
||||||
Endpoint: kv.Get(Endpoint),
|
Endpoint: kv.Get(Endpoint),
|
||||||
AuthToken: kv.Get(AuthToken),
|
AuthToken: kv.Get(AuthToken),
|
||||||
|
QueueSize: 100000,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ func (h *Target) String() string {
|
|||||||
|
|
||||||
// Validate validate the http target
|
// Validate validate the http target
|
||||||
func (h *Target) Validate() error {
|
func (h *Target) Validate() error {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(ctx, http.MethodPost, h.endpoint, strings.NewReader(`{}`))
|
req, err := http.NewRequestWithContext(ctx, http.MethodPost, h.endpoint, strings.NewReader(`{}`))
|
||||||
@ -107,6 +107,7 @@ func (h *Target) startHTTPLogger() {
|
|||||||
for entry := range h.logCh {
|
for entry := range h.logCh {
|
||||||
logJSON, err := json.Marshal(&entry)
|
logJSON, err := json.Marshal(&entry)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logger.LogIf(context.Background(), fmt.Errorf("failed to marshal %v: %v", entry, err))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,6 +115,8 @@ func (h *Target) startHTTPLogger() {
|
|||||||
req, err := http.NewRequestWithContext(ctx, http.MethodPost,
|
req, err := http.NewRequestWithContext(ctx, http.MethodPost,
|
||||||
h.endpoint, bytes.NewReader(logJSON))
|
h.endpoint, bytes.NewReader(logJSON))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logger.LogIf(ctx, fmt.Errorf("%s returned '%w', please check your endpoint configuration",
|
||||||
|
h.endpoint, err))
|
||||||
cancel()
|
cancel()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -130,7 +133,7 @@ func (h *Target) startHTTPLogger() {
|
|||||||
resp, err := h.client.Do(req)
|
resp, err := h.client.Do(req)
|
||||||
cancel()
|
cancel()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.LogIf(ctx, fmt.Errorf("%s returned '%w', please check your endpoint configuration\n",
|
logger.LogIf(ctx, fmt.Errorf("%s returned '%w', please check your endpoint configuration",
|
||||||
h.endpoint, err))
|
h.endpoint, err))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -199,12 +202,18 @@ func WithTransport(transport *http.Transport) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithQueueSize adds a custom queue size to control the
|
||||||
|
// in-flux of requeusts
|
||||||
|
func WithQueueSize(size int) Option {
|
||||||
|
return func(t *Target) {
|
||||||
|
t.logCh = make(chan interface{}, size)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// New initializes a new logger target which
|
// New initializes a new logger target which
|
||||||
// sends log over http to the specified endpoint
|
// sends log over http to the specified endpoint
|
||||||
func New(opts ...Option) *Target {
|
func New(opts ...Option) *Target {
|
||||||
h := &Target{
|
h := &Target{}
|
||||||
logCh: make(chan interface{}, 10000),
|
|
||||||
}
|
|
||||||
|
|
||||||
// Loop through each option
|
// Loop through each option
|
||||||
for _, opt := range opts {
|
for _, opt := range opts {
|
||||||
@ -226,9 +235,11 @@ func (h *Target) Send(entry interface{}, errKind string) error {
|
|||||||
select {
|
select {
|
||||||
case h.logCh <- entry:
|
case h.logCh <- entry:
|
||||||
default:
|
default:
|
||||||
|
err := errors.New("log buffer full")
|
||||||
|
logger.LogIf(context.Background(), fmt.Errorf("audit event lost %v: %v", entry, err))
|
||||||
// log channel is full, do not wait and return
|
// log channel is full, do not wait and return
|
||||||
// an error immediately to the caller
|
// an error immediately to the caller
|
||||||
return errors.New("log buffer full")
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
x
Reference in New Issue
Block a user