From 94686b36cdcf23746e82ecc47b05d9b1e026d8e4 Mon Sep 17 00:00:00 2001 From: DanB Date: Wed, 9 Aug 2017 00:58:46 +0200 Subject: [PATCH] Stats configured within CDRS --- engine/cdrs.go | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/engine/cdrs.go b/engine/cdrs.go index 7b106abf5..cd54a4684 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -197,11 +197,21 @@ func (self *CdrServer) processCdr(cdr *CDR) (err error) { var out int go self.cdrstats.Call("CDRStatsV1.AppendCDR", cdr, &out) } + if self.stats != nil { + cdrIf, _ := cdr.AsMapStringIface() + cdrIf[utils.ID] = cdr.CGRID + if cdrIf[utils.ID] == "" { + cdrIf[utils.ID] = cdr.OriginID + } + var reply string + go self.stats.Call("StatSV1.ProcessEvent", cdrIf, &reply) + } if len(self.cgrCfg.CDRSOnlineCDRExports) != 0 { // Replicate raw CDR self.replicateCDRs([]*CDR{cdr}) } if self.rals != nil && !cdr.Rated { // CDRs not rated will be processed by Rating - go self.deriveRateStoreStatsReplicate(cdr, self.cgrCfg.CDRSStoreCdrs, self.cdrstats != nil, len(self.cgrCfg.CDRSOnlineCDRExports) != 0) + go self.deriveRateStoreStatsReplicate(cdr, self.cgrCfg.CDRSStoreCdrs, + self.cdrstats != nil, len(self.cgrCfg.CDRSOnlineCDRExports) != 0) } return nil } @@ -278,9 +288,20 @@ func (self *CdrServer) deriveRateStoreStatsReplicate(cdr *CDR, store, cdrstats, // Attach CDR to stats if cdrstats { // Send CDR to stats for _, ratedCDR := range ratedCDRs { - var out int - if err := self.cdrstats.Call("CDRStatsV1.AppendCDR", ratedCDR, &out); err != nil { - utils.Logger.Err(fmt.Sprintf(" Could not send CDR to cdrstats: %s", err.Error())) + if self.cdrstats != nil { + var out int + if err := self.cdrstats.Call("CDRStatsV1.AppendCDR", ratedCDR, &out); err != nil { + utils.Logger.Err(fmt.Sprintf(" Could not send CDR to cdrstats: %s", err.Error())) + } + } + if self.stats != nil { + cdrIf, _ := ratedCDR.AsMapStringIface() + cdrIf[utils.ID] = ratedCDR.CGRID + if cdrIf[utils.ID] == "" { + cdrIf[utils.ID] = ratedCDR.OriginID + } + var reply string + go self.stats.Call("StatSV1.ProcessEvent", cdrIf, &reply) } } }