修复代理与日志链路的可靠性问题

This commit is contained in:
2026-07-11 17:23:32 +08:00
parent d39f5a1048
commit 9e6e7ca3c7
21 changed files with 417 additions and 83 deletions
+12 -1
View File
@@ -3,6 +3,7 @@ package config
import (
"errors"
"fmt"
"math"
"net/netip"
"net/url"
"os"
@@ -19,6 +20,7 @@ type Config struct {
UpstreamURL *url.URL
ClickHouseURL string
MaxBodyBytes int64
MaxRequestBytes int64
LogQueueSize int
LogQueueBytes int64
LogBatchSize int
@@ -42,6 +44,10 @@ func Load() (*Config, error) {
if err != nil {
return nil, err
}
maxRequestBytes, err := getEnvInt64("MAX_REQUEST_BYTES", 16<<20)
if err != nil {
return nil, err
}
logQueueSize, err := getEnvInt("LOG_QUEUE_SIZE", 256)
if err != nil {
return nil, err
@@ -103,6 +109,7 @@ func Load() (*Config, error) {
ListenAddr: getEnv("LISTEN_ADDR", ":8080"),
ClickHouseURL: os.Getenv("CLICKHOUSE_URL"),
MaxBodyBytes: maxBodyBytes,
MaxRequestBytes: maxRequestBytes,
LogQueueSize: logQueueSize,
LogQueueBytes: logQueueBytes,
LogBatchSize: logBatchSize,
@@ -128,7 +135,7 @@ func Load() (*Config, error) {
if err != nil {
return nil, fmt.Errorf("invalid UPSTREAM_URL: %w", err)
}
if u.Scheme == "" || u.Host == "" {
if (u.Scheme != "http" && u.Scheme != "https") || u.Host == "" {
return nil, fmt.Errorf("invalid UPSTREAM_URL: %q", upstream)
}
cfg.UpstreamURL = u
@@ -144,6 +151,7 @@ func Load() (*Config, error) {
value int64
}{
{key: "MAX_BODY_BYTES", value: cfg.MaxBodyBytes},
{key: "MAX_REQUEST_BYTES", value: cfg.MaxRequestBytes},
{key: "LOG_QUEUE_SIZE", value: int64(cfg.LogQueueSize)},
{key: "LOG_QUEUE_BYTES", value: cfg.LogQueueBytes},
{key: "LOG_BATCH_SIZE", value: int64(cfg.LogBatchSize)},
@@ -162,6 +170,9 @@ func Load() (*Config, error) {
return nil, fmt.Errorf("%s must be greater than zero", item.key)
}
}
if cfg.MaxRequestBytes == math.MaxInt64 {
return nil, errors.New("MAX_REQUEST_BYTES is too large")
}
return cfg, nil
}