แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Capacitor-แƒจแƒ˜

แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ“, แƒ“แƒฆแƒ”แƒก แƒแƒ แƒแƒ•แƒ˜แƒœ แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒก, แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ’แƒแƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒš แƒแƒ แƒฎแƒ”แƒ‘แƒจแƒ˜ (แƒคแƒแƒกแƒขแƒ, Slack, Telegram) แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒจแƒ˜ แƒ แƒแƒ˜แƒ›แƒ” แƒ’แƒแƒ“แƒแƒฎแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒกแƒแƒกแƒขแƒฃแƒ›แƒ แƒแƒก แƒแƒœแƒšแƒแƒ˜แƒœ แƒ“แƒแƒฏแƒแƒ•แƒจแƒœแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒจแƒ˜ Ostrovok.ru แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ แƒจแƒ”แƒ”แƒ“แƒ˜แƒœแƒ”แƒ‘แƒ InfluxDB-แƒจแƒ˜ แƒ“แƒ แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ Grafana-แƒจแƒ˜ แƒ“แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒฅ. แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ โ€žแƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒแƒšแƒแƒ— แƒ แƒแƒฆแƒแƒช แƒ“แƒ แƒจแƒ”แƒแƒ“แƒแƒ แƒแƒ— แƒ›แƒแƒกโ€œ, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Kapacitor-แƒก.

แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Capacitor-แƒจแƒ˜
Capacitor แƒแƒ แƒ˜แƒก 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)

แƒแƒฅ แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ แƒ˜แƒก แƒœแƒ˜แƒฃแƒแƒœแƒกแƒ˜. แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜, แƒ—แƒฃ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒ แƒ˜แƒ (res1 แƒแƒœ res2) แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜แƒ, แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ˜แƒ (แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜) แƒแƒกแƒ”แƒ•แƒ” แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ. แƒแƒ› แƒ—แƒ”แƒ›แƒแƒ–แƒ” แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ˜แƒ Github-แƒ–แƒ” (1633, 1871, 6967) โ€“ แƒ•แƒ”แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒแƒก แƒ“แƒ แƒชแƒแƒขแƒ แƒขแƒแƒœแƒฏแƒ•แƒแƒก.

แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒจแƒ˜ (แƒ—แƒฃ แƒšแƒแƒ›แƒ‘แƒ“แƒแƒจแƒ˜)

|eval(lambda: if("value" > 0, true, false)

แƒ‘แƒแƒšแƒ แƒฎแƒฃแƒ—แƒ˜ แƒฌแƒฃแƒ—แƒ˜ แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜แƒ“แƒแƒœ แƒ˜แƒ› แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒแƒ“แƒแƒ แƒแƒ— แƒ‘แƒแƒšแƒ แƒฎแƒฃแƒ—แƒ˜ แƒฌแƒฃแƒ—แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒฌแƒ˜แƒœแƒ แƒ™แƒ•แƒ˜แƒ แƒแƒก. แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒ˜แƒฆแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒ˜ แƒžแƒแƒ แƒขแƒ˜แƒ แƒแƒ  แƒชแƒแƒšแƒ™แƒ”แƒฃแƒš แƒžแƒแƒ แƒขแƒ˜แƒแƒจแƒ˜ แƒแƒœ แƒแƒ›แƒแƒ˜แƒฆแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒฃแƒคแƒ แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒ“แƒแƒœ:

 |where(lambda: duration((unixNano(now()) - unixNano("time"))/1000, 1u) < 5m)

แƒ‘แƒแƒšแƒ แƒฎแƒฃแƒ—แƒ˜ แƒฌแƒฃแƒ—แƒ˜แƒก แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒ•แƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ BarrierNode-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš แƒ“แƒ แƒแƒ›แƒ“แƒ”:

|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) - แƒ™แƒ แƒ”แƒแƒขแƒ˜แƒฃแƒšแƒแƒ‘แƒ แƒ“แƒ แƒ›แƒ”แƒขแƒ˜ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜!

แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒแƒ แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒžแƒแƒขแƒแƒ แƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ Slack-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“, แƒ’แƒ•แƒ˜แƒœแƒ“แƒแƒ“แƒ แƒ’แƒแƒ›แƒแƒ’แƒ•แƒ”แƒ’แƒ–แƒแƒ•แƒœแƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒ— แƒ“แƒแƒชแƒฃแƒšแƒ˜ แƒ’แƒ แƒแƒžแƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒจแƒ˜. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒแƒฌแƒ”แƒ แƒ”แƒ— OK แƒ—แƒ”แƒ›แƒแƒจแƒ˜ แƒ˜แƒ›แƒแƒ•แƒ” แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒฌแƒ˜แƒœแƒ แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒแƒ แƒ แƒชแƒแƒšแƒ™แƒ” แƒ›แƒ”แƒกแƒ˜แƒฏแƒแƒ“. แƒชแƒแƒขแƒ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— - แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ‘แƒแƒšแƒ 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")

Watch (cli): capacitor -url แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜ แƒแƒœ IP:9092 แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜ lvl=แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ

แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ httpOut-แƒ˜แƒ—

แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒจแƒ˜:

|httpOut('something')

แƒฃแƒงแƒฃแƒ แƒ” (แƒ›แƒ˜แƒ˜แƒฆแƒ”): แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜ แƒแƒœ IP:9092/kapacitor/v1/tasks/task_name/something

แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒ

  • แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒฎแƒ”แƒก แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒ“แƒ”แƒ’แƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ’แƒ แƒแƒคแƒ˜แƒ•แƒ˜.
  • แƒแƒ˜แƒฆแƒ”แƒ— แƒ‘แƒšแƒแƒ™แƒ˜ dot.
  • แƒฉแƒแƒกแƒ•แƒ˜แƒ— แƒ›แƒแƒงแƒฃแƒ แƒ”แƒ‘แƒ”แƒšแƒจแƒ˜, แƒ˜แƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ”แƒ—.

แƒ™แƒ˜แƒ“แƒ”แƒ• แƒกแƒแƒ“ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒแƒ™แƒแƒ›แƒ˜แƒกแƒ˜แƒ แƒจแƒแƒ•แƒœแƒ?

แƒ“แƒ แƒแƒ˜แƒก แƒแƒœแƒแƒ‘แƒ”แƒญแƒ“แƒ˜ influxdb-แƒจแƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒแƒ–แƒ”

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ”แƒ— แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ แƒกแƒแƒแƒ—แƒจแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒฏแƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (groupBy(1h)) แƒ“แƒ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒฉแƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒฎแƒ“แƒ influxdb-แƒจแƒ˜ (แƒ’แƒ แƒแƒคแƒแƒœแƒแƒจแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ–แƒ” แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒคแƒแƒฅแƒขแƒ˜แƒก แƒšแƒแƒ›แƒแƒ–แƒแƒ“ แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ˜แƒ—).

influxDBOut() แƒ“แƒแƒฌแƒ”แƒ แƒก แƒ“แƒ แƒแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒแƒ˜แƒก แƒœแƒ˜แƒจแƒœแƒฃแƒšแƒแƒ›แƒ“แƒ”; แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒฉแƒแƒ แƒขแƒ–แƒ” แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ แƒแƒ“แƒ แƒ”/แƒ’แƒ•แƒ˜แƒแƒœ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ•แƒ˜แƒ“แƒ.

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ”: แƒฉแƒ•แƒ”แƒœ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ— แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒแƒ–แƒ” แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒแƒฌแƒ”แƒ แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก influxdb-แƒจแƒ˜ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ“แƒ แƒแƒ˜แƒก แƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜แƒ—.

แƒ“แƒแƒ™แƒ”แƒ แƒ˜, แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ

แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก, capacitor-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒฉแƒแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒแƒก แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜, แƒจแƒแƒ‘แƒšแƒแƒœแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒ“แƒแƒœ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜ [load] แƒ‘แƒšแƒแƒ™แƒจแƒ˜.

แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒฌแƒแƒ แƒแƒ“ แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ แƒแƒ›:

  1. แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ โ€“ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ•แƒ“แƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก ID/แƒกแƒแƒฎแƒ”แƒšแƒแƒ“
  2. แƒขแƒ˜แƒžแƒ˜ - แƒœแƒแƒ™แƒแƒ“แƒ˜ / แƒžแƒแƒ แƒขแƒ˜แƒ
  3. dbrp โ€“ แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒ”แƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ + แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒแƒจแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ (dbrp โ€žแƒ›แƒแƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜โ€œ โ€žแƒแƒ•แƒขแƒแƒ’แƒ”แƒœแƒ˜โ€œ)

แƒ—แƒฃ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒแƒ›แƒแƒชแƒแƒœแƒ แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒฎแƒแƒ–แƒก dbrp-แƒ˜แƒ—, แƒ›แƒ—แƒ”แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒฃแƒแƒ แƒก แƒ˜แƒขแƒงแƒ•แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒแƒ–แƒ” แƒ“แƒ แƒ’แƒฃแƒšแƒแƒฎแƒ“แƒ˜แƒšแƒแƒ“ แƒ“แƒแƒฌแƒ”แƒ แƒก แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒŸแƒฃแƒ แƒœแƒแƒšแƒจแƒ˜.

แƒฅแƒ แƒแƒœแƒแƒ’แƒ แƒแƒคแƒจแƒ˜, แƒžแƒ˜แƒ แƒ˜แƒฅแƒ˜แƒ—, แƒ”แƒก แƒฎแƒแƒ–แƒ˜ แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ“แƒ”แƒก, แƒ˜แƒก แƒแƒ  แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒฌแƒแƒ แƒ›แƒแƒฅแƒ›แƒœแƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก.

แƒฐแƒแƒ™แƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒแƒก: Dockerfile แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก -1-แƒ˜แƒ—, แƒ—แƒฃ แƒแƒ แƒ˜แƒก แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜ //.+dbrp, แƒ แƒแƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ’แƒแƒ˜แƒ’แƒแƒ— แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜ build-แƒ˜แƒก แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒกแƒแƒก.

แƒจแƒ”แƒฃแƒ”แƒ แƒ—แƒ“แƒ˜ แƒ”แƒ แƒ—แƒก แƒ‘แƒ”แƒ•แƒ แƒก

แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜: แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒฆแƒแƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒก 95-แƒ” แƒžแƒ แƒแƒชแƒ”แƒœแƒขแƒ˜ แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒ˜แƒ แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒจแƒ”แƒแƒ“แƒแƒ แƒ”แƒ— แƒ‘แƒแƒšแƒ 10 แƒฌแƒฃแƒ—แƒ˜ แƒแƒ› แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ”แƒ แƒ—แƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜แƒ“แƒแƒœ แƒ‘แƒ”แƒ•แƒ แƒ–แƒ”, แƒ‘แƒแƒšแƒ/แƒกแƒแƒจแƒฃแƒแƒšแƒ/แƒ›แƒ”แƒ“แƒ˜แƒแƒœแƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒฏแƒ’แƒฃแƒคแƒ–แƒ” แƒแƒฅแƒชแƒ”แƒ•แƒก แƒ™แƒ•แƒแƒœแƒซแƒก แƒœแƒแƒ™แƒแƒ“แƒแƒ“, แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ โ€žแƒ•แƒ”แƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘ แƒ‘แƒแƒ•แƒจแƒ•แƒ˜แƒก แƒจแƒ”แƒฃแƒกแƒแƒ‘แƒแƒ›แƒ แƒ™แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒก: แƒžแƒแƒ แƒขแƒ˜แƒ -> แƒœแƒแƒ™แƒแƒ“แƒ˜โ€œ.

แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒชแƒ•แƒšแƒแƒ“แƒ˜ แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒ’แƒแƒ›แƒแƒฎแƒแƒขแƒฃแƒšแƒ”แƒ‘แƒแƒจแƒ˜, แƒแƒกแƒ”แƒ•แƒ” แƒแƒ  แƒแƒ แƒ˜แƒก แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜.

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒœแƒแƒ›แƒ แƒ”แƒ‘แƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒžแƒแƒ แƒขแƒ˜แƒ˜แƒ“แƒแƒœ แƒคแƒแƒ˜แƒšแƒจแƒ˜ udf-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒ”แƒก แƒคแƒแƒ˜แƒšแƒ˜ sideload-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—.

แƒ แƒ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ— แƒแƒ›แƒ˜แƒ—?

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒงแƒแƒ•แƒก 100-แƒ›แƒ“แƒ” แƒกแƒแƒกแƒขแƒฃแƒ›แƒ แƒแƒก แƒ›แƒแƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ›แƒแƒ—แƒ’แƒแƒœแƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒแƒ›แƒแƒก แƒแƒ แƒฎแƒ˜ แƒ•แƒฃแƒฌแƒแƒ“แƒแƒ—. แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 300 แƒแƒกแƒ”แƒ—แƒ˜ แƒแƒ แƒฎแƒ˜แƒ, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒแƒ แƒฎแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒ›แƒแƒ•แƒแƒ แƒ“แƒ”แƒก. แƒงแƒ•แƒ”แƒšแƒ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ™แƒ•แƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒก (แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก แƒ“แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒก).

แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ แƒ’แƒ แƒแƒœแƒ?

Grafana-แƒจแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ—แƒ˜ แƒ›แƒฎแƒแƒ แƒ” แƒแƒฅแƒ•แƒก. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒฃแƒšแƒ˜แƒ, แƒ–แƒแƒ’แƒ–แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ—แƒ•แƒแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒแƒฎแƒฃแƒญแƒแƒ—, แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”.

แƒ’แƒ แƒแƒคแƒแƒœแƒแƒ› แƒแƒ  แƒ˜แƒชแƒ˜แƒก แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ—แƒ•แƒแƒšแƒแƒก แƒ’แƒแƒ–แƒแƒ›แƒ•แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก + แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ (แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜-แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜)/แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜.

แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒกแƒแƒ–แƒ˜แƒ–แƒฆแƒ แƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Capacitor-แƒจแƒ˜

แƒ“แƒ แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒ‘แƒแƒ แƒแƒขแƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒ—:

แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Capacitor-แƒจแƒ˜

แƒ™แƒแƒ แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ’แƒแƒ›แƒแƒ•แƒ—แƒ•แƒแƒšแƒแƒ— แƒขแƒแƒ แƒ˜แƒคแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒจแƒ˜ แƒ’แƒ แƒแƒžแƒแƒœแƒแƒ›แƒ“แƒ” แƒ“แƒ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ”แƒก แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ แƒฉแƒ•แƒ”แƒœแƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ... แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒแƒ แƒฎแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ—แƒแƒœแƒแƒคแƒแƒ แƒ“แƒแƒ‘แƒ แƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ "แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒแƒ“" แƒ“แƒ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— (แƒฉแƒ•แƒ”แƒœ แƒ•แƒ”แƒซแƒ”แƒ‘แƒ— แƒ›แƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ—แƒ•แƒแƒšแƒ˜แƒ—, แƒ•แƒชแƒ•แƒšแƒ˜แƒ— แƒ›แƒแƒ—, แƒ—แƒฃ แƒฎแƒจแƒ˜แƒ แƒ˜แƒ แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜).

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜ "แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜" แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒแƒ แƒฎแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Capacitor-แƒจแƒ˜

แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Capacitor-แƒจแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒฃแƒ’แƒฃแƒšแƒ”แƒ‘แƒ”แƒšแƒงแƒแƒคแƒ— แƒฌแƒ˜แƒœแƒ แƒžแƒฃแƒœแƒฅแƒขแƒก แƒ“แƒ แƒ•แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒ—, แƒ แƒแƒ› "แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜" แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒฎแƒšแƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒแƒ แƒ’แƒแƒ“แƒแƒ แƒ“แƒ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒ แƒแƒคแƒแƒœแƒแƒจแƒ˜ แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ•แƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒ—?
แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒแƒ  แƒ’แƒ•แƒ˜แƒœแƒ“แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฃแƒœแƒ“แƒ แƒแƒ•แƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜:
แƒ) แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒแƒ แƒฎแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ” (แƒ“แƒ แƒ›แƒขแƒ™แƒ˜แƒ•แƒœแƒ”แƒฃแƒšแƒแƒ“ แƒแƒฎแƒšแƒ“แƒ˜แƒ— แƒ›แƒแƒ—)
แƒ‘) แƒ“แƒแƒขแƒแƒ•แƒ”แƒ— แƒ”แƒ แƒ—แƒ˜ แƒกแƒฅแƒ”แƒ›แƒ แƒงแƒ•แƒ”แƒšแƒ แƒแƒ แƒฎแƒ—แƒแƒœ (แƒ“แƒ แƒ“แƒแƒ˜แƒ™แƒแƒ แƒ’แƒ”แƒ— แƒคแƒ”แƒ แƒแƒ“ แƒฎแƒแƒ–แƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒš แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒจแƒ˜)

แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Capacitor-แƒจแƒ˜

แฒ แƒแƒ’แƒแƒ  แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”?

แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒฎแƒ”แƒš, แƒแƒ แƒ˜แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜ (แƒขแƒแƒ แƒ˜แƒคแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ แƒจแƒ”แƒ”แƒ แƒ—แƒ”แƒ‘แƒฃแƒš แƒกแƒ”แƒ แƒ˜แƒ”แƒ‘แƒจแƒ˜), แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒแƒ“แƒ”แƒก แƒแƒœ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒแƒ“ แƒ›แƒกแƒ’แƒแƒ•แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒจแƒ˜.

แƒ แƒ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ‘แƒแƒšแƒแƒก:

  • แƒจแƒ”แƒฃแƒ”แƒ แƒ—แƒ“แƒ˜ แƒแƒ  แƒกแƒ”แƒ แƒ˜แƒแƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒแƒแƒ—แƒจแƒ˜, แƒแƒ แƒฎแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— แƒ“แƒแƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ;
  • แƒจแƒ”แƒแƒ•แƒกแƒ”แƒ— แƒกแƒ”แƒ แƒ˜แƒ”แƒ‘แƒ˜ แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒ—แƒฃ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ  แƒ˜แƒงแƒ;
  • แƒจแƒ”แƒแƒ“แƒแƒ แƒ”แƒ— แƒ‘แƒแƒšแƒ 10 แƒฌแƒฃแƒ—แƒ˜แƒก แƒ›แƒ”แƒ“แƒ˜แƒแƒœแƒ แƒฌแƒ˜แƒœแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ—แƒแƒœ;
  • แƒ•แƒงแƒ•แƒ˜แƒ แƒ˜แƒ—, แƒ—แƒฃ แƒ แƒแƒ›แƒ”แƒก แƒ•แƒ˜แƒžแƒแƒ•แƒ˜แƒ—;
  • แƒฉแƒ•แƒ”แƒœ แƒ•แƒฌแƒ”แƒ แƒ— แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒš แƒขแƒแƒ แƒ˜แƒคแƒ”แƒ‘แƒก แƒ“แƒ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒแƒฎแƒ“แƒ influxdb-แƒจแƒ˜;
  • แƒ’แƒแƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ— แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ slack-แƒก.

แƒฉแƒ”แƒ›แƒ˜ แƒแƒ–แƒ แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒซแƒ”แƒšแƒ˜แƒ— แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒšแƒแƒ›แƒแƒ–แƒแƒ“ แƒ›แƒ˜แƒ•แƒแƒฆแƒฌแƒ˜แƒแƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒก, แƒ แƒ˜แƒกแƒ˜ แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒแƒช แƒ’แƒ•แƒ˜แƒœแƒ“แƒแƒ“แƒ แƒ‘แƒแƒšแƒแƒก (แƒ“แƒ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒชแƒแƒขแƒ แƒ›แƒ”แƒขแƒ˜ แƒกแƒแƒ‘แƒแƒŸแƒ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒ—).

แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— 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)

แƒ แƒ แƒแƒ แƒ˜แƒก แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ?

Kapacitor แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒแƒ“ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’-แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒ“แƒแƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒ˜แƒ’แƒฃแƒšแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒก แƒฃแƒ™แƒ•แƒ” แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”, แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒฃแƒ  แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒก แƒ“แƒ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒก (udf).

แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก แƒ‘แƒแƒ แƒ˜แƒ”แƒ แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒฆแƒแƒšแƒ˜ - แƒกแƒชแƒแƒ“แƒ”แƒ—, แƒ—แƒฃ แƒ’แƒ แƒแƒœแƒ แƒแƒœ แƒกแƒฎแƒ•แƒ แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒ”แƒ‘แƒ˜ แƒกแƒ แƒฃแƒšแƒแƒ“ แƒแƒ  แƒ“แƒแƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ”แƒ‘แƒก.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ