diff --git a/config/prometheus.go b/config/prometheus.go index 961583f4..6528bd74 100644 --- a/config/prometheus.go +++ b/config/prometheus.go @@ -7,6 +7,10 @@ type ( ScrapeConfigFile string `toml:"scrape_config_file"` WebAddress string `toml:"web_address"` StoragePath string `toml:"wal_storage_path"` - MinBlockDuration string `toml:"wal_min_duration"` + + MinBlockDuration Duration `toml:"min_block_duration"` + MaxBlockDuration Duration `toml:"max_block_duration"` + RetentionDuration Duration `toml:"retention_time"` + RetentionSize string `toml:"retention_size"` } ) diff --git a/prometheus/prometheus.go b/prometheus/prometheus.go index 2b2b0da0..71c92892 100644 --- a/prometheus/prometheus.go +++ b/prometheus/prometheus.go @@ -520,9 +520,33 @@ func Start() { if len(cfg.agentStoragePath) == 0 { cfg.agentStoragePath = "./data-agent" } - if cfg.tsdb.MinBlockDuration == model.Duration(0) { - cfg.tsdb.MinBlockDuration = model.Duration(2 * time.Hour) + if coreconfig.Config.Prometheus.MinBlockDuration == coreconfig.Duration(0) { + // keep data in memory for 10min by default + cfg.tsdb.MinBlockDuration = model.Duration(10 * time.Minute) + } else { + cfg.tsdb.MinBlockDuration = model.Duration(coreconfig.Config.Prometheus.MinBlockDuration) + } + if coreconfig.Config.Prometheus.MaxBlockDuration == coreconfig.Duration(0) { + cfg.tsdb.MaxBlockDuration = model.Duration(20 * time.Minute) + } else { + cfg.tsdb.MaxBlockDuration = model.Duration(coreconfig.Config.Prometheus.MaxBlockDuration) + } + if coreconfig.Config.Prometheus.RetentionDuration == coreconfig.Duration(0) { + // reserve data for 24h by default + cfg.tsdb.RetentionDuration = model.Duration(24 * time.Hour) + } else { + cfg.tsdb.RetentionDuration = model.Duration(coreconfig.Config.Prometheus.RetentionDuration) } + if len(coreconfig.Config.Prometheus.RetentionSize) == 0 { + // max size is 1GB by default + cfg.tsdb.MaxBytes = 1024 * 1024 * 1024 + } else { + cfg.tsdb.MaxBytes, err = units.ParseBase2Bytes(coreconfig.Config.Prometheus.RetentionSize) + if err != nil { + panic(fmt.Sprintf("retention_size:%s format error %s", coreconfig.Config.Prometheus.RetentionSize, err)) + } + } + if cfg.webTimeout == model.Duration(0) { cfg.webTimeout = model.Duration(time.Minute * 5) }