From 3e0e30f2ccbec1ae2e15ace8f6eae82c89751c32 Mon Sep 17 00:00:00 2001 From: DanB Date: Fri, 1 Aug 2014 15:36:37 +0200 Subject: [PATCH] Calculate stats after mediation storing the results in stordb --- data/conf/samples/osips_cdrs_cdrstats.cfg | 12 ++++++------ data/tariffplans/prepaid1centpsec/CdrStats.csv | 2 +- engine/mediator.go | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/data/conf/samples/osips_cdrs_cdrstats.cfg b/data/conf/samples/osips_cdrs_cdrstats.cfg index a19a25b5e..66103b179 100644 --- a/data/conf/samples/osips_cdrs_cdrstats.cfg +++ b/data/conf/samples/osips_cdrs_cdrstats.cfg @@ -14,19 +14,19 @@ enabled = true # Enable RaterCDRSExportPath service: . # enabled = false # Starts Scheduler service: . [cdrs] -enabled = true # Start the CDR Server service: . -# mediator = # Address where to reach the Mediator. Empty for disabling mediation. <""|internal> -cdrstats = internal # Address where to reach the cdrstats service: +enabled = true # Start the CDR Server service: . +mediator = internal # Address where to reach the Mediator. Empty for disabling mediation. <""|internal> +# cdrstats = # Address where to reach the cdrstats service: [mediator] -# enabled = false # Starts Mediator service: . +enabled = true # Starts Mediator service: . # rater = internal # Address where to reach the Rater: # cdrstats = internal # Address where to reach the cdrstats service: [cdrstats] enabled = true # Starts the cdrstats service: -# queue_length = 50 # Number of items in the stats buffer -# time_window = 1h # Will only keep the CDRs who's call setup time is not older than time.Now()-TimeWindow +#queue_length = 50 # Number of items in the stats buffer +time_window = 1h # Will only keep the CDRs who's call setup time is not older than time.Now()-TimeWindow # metrics = ASR, ACD, ACC # Stat metric ids to build # setup_interval = # Filter on CDR SetupTime # tors = # Filter on CDR TOR fields diff --git a/data/tariffplans/prepaid1centpsec/CdrStats.csv b/data/tariffplans/prepaid1centpsec/CdrStats.csv index d17db8bed..1bc8e12e7 100644 --- a/data/tariffplans/prepaid1centpsec/CdrStats.csv +++ b/data/tariffplans/prepaid1centpsec/CdrStats.csv @@ -1,5 +1,5 @@ #Id,QueueLength,TimeWindow,Metrics,SetupInterval,TOR,CdrHost,CdrSource,ReqType,Direction,Tenant,Category,Account,Subject,DestinationPrefix,UsageInterval,MediationRunIds,RatedAccount,RatedSubject,CostInterval,Triggers -CDRST1,5,60m,ASR,2014-07-29T15:00:00Z;2014-07-29T16:00:00Z,*voice,87.139.12.167,FS_JSON,rated,*out,cgrates.org,call,dan,dan,49,5m;10m,default,rif,rif,0;2,CDRST1_WARN_ASR +CDRST1,5,60m,ASR,2014-07-29T15:00:00Z;2014-07-29T16:00:00Z,*voice,87.139.12.167,FS_JSON,rated,*out,cgrates.org,call,dan,dan,+49,5m;10m,default,rif,rif,0;2,CDRST1_WARN_ASR CDRST1,,,ACD,,,,,,,,,,,,,,,,,CDRST1_WARN_ACD CDRST1,,,ACC,,,,,,,,,,,,,,,,,CDRST1_WARN_ACC CDRST2,10,10m,ASR,,,,,,,cgrates.org,call,,,,,,,,,CDRST2_WARN_ASR diff --git a/engine/mediator.go b/engine/mediator.go index 9cb5e3a56..2f00c1502 100644 --- a/engine/mediator.go +++ b/engine/mediator.go @@ -168,17 +168,17 @@ func (self *Mediator) RateCdr(storedCdr *utils.StoredCdr, sendToStats bool) erro if err := self.rateCDR(cdr); err != nil { extraInfo = err.Error() } - if sendToStats && self.stats != nil { + if err := self.cdrDb.SetRatedCdr(cdr, extraInfo); err != nil { + Logger.Err(fmt.Sprintf(" Could not record cost for cgrid: <%s>, ERROR: <%s>, cost: %f, extraInfo: %s", + cdr.CgrId, err.Error(), cdr.Cost, extraInfo)) + } + if sendToStats && self.stats != nil { // We send to stats only after saving to db since there are chances we cannot store and then no way to reproduce stats offline go func() { if err := self.stats.AppendCDR(cdr, nil); err != nil { Logger.Err(fmt.Sprintf("Could not append cdr to stats (mediator): %s", err.Error())) } }() } - if err := self.cdrDb.SetRatedCdr(cdr, extraInfo); err != nil { - Logger.Err(fmt.Sprintf(" Could not record cost for cgrid: <%s>, ERROR: <%s>, cost: %f, extraInfo: %s", - cdr.CgrId, err.Error(), cdr.Cost, extraInfo)) - } } return nil }