mirror of
https://github.com/nabbar/golib.git
synced 2025-10-05 15:56:50 +08:00
Rework Monitoring, Prometheus, Status system
Package Monitoring : - use packag dedicated to monitor component - each monitor work as standalone server to monitor health - collect metrics to export them to prometheus exporter Package Prometheus : - review to simplify use for API and not API metrics - optimize code Package Status : - Rework to use Monitor package - Rework to use native json / text Marshaller interface Context : - rework context config (context var) to use sync map and sync RWMutex (WORM) - move gin context to dedicated sub package (dependancies of logger make circular dependencies) - optimize code Config : - rework to optimize sync / collect of component - rework status to monitor - remove monitor managment from config to each component - add a func to set default logger to implement inherit default logger options - optimize code IOUtils : - isolate logger / closer interface as a usable & public interface & instance - this interface / instance allow to collect io.closer over a context to close all if context is done Logger : - rework to use context.config map - rework to use ioutils closer - rework to allow options to inherit a default options, or the last version of options - optimize code Size : - Add package Size to calculate and manipulate size Byte or bit - Add encoding : Text/JSON/Yaml/Toml... - Add option to défine default unit : Byte or bit Other : - adjust following code - optimize code - limit use of atomic value - rework to use RWMutex instead of sync.Mutex to maximize capabilities of read instead of write - remove 32bit build for CI/CD - add darwin/arm64 build for CI/CD Bump Dependencies
This commit is contained in:
@@ -31,27 +31,26 @@ import (
|
||||
"time"
|
||||
|
||||
libcfg "github.com/nabbar/golib/config"
|
||||
cfgtps "github.com/nabbar/golib/config/types"
|
||||
libctx "github.com/nabbar/golib/context"
|
||||
libdbs "github.com/nabbar/golib/database"
|
||||
)
|
||||
|
||||
const (
|
||||
ComponentType = "database"
|
||||
)
|
||||
|
||||
type ComponentDatabase interface {
|
||||
libcfg.Component
|
||||
cfgtps.Component
|
||||
|
||||
SetLOGKey(logKey string)
|
||||
SetLogOptions(ignoreRecordNotFoundError bool, slowThreshold time.Duration)
|
||||
GetDatabase() libdbs.Database
|
||||
SetDatabase(db libdbs.Database)
|
||||
}
|
||||
|
||||
func New(logKey string) ComponentDatabase {
|
||||
func New(ctx libctx.FuncContext) ComponentDatabase {
|
||||
return &componentDatabase{
|
||||
m: sync.Mutex{},
|
||||
l: logKey,
|
||||
d: nil,
|
||||
m: sync.RWMutex{},
|
||||
x: libctx.NewConfig[uint8](ctx),
|
||||
li: false,
|
||||
ls: 0,
|
||||
d: nil,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,11 +58,11 @@ func Register(cfg libcfg.Config, key string, cpt ComponentDatabase) {
|
||||
cfg.ComponentSet(key, cpt)
|
||||
}
|
||||
|
||||
func RegisterNew(cfg libcfg.Config, key, logKey string) {
|
||||
cfg.ComponentSet(key, New(logKey))
|
||||
func RegisterNew(ctx libctx.FuncContext, cfg libcfg.Config, key string) {
|
||||
cfg.ComponentSet(key, New(ctx))
|
||||
}
|
||||
|
||||
func Load(getCpt libcfg.FuncComponentGet, key string) ComponentDatabase {
|
||||
func Load(getCpt cfgtps.FuncCptGet, key string) ComponentDatabase {
|
||||
if c := getCpt(key); c == nil {
|
||||
return nil
|
||||
} else if h, ok := c.(ComponentDatabase); !ok {
|
||||
|
Reference in New Issue
Block a user