• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang engine.PluginHelper类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/funkygao/dpipe/engine.PluginHelper的典型用法代码示例。如果您正苦于以下问题:Golang PluginHelper类的具体用法?Golang PluginHelper怎么用?Golang PluginHelper使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了PluginHelper类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: handlePack

func (this *AlarmOutput) handlePack(pack *engine.PipelinePack,
	h engine.PluginHelper) {
	if worker, present := this.projects[pack.Project].
		workers[pack.Logfile.CamelCaseName()]; present {
		worker.inject(pack.Message, h.Project(pack.Project))
	}
}
开发者ID:jlyt898,项目名称:dpipe,代码行数:7,代码来源:alarm_output.go


示例2: Run

func (this *SkyOutput) Run(r engine.OutputRunner, h engine.PluginHelper) error {
	var (
		ok      = true
		pack    *engine.PipelinePack
		inChan  = r.InChan()
		globals = engine.Globals()
		project = h.Project(this.project)
	)

LOOP:
	for ok {
		select {
		case pack, ok = <-inChan:
			if !ok {
				break LOOP
			}

			if globals.Debug {
				globals.Println(*pack)
			}

			this.feedSky(project, pack)
			pack.Recycle()
		}
	}

	return nil
}
开发者ID:jlyt898,项目名称:dpipe,代码行数:28,代码来源:sky_output.go


示例3: Run

func (this *EsFilter) Run(r engine.FilterRunner, h engine.PluginHelper) error {
	var (
		globals = engine.Globals()
		pack    *engine.PipelinePack
		ok      = true
		count   = 0
		inChan  = r.InChan()
	)

LOOP:
	for ok {
		select {
		case pack, ok = <-inChan:
			if !ok {
				break LOOP
			}

			if globals.Debug {
				globals.Println(*pack)
			}

			if this.handlePack(pack, h.Project(pack.Project)) {
				count += 1
				r.Inject(pack)
			} else {
				pack.Recycle()
			}
		}
	}

	globals.Printf("[%s]Total filtered: %d", r.Name(), count)

	return nil
}
开发者ID:jlyt898,项目名称:dpipe,代码行数:34,代码来源:es_filter.go


示例4: Run

func (this *CardinalityOutput) Run(r engine.OutputRunner, h engine.PluginHelper) error {
	var (
		pack   *engine.PipelinePack
		ok     = true
		inChan = r.InChan()
	)

	h.RegisterHttpApi("/card/{key}", func(w http.ResponseWriter,
		req *http.Request, params map[string]interface{}) (interface{}, error) {
		return this.handleHttpRequest(w, req, params)
	}).Methods("GET", "PUT")

LOOP:
	for ok {
		select {
		case pack, ok = <-inChan:
			if !ok {
				break LOOP
			}

			if pack.CardinalityKey != "" && pack.CardinalityData != nil {
				this.counters.Add(pack.CardinalityKey, pack.CardinalityData)
			}

			pack.Recycle()
		}
	}

	// before we quit, dump counters
	if this.checkpoint != "" {
		this.counters.Dump(this.checkpoint)
	}

	return nil
}
开发者ID:jlyt898,项目名称:dpipe,代码行数:35,代码来源:cardinality_output.go


示例5: Run

func (this *AlarmOutput) Run(r engine.OutputRunner, h engine.PluginHelper) error {
	var (
		pack       *engine.PipelinePack
		reloadChan = make(chan interface{})
		ok         = true
		inChan     = r.InChan()
	)

	for name, project := range this.projects {
		go this.runSendAlarmsWatchdog(h.Project(name), project)
	}

	// start all the workers
	goAhead := make(chan bool)
	for _, project := range this.projects {
		for _, worker := range project.workers {
			go worker.run(h, goAhead)
			<-goAhead // in case of race condition with worker.inject
		}
	}

	observer.Subscribe(engine.RELOAD, reloadChan)

LOOP:
	for ok {
		select {
		case <-reloadChan:
			// TODO

		case pack, ok = <-inChan:
			if !ok {
				break LOOP
			}

			this.handlePack(pack, h)
			pack.Recycle()
		}
	}

	close(this.stopChan)

	// all the workers cleanup
	for _, project := range this.projects {
		for _, worker := range project.workers {
			worker.cleanup()
		}
	}

	for _, project := range this.projects {
		close(project.emailChan)
	}

	return nil
}
开发者ID:jlyt898,项目名称:dpipe,代码行数:54,代码来源:alarm_output.go


示例6: flush

func (this *esBufferWorker) flush(r engine.FilterRunner, h engine.PluginHelper) {
	if this.summary.N == 0 {
		return
	}

	// generate new pack
	pack := h.PipelinePack(0)

	switch this.expression {
	case "count":
		pack.Message.SetField(this.esField, this.summary.N)
	case "mean":
		pack.Message.SetField(this.esField, this.summary.Mean)
	case "max":
		pack.Message.SetField(this.esField, this.summary.Max)
	case "min":
		pack.Message.SetField(this.esField, this.summary.Min)
	case "sd":
		pack.Message.SetField(this.esField, this.summary.Sd())
	case "sum":
		pack.Message.SetField(this.esField, this.summary.Sum)
	default:
		panic("invalid expression: " + this.expression)
	}

	pack.Message.Timestamp = this.timestamp
	pack.Ident = this.ident
	pack.EsIndex = indexName(h.Project(this.projectName),
		this.indexPattern, time.Unix(int64(this.timestamp), 0))
	pack.EsType = this.esType
	pack.Project = this.projectName
	globals := engine.Globals()
	if globals.Debug {
		globals.Println(*pack)
	}
	r.Inject(pack)

	this.summary.Reset()
}
开发者ID:jlyt898,项目名称:dpipe,代码行数:39,代码来源:es_buffer_worker.go


示例7: handlePack

// for each inbound pack, this filter will generate several new pack
// the original pack will be recycled immediately
func (this *CardinalityFilter) handlePack(r engine.FilterRunner,
	h engine.PluginHelper, pack *engine.PipelinePack) {
	globals := engine.Globals()
	for _, c := range this.converters {
		if !pack.Logfile.MatchPrefix(c.logPrefix) || pack.Project != c.project {
			continue
		}

		for _, f := range c.fields {
			val, err := pack.Message.FieldValue(f.key, f.typ)
			if err != nil {
				if globals.Verbose {
					h.Project(c.project).Println(err)
				}

				return
			}

			for _, interval := range f.intervals {
				// generate new pack
				p := h.PipelinePack(pack.MsgLoopCount)
				if p == nil {
					globals.Println("can't get pack in filter")
					continue
				}

				p.Ident = this.ident
				p.Project = c.project
				p.CardinalityKey = fmt.Sprintf("%s.%s.%s", pack.Project, f.key, interval)
				p.CardinalityData = val
				p.CardinalityInterval = interval

				r.Inject(p)
			}
		}
	}
}
开发者ID:jlyt898,项目名称:dpipe,代码行数:39,代码来源:cardinality_filter.go


示例8: run

func (this *alarmWorker) run(h engine.PluginHelper, goAhead chan bool) {
	var (
		globals = engine.Globals()
		summary = stats.Summary{}
		beep    bool
		ever    = true
	)

	// lazy assignment
	this.project = h.Project(this.projName)

	if globals.DryRun || this._instantAlarmOnly {
		goAhead <- true
		return
	}

	this.createDB()
	this.prepareInsertStmt()
	this.prepareStatsStmt()
	goAhead <- true

	for ever {
		select {
		case <-time.After(this.conf.windowSize):
			this.Lock()
			windowHead, windowTail, err := this.getWindowBorder()
			if err != nil {
				this.Unlock()
				continue
			}

			if this.conf.showSummary {
				summary.Reset()
			}

			rows, _ := this.statsStmt.Query(windowTail)
			cols, _ := rows.Columns()
			colsN := len(cols)
			values := make([]interface{}, colsN)
			valuePtrs := make([]interface{}, colsN)
			rowSeverity := 0
			abnormal := false
			this.workersMutex.Lock()
			this.printWindowTitle(windowHead, windowTail, this.conf.title)
			for rows.Next() {
				beep = false
				for i, _ := range cols {
					valuePtrs[i] = &values[i]
				}

				rows.Scan(valuePtrs...)

				// 1st column always being aggregated quantile
				var amount = values[0].(int64)
				if amount == 0 {
					break
				}

				if this.conf.showSummary {
					summary.Add(float64(amount))
				}

				// beep and feed alarmMail
				if this.conf.beepThreshold > 0 && int(amount) >= this.conf.beepThreshold {
					beep = true
				}

				rowSeverity = this.conf.severity * int(amount)

				// abnormal change? blink
				if this.isAbnormalChange(amount,
					this.historyKey(this.conf.printFormat, values)) {
					this.blinkColorPrintfLn(this.conf.printFormat, values...)

					abnormal = true
					// multiply factor
					rowSeverity *= this.conf.abnormalSeverityFactor
				}

				this.colorPrintfLn(beep, this.conf.printFormat, values...)

				this.feedAlarmMail(abnormal, rowSeverity, this.conf.printFormat, values...)
			}

			// show summary
			if this.conf.showSummary && summary.N > 0 {
				this.colorPrintfLn(false, "Total: %.1f, Mean: %.1f", summary.Sum,
					summary.Mean)
			}

			this.workersMutex.Unlock()
			rows.Close()

			this.moveWindowForward(windowTail)
			this.Unlock()

		case <-this.stopChan:
			ever = false
		}
	}
//.........这里部分代码省略.........
开发者ID:jlyt898,项目名称:dpipe,代码行数:101,代码来源:alarm_worker.go


示例9: Run

func (this *EsOutput) Run(r engine.OutputRunner, h engine.PluginHelper) error {
	var (
		pack         *engine.PipelinePack
		reloadChan   = make(chan interface{})
		ok           = true
		globals      = engine.Globals()
		inChan       = r.InChan()
		reportTicker = time.NewTicker(this.reportInterval)
	)

	this.indexer = core.NewBulkIndexer(this.bulkMaxConn)
	this.indexer.BulkMaxDocs = this.bulkMaxDocs
	this.indexer.BulkMaxBuffer = this.bulkMaxBuffer

	// start the bulk indexer
	this.indexer.Run(this.stopChan)

	defer reportTicker.Stop()

	observer.Subscribe(engine.RELOAD, reloadChan)

LOOP:
	for ok {
		select {
		case <-this.stopChan:
			ok = false

		case <-reportTicker.C:
			this.showPeriodicalStats()

		case <-reloadChan:
			// TODO

		case <-time.After(this.flushInterval):
			this.indexer.Flush()

		case pack, ok = <-inChan:
			if !ok {
				break LOOP
			}

			if globals.Debug {
				globals.Println(*pack)
			}

			this.feedEs(h.Project(pack.Project), pack)
			pack.Recycle()
		}
	}

	engine.Globals().Printf("[%s]Total output to ES: %d", r.Name(), this.totalN)

	// before shutdown, flush again
	if globals.Verbose {
		engine.Globals().Println("Waiting for ES flush...")
	}
	this.indexer.Flush()
	if globals.Verbose {
		engine.Globals().Println("ES flushed")
	}

	// let indexer stop
	this.stopChan <- true

	return nil
}
开发者ID:jlyt898,项目名称:dpipe,代码行数:66,代码来源:es_output.go



注:本文中的github.com/funkygao/dpipe/engine.PluginHelper类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang rpc.Context类代码示例发布时间:2022-05-23
下一篇:
Golang engine.PipelinePack类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap