āϏāĻŽā§āĻāĻŦāϤ, āĻāĻ āĻā§āĻ āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰ⧠āύāĻž āĻā§āύ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻŽā§āĻā§āϰāĻŋāĻā§āϏ āϏāĻāĻā§āϰāĻš āĻāϰāĻž āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ āĻĒāϰāĻŦāϰā§āϤ⧠āϝā§āĻā§āϤāĻŋāĻ āĻĒāĻĻāĻā§āώā§āĻĒ āĻšāϞ āϏāĻāĻā§āĻšā§āϤ āĻŽā§āĻā§āϰāĻŋāĻā§āϏā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āϏā§āĻ āĻāĻĒ āĻāϰāĻž, āϝāĻž āĻāĻĒāύāĻžāϰ āĻāύā§āϝ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āĻā§āϝāĻžāύā§āϞ⧠(āĻŽā§āϞ, āϏā§āϞā§āϝāĻžāĻ, āĻā§āϞāĻŋāĻā§āϰāĻžāĻŽ) āĻĄā§āĻāĻžāϤ⧠āĻā§āύ⧠āĻŦāĻŋāĻā§āϝā§āϤāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻ āĻŦāĻšāĻŋāϤ āĻāϰāĻŦā§āĨ¤ āĻ āύāϞāĻžāĻāύ āĻšā§āĻā§āϞ āĻŦā§āĻāĻŋāĻ āϏā§āĻŦāĻž āĻāĻŽāĻžāĻĻā§āϰ āĻĒāϰāĻŋāώā§āĻŦāĻžāϰ āϏāĻŽāϏā§āϤ āĻŽā§āĻā§āϰāĻŋāĻā§āϏ InfluxDB-āϤ⧠āĻĸā§āϞ⧠āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧ āĻāĻŦāĻ Grafana-āĻ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϝāĻŧ āĻāĻŦāĻ āϏā§āĻāĻžāύ⧠āĻŽā§āϞāĻŋāĻ āϏāϤāϰā§āĻāϤāĻžāĻ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ "āĻāĻĒāύāĻžāĻā§ āĻāĻŋāĻā§ āĻāĻŖāύāĻž āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻāĻŋāϰ āϏāĻžāĻĨā§ āϤā§āϞāύāĻž āĻāϰāϤ⧠āĻšāĻŦā§" āĻāϰ āĻŽāϤ⧠āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻāĻŽāϰāĻž āĻā§āϝāĻžāĻĒāĻžāϏāĻŋāĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋāĨ¤

Kapacitor āĻšāϞ TICK āϏā§āĻā§āϝāĻžāĻā§āϰ āĻ
āĻāĻļ āϝāĻž InfluxDB āĻĨā§āĻā§ āĻŽā§āĻā§āϰāĻŋāĻā§āϏ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻžāϧāĻŋāĻ āĻĒāϰāĻŋāĻŽāĻžāĻĒ āĻāĻāϏāĻžāĻĨā§ āϏāĻāϝā§āĻā§āϤ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠(āϝā§āĻāĻĻāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§), āĻĒā§āϰāĻžāĻĒā§āϤ āĻĄā§āĻāĻž āĻĨā§āĻā§ āĻĻāϰāĻāĻžāϰ⧠āĻāĻŋāĻā§ āĻāĻŖāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻĢāϞāĻžāĻĢāϞāĻāĻŋ InfluxDB-āϤ⧠āϞāĻŋāĻāϤ⧠āĻĒāĻžāϰā§, Slack/Telegram/mail āĻ āĻāĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āĻĒāĻžāĻ āĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϏāĻŽā§āĻĒā§āϰā§āĻŖ āϏā§āĻā§āϝāĻžāĻ āĻļāĻžāύā§āϤ āĻāĻŦāĻ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ , āĻāĻŋāύā§āϤ⧠āϏāĻŦāϏāĻŽāϝāĻŧ āĻĻāϰāĻāĻžāϰ⧠āĻāĻŋāύāĻŋāϏ āĻĨāĻžāĻāĻŦā§ āϝāĻž āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻā§āϞāĻŋāϤ⧠āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāϤ āύāϝāĻŧāĨ¤ āĻāĻ āύāĻŋāĻŦāύā§āϧā§, āĻāĻŽāĻŋ āĻāĻ āϧāϰāύā§āϰ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻĻāϰāĻāĻžāϰā§, āĻ -āϏā§āĻĒāώā§āĻ āĻāĻŋāĻĒāϏ āϏāĻāĻā§āϰāĻš āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋ (TICKscipt-āĻāϰ āĻŽā§āϞāĻŋāĻ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻŦāϰā§āĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ ) āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āϰ āϏāĻŽāϏā§āϝāĻžāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āĻāĻžāĻŦā§ āϏā§āĻā§āϞāĻŋ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āĻĻā§āĻāĻžāύāĨ¤
āĻāϞ āϝāĻžāĻ!
float & int, āĻāĻŖāύāĻžāϰ āϤā§āϰā§āĻāĻŋ
āĻāĻāĻāĻŋ āĻāĻā§āĻŦāĻžāϰ⧠āĻŽāĻžāύāĻ āϏāĻŽāϏā§āϝāĻž, āĻŦāϰā§āĻŖā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§:
var alert_float = 5.0
var alert_int = 10
data|eval(lambda: float("value") > alert_float OR float("value") < float("alert_int"))
āĻĄāĻŋāĻĢāϞā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§()
āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻ/āĻā§āώā§āϤā§āϰ āĻĒā§āϰāĻŖ āύāĻž āĻāϰāĻž āĻšāϝāĻŧ, āĻāĻŖāύāĻžāϰ āϤā§āϰā§āĻāĻŋ āĻāĻāĻŦā§:
|default()
.tag('status', 'empty')
.field('value', 0)
āϝā§āĻāĻĻāĻžāύ āĻĒā§āϰāĻŖ āĻāϰā§āύ (āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻŦāύāĻžāĻŽ āĻŦāĻžāĻāϰā§āϰ)
āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§, āϝā§āĻāĻĻāĻžāύ āĻāĻŽāύ āĻĒāϝāĻŧā§āύā§āĻāĻā§āϞāĻŋ āĻŦāĻžāϤāĻŋāϞ āĻāϰāĻŦā§ āϝā§āĻāĻžāύ⧠āĻā§āύāĻ āĻĄā§āĻāĻž āύā§āĻ (āĻ
āĻā§āϝāύā§āϤāϰā§āĻŖ)āĨ¤
fill('null') āĻĻāĻŋāϝāĻŧā§, āĻāĻāĻāĻŋ āĻŦāĻžāĻāϰā§āϰ āϝā§āĻāĻĻāĻžāύ āĻāϰāĻž āĻšāĻŦā§, āϤāĻžāϰāĻĒāϰ⧠āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āĻĄāĻŋāĻĢāϞā§āĻ() āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻžāϞāĻŋ āĻŽāĻžāύāĻā§āϞāĻŋ āĻĒā§āϰāĻŖ āĻāϰāϤ⧠āĻšāĻŦā§:
var data = res1
|join(res2)
.as('res1', 'res2)
.fill('null')
|default()
.field('res1.value', 0.0)
.field('res2.value', 100.0)
āĻāĻāĻžāύ⧠āĻāĻāύāĻ āĻāĻāĻāĻŋ nuance āĻāĻā§. āĻāĻĒāϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖā§, āϝāĻĻāĻŋ āϏāĻŋāϰāĻŋāĻā§āϰ āĻāĻāĻāĻŋ (res1 āĻŦāĻž res2) āĻāĻžāϞāĻŋ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻĢāϞāϏā§āĻŦāϰā§āĻĒ āϏāĻŋāϰāĻŋāĻ (āĻĄā§āĻāĻž)āĻ āĻāĻžāϞāĻŋ āĻĨāĻžāĻāĻŦā§āĨ¤ āĻāĻŋāĻĨā§āĻŦā§ āĻāĻ āĻŦāĻŋāώāϝāĻŧā§ āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻāĻŋāĻāĻŋāĻ āϰāϝāĻŧā§āĻā§ (, , ) â āĻāĻŽāϰāĻž āϏāĻāĻļā§āϧāύā§āϰ āĻāύā§āϝ āĻ āĻĒā§āĻā§āώāĻž āĻāϰāĻāĻŋ āĻāĻŦāĻ āĻāĻāĻā§ āĻāώā§āĻ āĻāϰāĻāĻŋāĨ¤
āĻāĻŖāύāĻžāϝāĻŧ āĻļāϰā§āϤ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž (āϝāĻĻāĻŋ āϞā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāϝāĻŧ āĻĨāĻžāĻā§)
|eval(lambda: if("value" > 0, true, false)
āĻĒāĻŋāϰāĻŋāϝāĻŧāĻĄā§āϰ āĻāύā§āϝ āĻĒāĻžāĻāĻĒāϞāĻžāĻāύ āĻĨā§āĻā§ āĻļā§āώ āĻĒāĻžāĻāĻ āĻŽāĻŋāύāĻŋāĻ
āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻāĻĒāύāĻžāĻā§ āĻāĻā§āϰ āϏāĻĒā§āϤāĻžāĻšā§āϰ āϏāĻžāĻĨā§ āĻļā§āώ āĻĒāĻžāĻāĻ āĻŽāĻŋāύāĻŋāĻā§āϰ āĻŽāĻžāύ āϤā§āϞāύāĻž āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻĒāύāĻŋ āĻĻā§āĻāĻŋ āĻĒā§āĻĨāĻ āĻŦā§āϝāĻžāĻā§ āĻĄā§āĻāĻžāϰ āĻĻā§āĻāĻŋ āĻŦā§āϝāĻžāĻ āύāĻŋāϤ⧠āĻĒāĻžāϰā§āύ āĻŦāĻž āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āϏāĻŽāϝāĻŧ āĻĨā§āĻā§ āĻĄā§āĻāĻžāϰ āĻ āĻāĻļ āĻŦā§āϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
|where(lambda: duration((unixNano(now()) - unixNano("time"))/1000, 1u) < 5m)
āĻļā§āώ āĻĒāĻžāĻāĻ āĻŽāĻŋāύāĻŋāĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻŦā§āϝāĻžāϰāĻŋāϝāĻŧāĻžāϰāύā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāĻŦā§, āϝāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻŽāϝāĻŧā§āϰ āĻāĻā§ āĻĄā§āĻāĻž āĻā§āĻā§ āĻĻā§āϝāĻŧ:
|barrier()
.period(5m)
āĻŦāĻžāϰā§āϤāĻžāϝāĻŧ Go āĻā§āĻŽāĻĒā§āϞā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ
āĻā§āĻŽāĻĒā§āϞā§āĻāĻā§āϞāĻŋ āĻĒā§āϝāĻžāĻā§āĻ āĻĨā§āĻā§ āĻŦāĻŋāύā§āϝāĻžāϏā§āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞ⧠āϝāĻžāϝāĻŧ āύā§āĻā§ āĻāĻŋāĻā§ āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āϏāĻŽā§āĻŽā§āĻā§āύ āϧāĻžāĻāϧāĻž āĻāĻā§.
āĻ āύā§āϝāĻĨāĻžāϝāĻŧ āϝāĻĻāĻŋ
āĻāĻŽāϰāĻž āĻāĻŋāύāĻŋāϏāĻā§āϞāĻŋāĻā§ āϏāĻžāĻāĻŋāϝāĻŧā§ āϰāĻžāĻāĻŋ āĻāĻŦāĻ āĻā§āĻā§āϏāĻ āĻĻāĻŋāϝāĻŧā§ āϞā§āĻā§āĻĻā§āϰ āĻāĻŦāĻžāϰ āĻā§āϰāĻŋāĻāĻžāϰ āĻāϰāĻŋ āύāĻž:
|alert()
...
.message(
'{{ if eq .Level "OK" }}It is ok now{{ else }}Chief, everything is broken{{end}}'
)
āĻŦāĻžāϰā§āϤāĻžāϝāĻŧ āĻĻāĻļāĻŽāĻŋāĻ āĻŦāĻŋāύā§āĻĻā§āϰ āĻĒāϰ āĻĻā§āĻāĻŋ āϏāĻāĻā§āϝāĻž
āĻŦāĻžāϰā§āϤāĻžāϰ āĻĒāĻ āύāϝā§āĻā§āϝāϤāĻž āĻāύā§āύāϤ āĻāϰāĻž:
|alert()
...
.message(
'now value is {{ index .Fields "value" | printf "%0.2f" }}'
)
āĻŦāĻžāϰā§āϤāĻžāϝāĻŧ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻāϰāĻž
"āĻā§āύ āĻāĻŋā§āĻāĻžāϰ āĻāϰāĻā§" āĻĒā§āϰāĻļā§āύā§āϰ āĻāϤā§āϤāϰ āĻĻāĻŋāϤ⧠āĻāĻŽāϰāĻž āĻŦāĻžāϰā§āϤāĻžāϝāĻŧ āĻāϰāĻ āϤāĻĨā§āϝ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻŋ?
var warnAlert = 10
|alert()
...
.message(
'Today value less then '+string(warnAlert)+'%'
)
āĻ āύāύā§āϝ āϏāϤāϰā§āĻāϤāĻž āĻļāύāĻžāĻā§āϤāĻāĻžāϰā§
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻāĻŋāύāĻŋāϏ āϝāĻāύ āĻĄā§āĻāĻžāϤ⧠āĻāĻāĻžāϧāĻŋāĻ āĻā§āϰā§āĻĒ āĻĨāĻžāĻā§, āĻ āύā§āϝāĻĨāĻžāϝāĻŧ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āϤā§āϰāĻŋ āĻāϰāĻž āĻšāĻŦā§:
|alert()
...
.id('{{ index .Tags "myname" }}/{{ index .Tags "myfield" }}')
āĻāĻžāϏā§āĻāĻŽ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻāϰ
āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰā§āϰ āĻŦā§āĻšā§ āϤāĻžāϞāĻŋāĻāĻžāϝāĻŧ āϰāϝāĻŧā§āĻā§ exec, āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻĒāĻžāϏ āĻāϰāĻž āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ (stdin) āĻĻāĻŋāϝāĻŧā§ āĻāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻžāύā§āϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧ - āϏā§āĻāύāĻļā§āϞāϤāĻž āĻāĻŦāĻ āĻāϰ āĻŦā§āĻļāĻŋ āĻāĻŋāĻā§ āύāϝāĻŧ!
āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāϏā§āĻāĻŽāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻšāϞ āϏā§āϞā§āϝāĻžāĻā§ āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋ āĻĒāĻžāĻ āĻžāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻā§āĻ āĻĒāĻžāĻāĻĨāύ āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĨ¤
āĻĒā§āϰāĻĨāĻŽā§, āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻŦāĻžāϰā§āϤāĻžāϝāĻŧ āĻāĻāĻāĻŋ āĻ
āύā§āĻŽā§āĻĻāύ-āϏā§āϰāĻā§āώāĻŋāϤ āĻā§āϰāĻžāĻĢāύāĻž āĻāĻŦāĻŋ āĻĒāĻžāĻ āĻžāϤ⧠āĻā§āϝāĻŧā§āĻāĻŋāϞāĻžāĻŽāĨ¤ āϤāĻžāϰāĻĒāϰā§, āĻāĻāĻ āĻā§āϰā§āĻĒā§āϰ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āϏāϤāϰā§āĻāϤāĻžāϝāĻŧ āĻĨā§āϰā§āĻĄā§ āĻ āĻŋāĻ āĻāĻā§ āϞāĻŋāĻā§āύ, āĻāϞāĻžāĻĻāĻž āĻŦāĻžāϰā§āϤāĻž āĻšāĻŋāϏāĻžāĻŦā§ āύāϝāĻŧāĨ¤ āĻāĻāĻā§ āĻĒāϰ⧠- āĻļā§āώ X āĻŽāĻŋāύāĻŋāĻā§āϰ āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϞ āĻŦāĻžāϰā§āϤāĻžāĻāĻŋāϤ⧠āϝā§āĻ āĻāϰā§āύāĨ¤
āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻŦāĻŋāώāϝāĻŧ āĻšāϞ āĻ
āύā§āϝāĻžāύā§āϝ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϝā§āĻāĻžāϝā§āĻ āĻāĻŦāĻ āĻāĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āĻĻā§āĻŦāĻžāϰāĻž āϏā§āĻāĻŋāϤ āϝ⧠āĻā§āύāĻ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒ (āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻŖ āϝāĻĨā§āώā§āĻ āĻāĻžāϞ āĻāĻžāĻ āĻāϰā§)āĨ¤
āĻāĻāĻāĻŋ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻŦāĻŋāĻŦāϰāĻŖā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ, āϝā§āĻāĻžāύ⧠slack_handler.py āĻšāϞ āĻāĻŽāĻžāĻĻā§āϰ āϏā§āĻŦ-āϞāĻŋāĻāĻŋāϤ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ:
topic: slack_graph
id: slack_graph.alert
match: level() != INFO AND changed() == TRUE
kind: exec
options:
prog: /sbin/slack_handler.py
args: ["-c", "CHANNELID", "--graph", "--search"]
āĻāĻŋāĻāĻžāĻŦā§ āĻĄāĻŋāĻŦāĻžāĻ āĻāϰāĻŦā§āύ?
āϞāĻ āĻāĻāĻāĻĒā§āĻ āϏāĻš āĻŦāĻŋāĻāϞā§āĻĒ
|log()
.level("error")
.prefix("something")
āĻāĻĄāĻŧāĻŋ (cli): kapacitor -url :9092 āϞāĻ lvl=āϤā§āϰā§āĻāĻŋ
httpOut āϏāĻš āĻŦāĻŋāĻāϞā§āĻĒ
āĻŦāϰā§āϤāĻŽāĻžāύ āĻĒāĻžāĻāĻĒāϞāĻžāĻāύ⧠āĻĄā§āĻāĻž āĻĻā§āĻāĻžāϝāĻŧ:
|httpOut('something')
āĻĻā§āĻā§āύ (āĻĒāĻžāύ): :9092/kapacitor/v1/tasks/task_name/something
āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āϏā§āĻāĻŋāĻŽ
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻžāϏā§āĻ āĻĢāϰāĻŽā§āϝāĻžāĻā§ āĻĻāϰāĻāĻžāϰ⧠āϏāĻāĻā§āϝāĻž āϏāĻš āĻāĻāĻāĻŋ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āĻā§āϰāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻāϰ⧠.
- āĻāĻāĻāĻŋ āĻŦā§āϞāĻ āύāĻŋāύ .
- āĻāĻŋāĻāϝāĻŧāĻžāϰ⧠āĻĒā§āϏā§āĻ āĻāϰā§āύ, .
āĻāϰ āĻā§āĻĨāĻžāϝāĻŧ āϰā§āĻ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ?
āϰāĻžāĻāĻāĻŦā§āϝāĻžāĻā§ āĻāύāĻĢā§āϞāĻžāĻā§āϏāĻĄāĻŋāĻŦāĻŋāϤ⧠āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒ
āĻāĻĻāĻžāĻšāϰāĻŖ āϏā§āĻŦāϰā§āĻĒ, āĻāĻŽāϰāĻž āĻĒā§āϰāϤāĻŋ āĻāύā§āĻāĻžāϝāĻŧ (groupBy(1h)) āĻ āύā§āϰā§āϧā§āϰ āϝā§āĻāĻĢāϞā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āϏā§āĻ āĻāĻĒ āĻāϰāĻŋ āĻāĻŦāĻ influxdb-āĻ āϏāĻāĻāĻāĻŋāϤ āϏāϤāϰā§āĻāϤāĻžāĻāĻŋ āϰā§āĻāϰā§āĻĄ āĻāϰāϤ⧠āĻāĻžāĻ (āĻā§āϰāĻžāĻĢāύāĻžāϰ āĻā§āϰāĻžāĻĢā§ āϏāĻŽāϏā§āϝāĻžāĻāĻŋāϰ āϏāϤā§āϝāϤāĻž āϏā§āύā§āĻĻāϰāĻāĻžāĻŦā§ āĻĻā§āĻāĻžāύā§āϰ āĻāύā§āϝ)āĨ¤
influxDBOut() āϏāϤāϰā§āĻāϤāĻž āĻĨā§āĻā§ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒā§ āϏāĻŽāϝāĻŧā§āϰ āĻŽāĻžāύ āϞāĻŋāĻāĻŦā§; āϏā§āĻ āĻ āύā§āϝāĻžāϝāĻŧā§, āĻāĻžāϰā§āĻā§āϰ āĻĒāϝāĻŧā§āύā§āĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āĻāϏāĻžāϰ āĻāĻā§/āĻĒāϰ⧠āϞā§āĻāĻž āĻšāĻŦā§āĨ¤
āϝāĻāύ āύāĻŋāϰā§āĻā§āϞāϤāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ: āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰāĻā§ āĻāϞ āĻāϰ⧠āĻāĻ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻŋ, āϝāĻž āĻŦāϰā§āϤāĻŽāĻžāύ āĻāĻžāĻāĻŽāϏā§āĻā§āϝāĻžāĻŽā§āĻĒā§āϰ āϏāĻžāĻĨā§ influxdb-āĻ āĻĄā§āĻāĻž āϞāĻŋāĻāĻŦā§āĨ¤
āĻĄāĻāĻžāϰ, āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāĻŦāĻ āϏā§āĻĨāĻžāĻĒāύāĻž
āϏā§āĻāĻžāϰā§āĻāĻāĻĒā§, āĻā§āϝāĻžāĻĒāĻžāϏāĻŋāĻāϰ [āϞā§āĻĄ] āĻŦā§āϞāĻā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰ⧠āĻāϞā§āϞā§āĻ āĻāϰāĻž āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āĻĨā§āĻā§ āĻāĻžāĻ, āĻā§āĻŽāĻĒā§āϞā§āĻ āĻāĻŦāĻ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āϞā§āĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϏāĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻ āϤā§āϰāĻŋ āĻāϰāϤā§, āĻāĻĒāύāĻžāϰ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻŋāύāĻŋāϏāĻā§āϞāĻŋāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ:
- āĻĢāĻžāĻāϞā§āϰ āύāĻžāĻŽ - āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻāĻĄāĻŋ/āύāĻžāĻŽā§ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ
- āĻĒā§āϰāĻāĻžāϰ - āϏā§āĻā§āϰāĻŋāĻŽ/āĻŦā§āϝāĻžāĻ
- dbrp â āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻā§āύ āĻĄāĻžāĻāĻžāĻŦā§āϏ + āĻĒāϞāĻŋāϏāĻŋāϤ⧠āĻāϞ⧠āϤāĻž āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻžāϰ āĻāύā§āϝ āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ (dbrp "āϏāϰāĻŦāϰāĻžāĻšāĻāĻžāϰā§āĨ¤""āĻ āĻā§āĻā§āύ")
āϝāĻĻāĻŋ āĻāĻŋāĻā§ āĻŦā§āϝāĻžāĻ āĻāĻžāϏā§āĻā§ dbrp-āĻāϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āϞāĻžāĻāύ āύāĻž āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻĒā§āϰ⧠āĻĒāϰāĻŋāώā§āĻŦāĻžāĻāĻŋ āĻļā§āϰ⧠āĻāϰāϤ⧠āĻ āϏā§āĻŦā§āĻāĻžāϰ āĻāϰāĻŦā§ āĻāĻŦāĻ āϏāϤāϤāĻžāϰ āϏāĻžāĻĨā§ āϞāĻā§ āĻāĻāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āϞāĻŋāĻāĻŦā§āĨ¤
āĻā§āϰā§āύā§āĻā§āϰāĻžāĻĢā§, āĻŦāĻŋāĻĒāϰā§āϤā§, āĻāĻ āϞāĻžāĻāύāĻāĻŋ āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤ āύāϝāĻŧ; āĻāĻāĻŋ āĻāύā§āĻāĻžāϰāĻĢā§āϏā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻā§āĻšā§āϤ āĻšāϝāĻŧ āύāĻž āĻāĻŦāĻ āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
āĻāĻāĻāĻŋ āϧāĻžāϰāĻ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻšā§āϝāĻžāĻ āĻāϰā§āύ: āĻĄāĻāĻžāϰāĻĢāĻžāĻāϞ -1 āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāϏā§āĻĨāĻžāύ āĻāϰ⧠āϝāĻĻāĻŋ //.+dbrp āĻāϰ āϏāĻžāĻĨā§ āϞāĻžāĻāύ āĻĨāĻžāĻā§, āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻŦāĻŋāϞā§āĻĄāĻāĻŋ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦā§āϝāϰā§āĻĨāϤāĻžāϰ āĻāĻžāϰāĻŖāĻāĻŋ āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ āĻŦā§āĻāϤ⧠āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻŦā§āĨ¤
āĻāĻ āĻĨā§āĻā§ āĻ āύā§āĻā§āϰ āϏāĻžāĻĨā§ āϝā§āĻ āĻĻāĻŋāύ
āĻāĻĻāĻžāĻšāϰāĻŖ āĻāĻžāϏā§āĻ: āĻāĻĒāύāĻžāĻā§ āĻāĻ āϏāĻĒā§āϤāĻžāĻšā§āϰ āĻāύā§āϝ āĻĒāϰāĻŋāώā§āĻŦāĻžāϰ āĻ āĻĒāĻžāϰā§āĻāĻŋāĻ āϏāĻŽāϝāĻŧā§āϰ 95 āϤāĻŽ āĻļāϤāĻžāĻāĻļ āύāĻŋāϤ⧠āĻšāĻŦā§, āĻāĻ āĻŽāĻžāύā§āϰ āϏāĻžāĻĨā§ āĻļā§āώ 10 āĻāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŽāĻŋāύāĻŋāĻā§āϰ āϤā§āϞāύāĻž āĻāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻāĻ-āĻĨā§āĻā§-āĻ āύā§āĻ āϝā§āĻāĻĻāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻž, āĻĒāϝāĻŧā§āύā§āĻā§āϰ āĻāĻāĻāĻŋ āĻā§āώā§āĻ ā§āϰ āĻāĻĒāϰ āĻļā§āώ/āĻŽāϧā§āϝ/āĻŽāϧā§āϝ āύā§āĻĄāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āϏā§āĻā§āϰā§āĻŽā§ āĻĒāϰāĻŋāĻŖāϤ āĻāϰā§, āϤā§āϰā§āĻāĻŋ "āĻāĻžāĻāϞā§āĻĄ āĻŽā§āϞ⧠āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒā§āϰāĻžāύā§āϤāĻā§āϞāĻŋ āϝā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻž: āĻŦā§āϝāĻžāĻ -> āϏā§āĻā§āϰā§āĻŽ" āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻŦā§āĨ¤
āϞā§āϝāĻžāĻŽā§āĻŦāĻĄāĻž āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ⧠āĻāĻāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻŦā§āϝāĻžāĻā§āϰ āĻĢāϞāĻžāĻĢāϞāĻ āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāϝāĻŧ āύāĻžāĨ¤
āĻĒā§āϰāĻĨāĻŽ āĻŦā§āϝāĻžāĻ āĻĨā§āĻā§ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āύāĻŽā§āĻŦāϰāĻā§āϞāĻŋ udf-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĢāĻžāĻāϞ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āĻāĻŦāĻ āϏāĻžāĻāĻĄāϞā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻ āĻĢāĻžāĻāϞāĻāĻŋ āϞā§āĻĄ āĻāϰāĻžāϰ āĻŦāĻŋāĻāϞā§āĻĒ āϰāϝāĻŧā§āĻā§āĨ¤
āĻāĻŽāϰāĻž āĻāĻāĻž āĻĻāĻŋāϝāĻŧā§ āĻāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§āĻāĻŋ?
āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻžāϝāĻŧ 100 āĻšā§āĻā§āϞ āϏāϰāĻŦāϰāĻžāĻšāĻāĻžāϰ⧠āϰāϝāĻŧā§āĻā§, āϤāĻžāĻĻā§āϰ āĻĒā§āϰāϤā§āϝā§āĻā§āϰ āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āϏāĻāϝā§āĻ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§, āĻāϏā§āύ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻā§āϝāĻžāύā§āϞ āĻŦāϞāĻŋāĨ¤ āĻāĻ āĻā§āϝāĻžāύā§āϞāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻĒā§āϰāĻžāϝāĻŧ 300 āĻāĻŋ āĻā§āϝāĻžāύā§āϞ āϰāϝāĻŧā§āĻā§, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āϝāĻžāύā§āϞ āĻŦāύā§āϧ āĻšāϝāĻŧā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āϏāĻŽāϏā§āϤ āϰā§āĻāϰā§āĻĄ āĻāϰāĻž āĻŽā§āĻā§āϰāĻŋāĻāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝā§, āĻāĻŽāϰāĻž āϤā§āϰā§āĻāĻŋāϰ āĻšāĻžāϰ (āĻ āύā§āϰā§āϧ āĻāĻŦāĻ āϤā§āϰā§āĻāĻŋ) āύāĻŋāϰā§āĻā§āώāĻŖ āĻāϰāĻŦāĨ¤
āĻā§āϰāĻžāĻĢāύāĻž āύāϝāĻŧ āĻā§āύ?
Grafana-āĻ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āϤā§āϰā§āĻāĻŋ āϏāϤāϰā§āĻāϤāĻžāϰ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻ āϏā§āĻŦāĻŋāϧāĻž āϰāϝāĻŧā§āĻā§āĨ¤ āĻāĻŋāĻā§ āϏāĻŽāĻžāϞā§āĻāύāĻžāĻŽā§āϞāĻ, āĻāĻŋāĻā§ āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻā§āĻ āĻŦāύā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§.
Grafana āĻĒāϰāĻŋāĻŽāĻžāĻĒ + āϏāϤāϰā§āĻāϤāĻžāϰ āĻŽāϧā§āϝ⧠āĻā§āĻāĻžāĻŦā§ āĻāĻŖāύāĻž āĻāϰāϤ⧠āĻšāϝāĻŧ āϤāĻž āĻāĻžāύ⧠āύāĻž, āϤāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻāĻŋ āĻšāĻžāϰ (āĻ āύā§āϰā§āϧ-āϤā§āϰā§āĻāĻŋ)/āĻ āύā§āϰā§āϧā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
āϤā§āϰā§āĻāĻŋāĻā§āϞāĻŋ āĻāĻžāϰāĻžāĻĒ āĻĻā§āĻāĻžāĻā§āĻā§:

āĻāĻŦāĻ āϏāĻĢāϞ āĻ
āύā§āϰā§āϧā§āϰ āϏāĻžāĻĨā§ āĻĻā§āĻāĻž āĻšāϞ⧠āĻāĻŽ āĻŽāύā§āĻĻ:

āĻ āĻŋāĻ āĻāĻā§, āĻāĻŽāϰāĻž āĻā§āϰāĻžāĻĢāύāĻžāϰ āĻāĻā§ āĻĒāϰāĻŋāώā§āĻŦāĻžāϤ⧠āϰā§āĻ āĻĒā§āϰāĻžāĻ-āĻāĻŖāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻŋ āĻāĻžāĻ āĻāϰāĻŦā§āĨ¤ āĻāĻŋāύā§āϤ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻŽāϧā§āϝ⧠āύāϝāĻŧ, āĻāĻžāϰāĻŖ... āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āϝāĻžāύā§āϞā§āϰ āĻāύā§āϝ āϤāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āĻ
āύā§āĻĒāĻžāϤāĻā§ "āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ" āĻšāĻŋāϏāĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āĻšāϝāĻŧ, āĻāĻŦāĻ āϏāϤāϰā§āĻāϤāĻžāĻā§āϞāĻŋ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻŽāĻžāύ āĻ
āύā§āϝāĻžāϝāĻŧā§ āĻāĻžāĻ āĻāϰ⧠(āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻ āĻĻāĻŋāϝāĻŧā§ āϤāĻžāĻĻā§āϰ āϏāύā§āϧāĻžāύ āĻāϰāĻŋ, āĻāύ āĻāύ āϏāϤāϰā§āĻāϤāĻž āĻĨāĻžāĻāϞ⧠āϏā§āĻā§āϞāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ)āĨ¤
āĻāĻā§āϞāĻŋ āĻŦāĻŋāĻāĻŋāύā§āύ āĻā§āϝāĻžāύā§āϞā§āϰ āĻāύā§āϝ "āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ" āĻāϰ āĻāĻĻāĻžāĻšāϰāĻŖ:


āĻāĻŽāϰāĻž āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻĒāϝāĻŧā§āύā§āĻ āĻāĻĒā§āĻā§āώāĻž āĻāϰāĻŋ āĻāĻŦāĻ āĻ
āύā§āĻŽāĻžāύ āĻāϰāĻŋ āϝ⧠"āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ" āĻāĻŋāϤā§āϰāĻāĻŋ āϏāĻŽāϏā§āϤ āϏāϰāĻŦāϰāĻžāĻšāĻāĻžāϰā§āĻĻā§āϰ āĻāύā§āϝ āĻāĻāĻ āϰāĻāĻŽāĨ¤ āĻāĻāύ āϏāĻŦāĻāĻŋāĻā§ āĻ āĻŋāĻ āĻāĻā§, āĻāĻŦāĻ āĻāĻŽāϰāĻž āĻā§āϰāĻžāĻĢāύāĻž āĻŽāϧā§āϝ⧠āϏāϤāϰā§āĻāϤāĻž āϏāĻā§āĻā§ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ?
āĻāĻŽāϰāĻž āĻĒāĻžāϰāĻŋ, āĻāĻŋāύā§āϤ⧠āĻāĻŽāϰāĻž āϏāϤā§āϝāĻŋāĻ āĻāĻžāĻ āύāĻž, āĻāĻžāϰāĻŖ āĻāĻŽāĻžāĻĻā§āϰ āĻŦāĻŋāĻāϞā§āĻĒāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻŦā§āĻā§ āύāĻŋāϤ⧠āĻšāĻŦā§:
āĻ) āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āϝāĻžāύā§āϞā§āϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻĒā§āϰāĻā§āϰ āĻā§āϰāĻžāĻĢ āϤā§āϰāĻŋ āĻāϰā§āύ (āĻāĻŦāĻ āĻŦā§āĻĻāύāĻžāĻĻāĻžāϝāĻŧāĻāĻāĻžāĻŦā§ āϤāĻžāĻĻā§āϰ āϏāĻžāĻĨā§)
āĻ) āϏāĻŽāϏā§āϤ āĻā§āϝāĻžāύā§āϞā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻžāϰā§āĻ āĻā§āĻĄāĻŧā§ āĻĻāĻŋāύ (āĻāĻŦāĻ āϰāĻāĻŋāύ āϞāĻžāĻāύ āĻāĻŦāĻ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻāĻĄ āϏāϤāϰā§āĻāϤāĻžāϝāĻŧ āĻšāĻžāϰāĻŋāϝāĻŧā§ āϝāĻžāύ)

āϤā§āĻŽāĻŋ āĻāĻāĻž āĻāĻŋāĻāĻžāĻŦā§ āĻāϰāϞā§?
āĻāĻŦāĻžāϰ, āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ⧠āĻāĻāĻāĻŋ āĻāĻžāϞ āĻļā§āϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āϰāϝāĻŧā§āĻā§ (), āĻ āύā§āϰā§āĻĒ āϏāĻŽāϏā§āϝāĻžāϰ āĻāĻŋāϤā§āϤāĻŋāϤ⧠āĻāĻāĻāĻŋ āĻĻā§āĻāϝāĻŧāĻž āĻŦāĻž āύā§āĻāϝāĻŧāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻŽāϰāĻž āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āϝāĻž āĻāϰā§āĻāĻŋ:
- āĻāϝāĻŧā§āĻ āĻāύā§āĻāĻžāϰ āĻŽāϧā§āϝ⧠āĻĻā§āĻāĻŋ āϏāĻŋāϰāĻŋāĻā§ āϝā§āĻāĻĻāĻžāύ āĻāϰā§āύ, āĻā§āϝāĻžāύā§āϞ āĻĻā§āĻŦāĻžāϰāĻž āĻā§āϰā§āĻĒāĻŋāĻ āĻāϰā§āύ;
- āϝāĻĻāĻŋ āĻā§āύāĻ āĻĄā§āĻāĻž āύāĻž āĻĨāĻžāĻā§ āϤāĻŦā§ āĻā§āϰā§āĻĒ āĻ āύā§āϏāĻžāϰ⧠āϏāĻŋāϰāĻŋāĻāĻāĻŋ āĻĒā§āϰāĻŖ āĻāϰā§āύ;
- āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻĄā§āĻāĻžāϰ āϏāĻžāĻĨā§ āĻļā§āώ 10 āĻŽāĻŋāύāĻŋāĻā§āϰ āĻŽāϧā§āϝāĻŽāĻž āϤā§āϞāύāĻž āĻāϰā§āύ;
- āĻāĻŽāϰāĻž āĻāĻŋāĻā§ āĻĒā§āϞ⧠āĻāĻŋā§āĻāĻžāϰ āĻāϰāĻŋ;
- āĻāĻŽāϰāĻž āĻāύāĻĢā§āϞāĻžāĻā§āϏāĻĄāĻŋāĻŦāĻŋāϤ⧠āϏāĻāĻāĻāĻŋāϤ āĻāĻŖāύāĻžāĻā§āϤ āĻšāĻžāϰ āĻāĻŦāĻ āϏāϤāϰā§āĻāϤāĻžāĻā§āϞāĻŋ āϞāĻŋāĻāĻŋ;
- āĻļāĻŋāĻĨāĻŋāϞ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĻāϰāĻāĻžāϰ⧠āĻŦāĻžāϰā§āϤāĻž āĻĒāĻžāĻ āĻžāύāĨ¤
āĻāĻŽāĻžāϰ āĻŽāϤā§, āĻāĻŽāϰāĻž āϝāϤāĻāĻž āϏāĻŽā§āĻāĻŦ āϏā§āύā§āĻĻāϰāĻāĻžāĻŦā§ āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ (āĻāĻŦāĻ āĻāĻžāϏā§āĻāĻŽ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻāϰāĻ āĻāĻāĻā§ āĻŦā§āĻļāĻŋ) āĻĒā§āϤ⧠āĻā§āϝāĻŧā§āĻāĻŋāϞāĻžāĻŽ āϏāĻŦāĻāĻŋāĻā§ āĻ āϰā§āĻāύ āĻāϰāϤ⧠āĻĒā§āϰā§āĻāĻŋāĨ¤
āĻāĻĒāύāĻŋ github.com āĻ āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āύ и āĻĢāϞ⧠āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĨ¤
āĻĢāϞāĻžāĻĢāϞ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ:
dbrp "supplier"."autogen"
var name = 'requests.rate'
var grafana_dash = 'pczpmYZWU/mydashboard'
var grafana_panel = '26'
var period = 8h
var todayPeriod = 10m
var every = 1m
var warnAlert = 15
var warnReset = 5
var reqQuery = 'SELECT sum("count") AS value FROM "supplier"."autogen"."requests"'
var errQuery = 'SELECT sum("count") AS value FROM "supplier"."autogen"."errors"'
var prevErr = batch
|query(errQuery)
.period(period)
.every(every)
.groupBy(1m, 'channel', 'supplier')
var prevReq = batch
|query(reqQuery)
.period(period)
.every(every)
.groupBy(1m, 'channel', 'supplier')
var rates = prevReq
|join(prevErr)
.as('req', 'err')
.tolerance(1m)
.fill('null')
// СаĐŋĐžĐģĐŊŅĐĩĐŧ СĐŊаŅĐĩĐŊĐ¸Ņ ĐŊŅĐģŅĐŧи, ĐĩŅĐģи иŅ
ĐŊĐĩ ĐąŅĐģĐž
|default()
.field('err.value', 0.0)
.field('req.value', 0.0)
// if в lambda: ŅŅиŅаĐĩĐŧ ŅĐĩĐšŅ, ŅĐžĐģŅĐēĐž ĐĩŅĐģи ĐžŅийĐēи ĐąŅĐģи
|eval(lambda: if("err.value" > 0, 100.0 * (float("req.value") - float("err.value")) / float("req.value"), 100.0))
.as('rate')
// СаĐŋиŅŅваĐĩĐŧ ĐŋĐžŅŅиŅаĐŊĐŊŅĐĩ СĐŊаŅĐĩĐŊĐ¸Ņ Đ˛ иĐŊŅĐģŅĐēŅ
rates
|influxDBOut()
.quiet()
.create()
.database('kapacitor')
.retentionPolicy('autogen')
.measurement('rates')
// вŅйиŅаĐĩĐŧ даĐŊĐŊŅĐĩ Са ĐŋĐžŅĐģĐĩĐ´ĐŊиĐĩ 10 ĐŧиĐŊŅŅ, ŅŅиŅаĐĩĐŧ ĐŧĐĩдиаĐŊŅ
var todayRate = rates
|where(lambda: duration((unixNano(now()) - unixNano("time")) / 1000, 1u) < todayPeriod)
|median('rate')
.as('median')
var prevRate = rates
|median('rate')
.as('median')
var joined = todayRate
|join(prevRate)
.as('today', 'prev')
|httpOut('join')
var trigger = joined
|alert()
.warn(lambda: ("prev.median" - "today.median") > warnAlert)
.warnReset(lambda: ("prev.median" - "today.median") < warnReset)
.flapping(0.25, 0.5)
.stateChangesOnly()
// ŅОйиŅаĐĩĐŧ в message ŅŅŅĐģĐēŅ ĐŊа ĐŗŅаŅиĐē даŅйОŅда ĐŗŅаŅаĐŊŅ
.message(
'{{ .Level }}: {{ index .Tags "channel" }} err/req ratio ({{ index .Tags "supplier" }})
{{ if eq .Level "OK" }}It is ok now{{ else }}
'+string(todayPeriod)+' median is {{ index .Fields "today.median" | printf "%0.2f" }}%, by previous '+string(period)+' is {{ index .Fields "prev.median" | printf "%0.2f" }}%{{ end }}
http://grafana.ostrovok.in/d/'+string(grafana_dash)+
'?var-supplier={{ index .Tags "supplier" }}&var-channel={{ index .Tags "channel" }}&panelId='+string(grafana_panel)+'&fullscreen&tz=UTC%2B03%3A00'
)
.id('{{ index .Tags "name" }}/{{ index .Tags "channel" }}')
.levelTag('level')
.messageField('message')
.durationField('duration')
.topic('slack_graph')
// "today.median" Đ´ŅĐąĐģиŅŅĐĩĐŧ ĐēаĐē "value", ŅаĐēĐļĐĩ ĐŋиŅĐĩĐŧ в иĐŊŅĐģŅĐēŅ ĐžŅŅаĐģŅĐŊŅĐĩ ŅиĐģĐ´Ņ Đ°ĐģĐĩŅŅа (keep)
trigger
|eval(lambda: "today.median")
.as('value')
.keep()
|influxDBOut()
.quiet()
.create()
.database('kapacitor')
.retentionPolicy('autogen')
.measurement('alerts')
.tag('alertName', name)
āĻāĻŦāĻ āĻāĻĒāϏāĻāĻšāĻžāϰ āĻāĻŋ?
āĻā§āϝāĻžāĻĒāĻžāϏāĻŋāĻāϰ āĻāĻāĻā§āĻā§āĻ āĻā§āϰā§āĻĒāĻŋāĻ āϏāĻš āĻŽāύāĻŋāĻāϰāĻŋāĻ-āϏāϤāϰā§āĻāϤāĻž āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāϤā§, āĻāϤāĻŋāĻŽāϧā§āϝ⧠āϰā§āĻāϰā§āĻĄ āĻāϰāĻž āĻŽā§āĻā§āϰāĻŋāĻā§āϏā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻŖāύāĻž āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāϤā§, āĻāĻžāϏā§āĻāĻŽ āĻā§āϰāĻŋāϝāĻŧāĻž āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāϤ⧠āĻāĻŦāĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĻā§āϞāĻŋ (udf) āĻāĻžāϞāĻžāϤ⧠āĻĻā§āϰā§āĻĻāĻžāύā§āϤāĨ¤
āĻĒā§āϰāĻŦā§āĻļā§āϰ āĻŦāĻžāϧāĻž āĻā§āĻŦ āĻŦā§āĻļāĻŋ āύāϝāĻŧ - āϝāĻĻāĻŋ āĻā§āϰāĻžāĻĢāĻžāύāĻž āĻŦāĻž āĻ
āύā§āϝāĻžāύā§āϝ āϏāϰāĻā§āĻāĻžāĻŽāĻā§āϞāĻŋ āĻāĻĒāύāĻžāϰ āĻāĻā§āĻāĻžāĻā§ āϏāĻŽā§āĻĒā§āϰā§āĻŖāϰā§āĻĒā§ āϏāύā§āϤā§āώā§āĻ āύāĻž āĻāϰ⧠āϤāĻŦā§ āĻāĻāĻŋ āĻā§āώā§āĻāĻž āĻāϰā§āύāĨ¤
āĻāϤā§āϏ: www.habr.com
