mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Config stats added to rals and rls
This commit is contained in:
@@ -527,12 +527,12 @@ func startUsersServer(internalUserSChan chan rpcclient.RpcClientConnection, data
|
||||
internalUserSChan <- userServer
|
||||
}
|
||||
|
||||
func startResourceLimiterService(internalRLSChan, internalCdrStatSChan chan rpcclient.RpcClientConnection, cfg *config.CGRConfig,
|
||||
func startResourceLimiterService(internalRLSChan, internalStatSConn chan rpcclient.RpcClientConnection, cfg *config.CGRConfig,
|
||||
dataDB engine.DataDB, server *utils.Server, exitChan chan bool) {
|
||||
var statsConn *rpcclient.RpcClientPool
|
||||
if len(cfg.ResourceLimiterCfg().CDRStatConns) != 0 { // Stats connection init
|
||||
if len(cfg.ResourceLimiterCfg().StatSConns) != 0 { // Stats connection init
|
||||
statsConn, err = engine.NewRPCPool(rpcclient.POOL_FIRST, cfg.ConnectAttempts, cfg.Reconnects, cfg.ConnectTimeout, cfg.ReplyTimeout,
|
||||
cfg.ResourceLimiterCfg().CDRStatConns, internalCdrStatSChan, cfg.InternalTtl)
|
||||
cfg.ResourceLimiterCfg().StatSConns, internalStatSConn, cfg.InternalTtl)
|
||||
if err != nil {
|
||||
utils.Logger.Crit(fmt.Sprintf("<RLs> Could not connect to StatS: %s", err.Error()))
|
||||
exitChan <- true
|
||||
@@ -848,7 +848,8 @@ func main() {
|
||||
|
||||
// Start RL service
|
||||
if cfg.ResourceLimiterCfg().Enabled {
|
||||
go startResourceLimiterService(internalRLSChan, internalCdrStatSChan, cfg, dataDB, server, exitChan)
|
||||
go startResourceLimiterService(internalRLSChan,
|
||||
internalStatSChan, cfg, dataDB, server, exitChan)
|
||||
}
|
||||
|
||||
if cfg.StatSCfg().Enabled {
|
||||
|
||||
@@ -227,6 +227,7 @@ type CGRConfig struct {
|
||||
LogLevel int // system wide log level, nothing higher than this will be logged
|
||||
RALsEnabled bool // start standalone server (no balancer)
|
||||
RALsCDRStatSConns []*HaPoolConfig // address where to reach the cdrstats service. Empty to disable stats gathering <""|internal|x.y.z.y:1234>
|
||||
RALsStatSConns []*HaPoolConfig
|
||||
RALsHistorySConns []*HaPoolConfig
|
||||
RALsPubSubSConns []*HaPoolConfig
|
||||
RALsUserSConns []*HaPoolConfig
|
||||
@@ -283,27 +284,32 @@ func (self *CGRConfig) checkConfigSanity() error {
|
||||
if self.RALsEnabled {
|
||||
for _, connCfg := range self.RALsCDRStatSConns {
|
||||
if connCfg.Address == utils.MetaInternal && !self.CDRStatsEnabled {
|
||||
return errors.New("CDRStats not enabled but requested by Rater component.")
|
||||
return errors.New("CDRStats not enabled but requested by RALs component.")
|
||||
}
|
||||
}
|
||||
for _, connCfg := range self.RALsStatSConns {
|
||||
if connCfg.Address == utils.MetaInternal && !self.statsCfg.Enabled {
|
||||
return errors.New("StatS not enabled but requested by RALs component.")
|
||||
}
|
||||
}
|
||||
for _, connCfg := range self.RALsHistorySConns {
|
||||
if connCfg.Address == utils.MetaInternal && !self.HistoryServerEnabled {
|
||||
return errors.New("History server not enabled but requested by Rater component.")
|
||||
return errors.New("History server not enabled but requested by RALs component.")
|
||||
}
|
||||
}
|
||||
for _, connCfg := range self.RALsPubSubSConns {
|
||||
if connCfg.Address == utils.MetaInternal && !self.PubSubServerEnabled {
|
||||
return errors.New("PubSub server not enabled but requested by Rater component.")
|
||||
return errors.New("PubSub server not enabled but requested by RALs component.")
|
||||
}
|
||||
}
|
||||
for _, connCfg := range self.RALsAliasSConns {
|
||||
if connCfg.Address == utils.MetaInternal && !self.AliasesServerEnabled {
|
||||
return errors.New("Alias server not enabled but requested by Rater component.")
|
||||
return errors.New("Alias server not enabled but requested by RALs component.")
|
||||
}
|
||||
}
|
||||
for _, connCfg := range self.RALsUserSConns {
|
||||
if connCfg.Address == utils.MetaInternal && !self.UserServerEnabled {
|
||||
return errors.New("User service not enabled but requested by Rater component.")
|
||||
return errors.New("User service not enabled but requested by RALs component.")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -497,9 +503,9 @@ func (self *CGRConfig) checkConfigSanity() error {
|
||||
}
|
||||
// ResourceLimiter checks
|
||||
if self.resourceLimiterCfg != nil && self.resourceLimiterCfg.Enabled {
|
||||
for _, connCfg := range self.resourceLimiterCfg.CDRStatConns {
|
||||
if connCfg.Address == utils.MetaInternal && !self.CDRStatsEnabled {
|
||||
return errors.New("CDRStats not enabled but requested by ResourceLimiter component.")
|
||||
for _, connCfg := range self.resourceLimiterCfg.StatSConns {
|
||||
if connCfg.Address == utils.MetaInternal && !self.statsCfg.Enabled {
|
||||
return errors.New("StatS not enabled but requested by ResourceLimiter component.")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -817,6 +823,13 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) error {
|
||||
self.RALsCDRStatSConns[idx].loadFromJsonCfg(jsnHaCfg)
|
||||
}
|
||||
}
|
||||
if jsnRALsCfg.Stats_conns != nil {
|
||||
self.RALsStatSConns = make([]*HaPoolConfig, len(*jsnRALsCfg.Stats_conns))
|
||||
for idx, jsnHaCfg := range *jsnRALsCfg.Stats_conns {
|
||||
self.RALsStatSConns[idx] = NewDfltHaPoolConfig()
|
||||
self.RALsStatSConns[idx].loadFromJsonCfg(jsnHaCfg)
|
||||
}
|
||||
}
|
||||
if jsnRALsCfg.Historys_conns != nil {
|
||||
self.RALsHistorySConns = make([]*HaPoolConfig, len(*jsnRALsCfg.Historys_conns))
|
||||
for idx, jsnHaCfg := range *jsnRALsCfg.Historys_conns {
|
||||
|
||||
@@ -112,6 +112,7 @@ const CGRATES_CFG_JSON = `
|
||||
"rals": {
|
||||
"enabled": false, // enable Rater service: <true|false>
|
||||
"cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"stats_conns": [], // address where to reach the stat service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"historys_conns": [], // address where to reach the history service, empty to disable history functionality: <""|*internal|x.y.z.y:1234>
|
||||
"pubsubs_conns": [], // address where to reach the pubusb service, empty to disable pubsub functionality: <""|*internal|x.y.z.y:1234>
|
||||
"users_conns": [], // address where to reach the user service, empty to disable user profile functionality: <""|*internal|x.y.z.y:1234>
|
||||
@@ -404,14 +405,14 @@ const CGRATES_CFG_JSON = `
|
||||
|
||||
|
||||
"rls": {
|
||||
"enabled": false, // starts ResourceLimiter service: <true|false>.
|
||||
"cdrstats_conns": [], // address where to reach the cdrstats service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"enabled": false, // starts ResourceLimiter service: <true|false>.
|
||||
"stats_conns": [], // address where to reach the stats service, empty to disable stats functionality: <""|*internal|x.y.z.y:1234>
|
||||
"store_interval": "0s", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|*never|$dur>
|
||||
},
|
||||
|
||||
|
||||
"stats": {
|
||||
"enabled": false, // starts Stat service: <true|false>.
|
||||
"enabled": false, // starts Stat service: <true|false>.
|
||||
"store_interval": "0s", // dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|*never|$dur>
|
||||
},
|
||||
|
||||
|
||||
@@ -175,7 +175,8 @@ func TestDfStorDBJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfRalsJsonCfg(t *testing.T) {
|
||||
eCfg := &RalsJsonCfg{Enabled: utils.BoolPointer(false), Cdrstats_conns: &[]*HaPoolJsonCfg{},
|
||||
Historys_conns: &[]*HaPoolJsonCfg{}, Pubsubs_conns: &[]*HaPoolJsonCfg{}, Users_conns: &[]*HaPoolJsonCfg{}, Aliases_conns: &[]*HaPoolJsonCfg{},
|
||||
Stats_conns: &[]*HaPoolJsonCfg{}, Historys_conns: &[]*HaPoolJsonCfg{}, Pubsubs_conns: &[]*HaPoolJsonCfg{},
|
||||
Users_conns: &[]*HaPoolJsonCfg{}, Aliases_conns: &[]*HaPoolJsonCfg{},
|
||||
Rp_subject_prefix_matching: utils.BoolPointer(false), Lcr_subject_prefix_matching: utils.BoolPointer(false)}
|
||||
if cfg, err := dfCgrJsonCfg.RalsJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
@@ -667,7 +668,7 @@ func TestDfUserServJsonCfg(t *testing.T) {
|
||||
func TestDfResourceLimiterSJsonCfg(t *testing.T) {
|
||||
eCfg := &ResourceLimiterServJsonCfg{
|
||||
Enabled: utils.BoolPointer(false),
|
||||
Cdrstats_conns: &[]*HaPoolJsonCfg{},
|
||||
Stats_conns: &[]*HaPoolJsonCfg{},
|
||||
Store_interval: utils.StringPointer("0s"),
|
||||
}
|
||||
if cfg, err := dfCgrJsonCfg.ResourceLimiterJsonCfg(); err != nil {
|
||||
|
||||
@@ -554,7 +554,7 @@ func TestCgrCfgJSONDefaultsUserS(t *testing.T) {
|
||||
func TestCgrCfgJSONDefaultsResLimCfg(t *testing.T) {
|
||||
eResLiCfg := &ResourceLimiterConfig{
|
||||
Enabled: false,
|
||||
CDRStatConns: []*HaPoolConfig{},
|
||||
StatSConns: []*HaPoolConfig{},
|
||||
StoreInterval: 0,
|
||||
}
|
||||
|
||||
|
||||
@@ -74,6 +74,7 @@ type DbJsonCfg struct {
|
||||
type RalsJsonCfg struct {
|
||||
Enabled *bool
|
||||
Cdrstats_conns *[]*HaPoolJsonCfg
|
||||
Stats_conns *[]*HaPoolJsonCfg
|
||||
Historys_conns *[]*HaPoolJsonCfg
|
||||
Pubsubs_conns *[]*HaPoolJsonCfg
|
||||
Aliases_conns *[]*HaPoolJsonCfg
|
||||
@@ -380,7 +381,7 @@ type UserServJsonCfg struct {
|
||||
// ResourceLimiter service config section
|
||||
type ResourceLimiterServJsonCfg struct {
|
||||
Enabled *bool
|
||||
Cdrstats_conns *[]*HaPoolJsonCfg
|
||||
Stats_conns *[]*HaPoolJsonCfg
|
||||
Store_interval *string
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ import (
|
||||
|
||||
type ResourceLimiterConfig struct {
|
||||
Enabled bool
|
||||
CDRStatConns []*HaPoolConfig // Connections towards CDRStatS
|
||||
StatSConns []*HaPoolConfig // Connections towards StatS
|
||||
StoreInterval time.Duration // Dump regularly from cache into dataDB
|
||||
}
|
||||
|
||||
@@ -36,11 +36,11 @@ func (rlcfg *ResourceLimiterConfig) loadFromJsonCfg(jsnCfg *ResourceLimiterServJ
|
||||
if jsnCfg.Enabled != nil {
|
||||
rlcfg.Enabled = *jsnCfg.Enabled
|
||||
}
|
||||
if jsnCfg.Cdrstats_conns != nil {
|
||||
rlcfg.CDRStatConns = make([]*HaPoolConfig, len(*jsnCfg.Cdrstats_conns))
|
||||
for idx, jsnHaCfg := range *jsnCfg.Cdrstats_conns {
|
||||
rlcfg.CDRStatConns[idx] = NewDfltHaPoolConfig()
|
||||
rlcfg.CDRStatConns[idx].loadFromJsonCfg(jsnHaCfg)
|
||||
if jsnCfg.Stats_conns != nil {
|
||||
rlcfg.StatSConns = make([]*HaPoolConfig, len(*jsnCfg.Stats_conns))
|
||||
for idx, jsnHaCfg := range *jsnCfg.Stats_conns {
|
||||
rlcfg.StatSConns[idx] = NewDfltHaPoolConfig()
|
||||
rlcfg.StatSConns[idx].loadFromJsonCfg(jsnHaCfg)
|
||||
}
|
||||
}
|
||||
if jsnCfg.Store_interval != nil {
|
||||
|
||||
Reference in New Issue
Block a user