I adjust tickscript(kapacitor) for my calculation. However, no alerts work after few changes. Before adjustment, it worked without problem. I wonder why it does not work after adjustment. To be more specific, I need to get "MACD" of my stock price. Measurements contain the price of each items. Anyone knows why?
before it was:
var db = 'telegraf'
var rp = 'autogen'
var measurement = 'exec'
var groupBy = ['symbol']
var whereFilter = lambda: TRUE
var name = 'coin'
var idVar = name + '-{{.Group}}'
var message = ' {{.ID}} {{.Level}} {{.Time}}'
var idTag = 'alertID'
var levelTag = 'level'
var messageField = 'message'
var durationField = 'duration'
var outputDB = 'chronograf'
var outputRP = 'autogen'
var outputMeasurement = 'alerts'
var triggerType = 'threshold'
var crit = 50000000000
var data = stream
|from()
.database(db)
.retentionPolicy(rp)
.measurement(measurement)
.groupBy(groupBy)
.where(whereFilter)
|eval(lambda: "lastPrice")
.as('value')
var trigger = data
|alert()
.crit(lambda: "value" > crit)
.message(message)
.id(idVar)
.idTag(idTag)
.levelTag(levelTag)
.messageField(messageField)
.durationField(durationField)
.stateChangesOnly()
.telegram()
.chatId('####')
.parseMode('Markdown')
trigger
|eval(lambda: float("value"))
.as('value')
.keep()
|influxDBOut()
.create()
.database(outputDB)
.retentionPolicy(outputRP)
.measurement(outputMeasurement)
.tag('alertName', name)
.tag('triggerType', triggerType)
trigger
|httpOut('output')
Now it became:
var db = 'telegraf'
var rp = 'autogen'
var measurement = 'exec'
var groupBy = ['symbol']
var whereFilter = lambda: TRUE
var name = 'coin'
var idVar = name + '-{{.Group}}'
var message = ' {{.ID}} {{.Level}} {{.Time}}'
var idTag = 'alertID'
var levelTag = 'level'
var messageField = 'message'
var durationField = 'duration'
var outputDB = 'chronograf'
var outputRP = 'autogen'
var outputMeasurement = 'alerts'
var triggerType = 'threshold'
var crit = 0
var data = stream
|from()
.database(db)
.retentionPolicy(rp)
.measurement(measurement)
.groupBy(groupBy)
.where(whereFilter)
|eval(lambda: "lastPrice")
.as('v')
var avg12 = data
|window()
.period(3m)
.every(1m)
|mean('x1')
.as('x1a')
var avg26 = data
|window()
.period(5m)
.every(1m)
|mean('x2')
.as('x2a')
var macd = avg12
|join(avg26)
.as('x1a', 'x2a')
|eval(lambda: float('x1a.value' - 'x2a.value'))
.keep()
.as('value')
var trigger = macd
|alert()
.crit(lambda: "value" > crit)
.message(message)
.id(idVar)
.idTag(idTag)
.levelTag(levelTag)
.messageField(messageField)
.durationField(durationField)
.stateChangesOnly()
.telegram()
.chatId('###')
.parseMode('Markdown')
trigger
|eval(lambda: float("value"))
.as('value')
.keep()
|influxDBOut()
.create()
.database(outputDB)
.retentionPolicy(outputRP)
.measurement(outputMeasurement)
.tag('alertName', name)
.tag('triggerType', triggerType)
trigger
|httpOut('output')