mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-05-06 05:38:50 +00:00
e61772e858
* feat: tsdb * fix(ci): remove --parseGoList=false from swag init to fix dependency resolution * fix(ci): fix swag init directory and temporary remove s390x support due to cgo issues * fix(ci): fix swag init output directory to cmd/dashboard/docs * fix(ci): set GOTOOLCHAIN=auto for gosec * feat: add system storage maintenance for SQLite and TSDB * shit * feat: add s390x support and improve service monitoring * ci: upgrade goreleaser-cross image to v1.25 * ci: add libzstd-dev:s390x for cross-compilation * ci: build libzstd for s390x from source * ci: add libzstd_linux_s390x.go for gozstd linking * ci: use vendor mode for s390x gozstd build * ci: clone zstd source for s390x build * refactor(tsdb): rename MaxDiskUsageGB to MinFreeDiskSpaceGB and optimize queries - Rename config to accurately reflect VictoriaMetrics behavior: minimum free disk space threshold - Add QueryServiceHistoryByServerID for batch query optimization - Fix hasStatus to avoid false status counting when only delay data exists - Fix service aggregation boundary: use successCount*2 >= count - Fix serviceID parsing with strconv.ParseUint error handling - Add TagFiltersCacheSize for better query performance * feat(api): add server metrics endpoint and simplify service history response - Add /server/:id/metrics API for querying TSDB server metrics - Simplify getServiceHistory by removing redundant data conversion - Change AvgDelay type from float32 to float64 - Remove generated swagger docs (to be regenerated) - Update TSDB query, writer and tests * chore: 临时禁用不支持前端 * ci: cache zstd build for s390x to speed up CI * fix(tsdb): fix race conditions, data correctness and optimize performance - Fix TOCTOU race between IsClosed() and write/query by holding RLock - Fix delay=0 excluded from stats by using hasDelay flag instead of value > 0 - Fix fmt.Sscanf -> strconv.ParseUint for server_id parsing with error logging - Fix buffer unbounded growth by flushing inside lock when over maxSize - Split makeMetricRow into makeServerMetricRow/makeServiceMetricRow - Extract InitGlobalSettings() from Open() for VictoriaMetrics globals - Remove redundant instance/GetInstance/SetInstance singleton - Add error logging for silently skipped block decode errors - Optimize WriteBatch* to build all rows in single write call - Optimize downsample to use linear scan instead of map for sorted data - Optimize query slice reuse across block iterations * 服务添加DisplayIndex (#1166) * 服务添加DisplayIndex * 根据ai建议修改 --------- Co-authored-by: huYang <306061454@qq.com> * fix(tsdb): restore SQLite fallback and monthly status reload on restart - Restore ServiceHistory model and SQLite write fallback when TSDB is disabled - Reload monthlyStatus (30-day) and serviceStatusToday from TSDB/SQLite on startup - Add SQLite fallback query for /service/:id/history and /server/:id/service - Remove breaking GET /service/:id endpoint, keep /service/:id/history only - Add QueryServiceDailyStats to TSDB for per-day aggregation - Add tests for monthly status and today stats loading from both TSDB and SQLite - Migrate ServiceHistory table only when TSDB is disabled * ci: exclude false-positive gosec rules G117, G703, G704 * feat(api): expose tsdb_enabled in setting response * ci: restore G115 exclusion accidentally dropped in previous commit * fix: update version numbers for OfficialAdmin and Official templates * chore: upgrade frontend * chore: upgrade frontend --------- Co-authored-by: 胡说丷刂 <34758853+laosan-xx@users.noreply.github.com> Co-authored-by: huYang <306061454@qq.com>
74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
package singleton
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/nezhahq/nezha/model"
|
|
"github.com/nezhahq/nezha/pkg/tsdb"
|
|
)
|
|
|
|
var TSDBShared *tsdb.TSDB
|
|
|
|
func InitTSDB() error {
|
|
config := &tsdb.Config{
|
|
RetentionDays: 30,
|
|
MinFreeDiskSpaceGB: 1,
|
|
MaxMemoryMB: 256,
|
|
}
|
|
|
|
if Conf.TSDB.DataPath != "" {
|
|
config.DataPath = Conf.TSDB.DataPath
|
|
}
|
|
if Conf.TSDB.RetentionDays > 0 {
|
|
config.RetentionDays = Conf.TSDB.RetentionDays
|
|
}
|
|
if Conf.TSDB.MinFreeDiskSpaceGB > 0 {
|
|
config.MinFreeDiskSpaceGB = Conf.TSDB.MinFreeDiskSpaceGB
|
|
}
|
|
if Conf.TSDB.MaxMemoryMB > 0 {
|
|
config.MaxMemoryMB = Conf.TSDB.MaxMemoryMB
|
|
}
|
|
if Conf.TSDB.WriteBufferSize > 0 {
|
|
config.WriteBufferSize = Conf.TSDB.WriteBufferSize
|
|
}
|
|
if Conf.TSDB.WriteBufferFlushInterval > 0 {
|
|
config.WriteBufferFlushInterval = time.Duration(Conf.TSDB.WriteBufferFlushInterval) * time.Second
|
|
}
|
|
|
|
if !config.Enabled() {
|
|
log.Println("NEZHA>> TSDB is disabled (tsdb.data_path not configured)")
|
|
if DB != nil {
|
|
return DB.AutoMigrate(model.ServiceHistory{})
|
|
}
|
|
return nil
|
|
}
|
|
|
|
var err error
|
|
TSDBShared, err = tsdb.Open(config)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Println("NEZHA>> TSDB initialized successfully")
|
|
|
|
if DB != nil && DB.Migrator().HasTable("service_histories") {
|
|
log.Println("NEZHA>> Dropping legacy service_histories table (TSDB is now enabled). Historical data will NOT be migrated.")
|
|
if err := DB.Migrator().DropTable("service_histories"); err != nil {
|
|
log.Printf("NEZHA>> Warning: failed to drop service_histories table: %v", err)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func TSDBEnabled() bool {
|
|
return TSDBShared != nil && !TSDBShared.IsClosed()
|
|
}
|
|
|
|
func CloseTSDB() {
|
|
if TSDBShared != nil {
|
|
TSDBShared.Close()
|
|
}
|
|
}
|