func (this *SCounterBase) SetCnt(cnt int64) { this.Lock() this.Cnt = cnt this.ts = time.Now().Unix() this.Time = ntime.FormatTs(this.ts) this.Unlock() }
func SendMockOnce() int { if !sema.TryAcquire() { return -1 } defer sema.Release() // not enabled if !g.Config().Sender.Enabled { return 0 } start := time.Now().Unix() cnt, _ := sendMock() end := time.Now().Unix() if g.Config().Debug { log.Printf("sender cron, cnt %d, time %ds, start %s", cnt, end-start, ttime.FormatTs(start)) } // statistics g.SenderCronCnt.Incr() g.SenderLastTs.SetCnt(end - start) g.SenderCnt.IncrBy(int64(cnt)) return cnt }
func UpdateIndexOfOneGraph(graphAddr string, src string) { startTs := time.Now().Unix() err := updateIndexOfOneGraph(graphAddr) endTs := time.Now().Unix() // statistics proc.IndexUpdateCnt.Incr() if err == nil { log.Printf("index update ok, %s, %s, start %s, ts %ds", src, graphAddr, ntime.FormatTs(startTs), endTs-startTs) } else { proc.IndexUpdateErrorCnt.Incr() log.Printf("index update error, %s, %s, start %s, ts %ds, reason %v", src, graphAddr, ntime.FormatTs(startTs), endTs-startTs, err) } }
func collect() { startTs := time.Now().Unix() _collect() endTs := time.Now().Unix() log.Printf("collect, start %s, ts %ds\n", ntime.FormatTs(startTs), endTs-startTs) // statistics proc.CollectorCronCnt.Incr() }
// 索引的全量更新 func DeleteIndex() { startTs := time.Now().Unix() deleteIndex() endTs := time.Now().Unix() log.Printf("deleteIndex, start %s, ts %ds", ntime.FormatTs(startTs), endTs-startTs) // statistics proc.IndexDeleteCnt.Incr() }
// 启动索引的 异步、增量更新 任务 func StartIndexUpdateIncrTask() { for { time.Sleep(IndexUpdateIncrTaskSleepInterval) startTs := time.Now().Unix() cnt := updateIndexIncr() endTs := time.Now().Unix() // statistics proc.IndexUpdateIncrCnt.SetCnt(int64(cnt)) proc.IndexUpdateIncr.Incr() proc.IndexUpdateIncr.PutOther("lastStartTs", ntime.FormatTs(startTs)) proc.IndexUpdateIncr.PutOther("lastTimeConsumingInSec", endTs-startTs) } }
func UpdateIndexAll(updateStepInSec int64) { // 减少任务积压,但高并发时可能无效(AvailablePermits不是线程安全的) if semaIndexUpdateAllTask.AvailablePermits() <= 0 { log.Println("updateIndexAll, concurrent not avaiable") return } semaIndexUpdateAllTask.Acquire() defer semaIndexUpdateAllTask.Release() startTs := time.Now().Unix() cnt := updateIndexAll(updateStepInSec) endTs := time.Now().Unix() log.Printf("UpdateIndexAll, lastStartTs %s, updateStepInSec %d, lastTimeConsumingInSec %d\n", ntime.FormatTs(startTs), updateStepInSec, endTs-startTs) // statistics proc.IndexUpdateAllCnt.SetCnt(int64(cnt)) proc.IndexUpdateAll.Incr() proc.IndexUpdateAll.PutOther("lastStartTs", ntime.FormatTs(startTs)) proc.IndexUpdateAll.PutOther("updateStepInSec", updateStepInSec) proc.IndexUpdateAll.PutOther("lastTimeConsumingInSec", endTs-startTs) proc.IndexUpdateAll.PutOther("updateCnt", cnt) }
func (this *SCounterQps) Get() *SCounterQps { this.Lock() defer this.Unlock() this.ts = time.Now().Unix() this.Time = ntime.FormatTs(this.ts) // get smooth qps value if this.ts-this.lastTs > DefaultSCounterQpsPeriod { this.Qps = int64((this.Cnt - this.lastCnt) / (this.ts - this.lastTs)) this.lastTs = this.ts this.lastCnt = this.Cnt } return this }
func StartNdConfigCron() { ndconfigCron.AddFuncCC(ndconfigCronSpec, func() { start := time.Now().Unix() cnt, _ := syncNdConfig() end := time.Now().Unix() if g.Config().Debug { log.Printf("config cron, cnt %d, time %ds, start %s\n", cnt, end-start, ttime.FormatTs(start)) } // statistics g.ConfigCronCnt.Incr() g.ConfigLastTs.SetCnt(end - start) g.ConfigLastCnt.SetCnt(int64(cnt)) }, 1) ndconfigCron.Start() }
func StartCollectorCron() { collectorCron.AddFuncCC("*/20 * * * * ?", func() { start := time.Now().Unix() cnt := collectDataOnce() end := time.Now().Unix() if g.Config().Debug { log.Printf("collect cron, cnt %d, time %ds, start %s\n", cnt, end-start, ttime.FormatTs(start)) } // statistics g.CollectorCronCnt.Incr() g.CollectorLastTs.SetCnt(end - start) g.CollectorLastCnt.SetCnt(int64(cnt)) g.CollectorCnt.IncrBy(int64(cnt)) }, 1) collectorCron.Start() }
func StartJudgeCron() { judgeCron.AddFuncCC(judgeCronSpec, func() { start := time.Now().Unix() judge() end := time.Now().Unix() if g.Config().Debug { log.Printf("judge cron, time %ds, start %s\n", end-start, ttime.FormatTs(start)) } // statistics g.JudgeCronCnt.Incr() g.JudgeLastTs.SetCnt(end - start) // trigger sender sender.SendMockOnceAsync() }, 1) judgeCron.Start() }
func startGaussCron() { if !g.Config().Sender.Block.EnableGauss { log.Println("sender.StartGaussCron warning, not enabled") return } // start gauss cron gaussCron.AddFuncCC("40 */20 * * * ?", func() { start := time.Now().Unix() cnt := calcGaussOnce() end := time.Now().Unix() if g.Config().Debug { log.Printf("gause cron, cnt %d, time %ds, start %s\n", cnt, end-start, ttime.FormatTs(start)) } }, 1) gaussCron.Start() log.Println("sender.StartGaussCron ok") }
func (this *NodataStatus) String() string { return fmt.Sprintf("NodataStatus key=%s status=%s cnt=%d ts=%d date=%s", this.Key, this.Status, this.Cnt, this.Ts, ttime.FormatTs(this.Ts)) }
func (a *Alarm) String() string { return fmt.Sprintf("[%s][%s][%d][%s]", ntime.FormatTs(a.Ts), a.AlarmType, a.AlarmCnt, a.ObjName) }
func NewSCounterQps(name string) *SCounterQps { uts := time.Now().Unix() return &SCounterQps{Name: name, Cnt: 0, Time: ntime.FormatTs(uts), ts: uts, Qps: 0, lastCnt: 0, lastTs: uts, Other: make(map[string]interface{})} }
func (this *DataItem) String() string { return fmt.Sprintf("ts:%s, value:%f, fts:%s, fstatus:%s", ttime.FormatTs(this.Ts), this.Value, ttime.FormatTs(this.FTs), this.FStatus) }
func (this *NodataItem) String() string { return fmt.Sprintf("{NodataItem counter:%s ts:%s fecthStatus:%s fetchTs:%s}", this.Counter, ttime.FormatTs(this.Ts), this.FStatus, ttime.FormatTs(this.FTs)) }