āĻ¸āĻŽā§āĻāĻŦāĻ¤, āĻāĻ āĻā§āĻ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°ā§ āĻ¨āĻž āĻā§āĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻšāĻ˛ āĻ¸āĻāĻā§āĻšā§āĻ¤ āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž, āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ā§ (āĻŽā§āĻ˛, āĻ¸ā§āĻ˛ā§āĻ¯āĻžāĻ, āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ) āĻĄā§āĻāĻžāĻ¤ā§ āĻā§āĻ¨ā§ āĻŦāĻŋāĻā§āĻ¯ā§āĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ
āĻŦāĻšāĻŋāĻ¤ āĻāĻ°āĻŦā§āĨ¤ āĻ
āĻ¨āĻ˛āĻžāĻāĻ¨ āĻšā§āĻā§āĻ˛ āĻŦā§āĻāĻŋāĻ āĻ¸ā§āĻŦāĻž
Kapacitor āĻšāĻ˛ TICK āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻ
āĻāĻļ āĻ¯āĻž InfluxDB āĻĨā§āĻā§ āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻžāĻ§āĻŋāĻ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻāĻāĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻ¯ā§āĻāĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§), āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻĄā§āĻāĻž āĻĨā§āĻā§ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻāĻŋāĻā§ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻĢāĻ˛āĻžāĻĢāĻ˛āĻāĻŋ InfluxDB-āĻ¤ā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§, Slack/Telegram/mail āĻ āĻāĻāĻāĻŋ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻļāĻžāĻ¨ā§āĻ¤ āĻāĻŦāĻ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤
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
httpOut āĻ¸āĻš āĻŦāĻŋāĻāĻ˛ā§āĻĒ
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ā§ āĻĄā§āĻāĻž āĻĻā§āĻāĻžāĻ¯āĻŧ:
|httpOut('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