Hi!
i try to create an Alert for detection if WebUIs is ok (no http_response code) but it doesen’t work like it supposed to, it just ignores everything. I have created one rule based on WebUI rule for dead host detection and it’s working just fine.
My telegraf config:
[[inputs.http_response]]
address = "http://seafile"
response_timeout = "10s"
method = "GET"
follow_redirects = true
taginclude = ["server"]
[[inputs.http_response]]
address = "http://192.168.199.101"
response_timeout = "10s"
method = "GET"
follow_redirects = true
taginclude = ["server"]
[[inputs.http_response]]
address = "http://10.199.199.10:8112"
response_timeout = "10s"
method = "GET"
follow_redirects = true
taginclude = ["server"]
My kapacitor alert (for webui which doesen’t work):
var db = 'telegraf'
var rp = 'autogen'
var measurement = 'http_response'
var groupBy = ['server']
var whereFilter = lambda: TRUE
var period = 5m
0s
var name = 'deadWebUI'
var idVar = name + ':{{.Group}}'
var message = 'task name: {{.ID}}
group: {{.Group}}
tags: {{.Tags}}
status: {{.Level}}
time: {{.Time}}'
var idTag = 'alertID'
var levelTag = 'level'
var messageField = 'message'
var durationField = 'duration'
var outputDB = 'chronograf'
var outputRP = 'autogen'
var outputMeasurement = 'alerts'
var triggerType = 'deadman'
var threshold = 0.0
var data = stream
|from()
.database(db)
.retentionPolicy(rp)
.measurement(measurement)
.groupBy(groupBy)
.where(whereFilter)
var trigger = data
|deadman(threshold, period)
.stateChangesOnly()
.message(message)
.id(idVar)
.idTag(idTag)
.levelTag(levelTag)
.messageField(messageField)
.durationField(durationField)
.stateChangesOnly()
.telegram()
.chatId('<telegramChatid>')
.parseMode('Markdown')
trigger
|eval(lambda: "emitted")
.as('value')
.keep('value', messageField, durationField)
|eval(lambda: float("value"))
.as('value')
.keep()
|influxDBOut()
.create()
.database(outputDB)
.retentionPolicy(outputRP)
.measurement(outputMeasurement)
.tag('alertName', name)
.tag('triggerType', triggerType)
trigger
|httpOut('output')
and my dead host alert (works just fine):
var db = 'telegraf'
var rp = 'autogen'
var measurement = 'http_response'
var groupBy = ['server']
var whereFilter = lambda: TRUE
var period = 5m
0s
var name = 'deadWebUI'
var idVar = name + ':{{.Group}}'
var message = 'task name: {{.ID}}
group: {{.Group}}
tags: {{.Tags}}
status: {{.Level}}
time: {{.Time}}'
var idTag = 'alertID'
var levelTag = 'level'
var messageField = 'message'
var durationField = 'duration'
var outputDB = 'chronograf'
var outputRP = 'autogen'
var outputMeasurement = 'alerts'
var triggerType = 'deadman'
var threshold = 0.0
var data = stream
|from()
.database(db)
.retentionPolicy(rp)
.measurement(measurement)
.groupBy(groupBy)
.where(whereFilter)
var trigger = data
|deadman(threshold, period)
.stateChangesOnly()
.message(message)
.id(idVar)
.idTag(idTag)
.levelTag(levelTag)
.messageField(messageField)
.durationField(durationField)
.stateChangesOnly()
.telegram()
.chatId('<telegramChatid>')
.parseMode('Markdown')
trigger
|eval(lambda: "emitted")
.as('value')
.keep('value', messageField, durationField)
|eval(lambda: float("value"))
.as('value')
.keep()
|influxDBOut()
.create()
.database(outputDB)
.retentionPolicy(outputRP)
.measurement(outputMeasurement)
.tag('alertName', name)
.tag('triggerType', triggerType)
trigger
|httpOut('output')
and my database:
With Regards