เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเดฑเดฟเตฝ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ

เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚, เดธเต‡เดตเดจ เด…เดณเดตเตเด•เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต†เดจเตเดจเต เด‡เดจเตเดจเต เด†เดฐเตเด‚ เดšเต‹เดฆเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด…เดŸเตเดคเตเดค เดฒเต‹เดœเดฟเด•เตเด•เตฝ เด˜เดŸเตเดŸเด‚, เดถเต‡เด–เดฐเดฟเดšเตเดš เด…เดณเดตเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เด…เดฒเต‡เตผเดŸเตเดŸเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต, เด…เดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดšเดพเดจเดฒเตเด•เดณเดฟเดฒเต† (เดฎเต†เดฏเดฟเตฝ, เดธเตเดฒเดพเด•เตเด•เต, เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚) เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต† เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดตเตเดฏเดคเดฟเดฏเดพเดจเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดฑเดฟเดฏเดฟเด•เตเด•เตเด‚. เด“เตบเดฒเตˆเตป เดนเต‹เดŸเตเดŸเตฝ เดฌเตเด•เตเด•เดฟเด‚เด—เต เดธเต‡เดตเดจเดคเตเดคเดฟเตฝ Ostrovok.ru เดžเด™เตเด™เดณเตเดŸเต† เดธเต‡เดตเดจเด™เตเด™เดณเตเดŸเต† เดŽเดฒเตเดฒเดพ เด…เดณเดตเตเด•เดณเตเด‚ InfluxDB-เดฏเดฟเดฒเต‡เด•เตเด•เต เดชเด•เดฐเตเด•เดฏเตเด‚ เด—เตเดฐเดพเดซเดพเดจเดฏเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เด…เดฒเต‡เตผเดŸเตเดŸเดฟเด‚เด—เตเด‚ เด…เดตเดฟเดŸเต† เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. "เดจเดฟเด™เตเด™เตพ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚" เดŽเดจเตเดจเดคเตเดชเต‹เดฒเตเดณเตเดณ เดœเต‹เดฒเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเดฑเดฟเตฝ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ
InfluxDB-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ TICK เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเตปเตเดฑเต† เดญเดพเด—เดฎเดพเดฃเต Kapacitor. เด‡เดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เด…เดณเดตเตเด•เตพ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เดšเต‡เดฐเตเด•), เดฒเดญเดฟเดšเตเดš เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเด•, เดซเดฒเด‚ InfluxDB-เดฏเดฟเดฒเต‡เด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เดŽเดดเตเดคเตเด•, เดธเตเดฒเดพเด•เตเด•เต/เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚/เดฎเต†เดฏเดฟเดฒเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด…เดฒเต‡เตผเดŸเตเดŸเต เด…เดฏเดฏเตเด•เตเด•เตเด•.

เดฎเตเดดเตเดตเตป เดธเตเดฑเตเดฑเดพเด•เตเด•เตเด‚ เดคเดฃเตเดคเตเดคเดคเตเด‚ เดตเดฟเดถเดฆเดตเตเดฎเดพเดฃเต เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚, เดŽเดจเตเดจเดพเตฝ เดฎเดพเดจเตเดตเดฒเตเด•เดณเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เดพเดคเตเดค เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดŽเดชเตเดชเต‹เดดเตเด‚ เด‰เดฃเตเดŸเดพเด•เตเด‚. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เด…เดคเตเดคเดฐเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดตเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒเดพเดคเตเดคเดคเตเดฎเดพเดฏ เดจเดฟเดฐเดตเดงเดฟ เดจเตเดฑเตเด™เตเด™เตเด•เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเตป เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต (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)

เดœเต‹เดฏเดฟเตป เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด• (เด…เด•เดคเตเดคเต† vs เดชเตเดฑเด‚)

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เดšเต‡เดฐเตเดจเตเดจเดคเต เดกเดพเดฑเตเดฑ เด‡เดฒเตเดฒเดพเดคเตเดค เดชเต‹เดฏเดฟเตปเตเดฑเตเด•เตพ (เด…เด•เดคเตเดคเต†) เดจเดฟเดฐเดพเด•เดฐเดฟเด•เตเด•เตเด‚.
เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตฝ ('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)

เด…เดตเดธเดพเดจ เด…เดžเตเดšเต เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฌเดฆเตฝ เด’เดฐเต เดฌเดพเดฐเดฟเดฏเตผเดจเต‹เดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต, เด‡เดคเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดกเดพเดฑเตเดฑ เดตเต†เดŸเตเดŸเดฟเด•เตเด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต:

|barrier()
        .period(5m)

เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเตฝ Go เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตปเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ

เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เตพ เดชเดพเด•เตเด•เต‡เดœเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดซเต‹เตผเดฎเดพเดฑเตเดฑเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเต text.templateเดชเดคเดฟเดตเดพเดฏเดฟ เด•เดฃเตเดŸเตเดฎเตเดŸเตเดŸเตเดจเตเดจ เดšเดฟเดฒ เดชเดธเดฟเดฒเตเด•เตพ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต.

เดŽเด™เตเด•เดฟเตฝ-เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ

เดžเด™เตเด™เตพ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เด•เตเดฐเดฎเดคเตเดคเดฟเดฒเดพเด•เตเด•เดฟ, เดŸเต†เด•เตโ€Œเดธเตโ€Œเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดณเตเด•เดณเต† เดตเต€เดฃเตเดŸเตเด‚ เดŸเตเดฐเดฟเด—เตผ เดšเต†เดฏเตเดฏเดฐเตเดคเต:

|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" }}')

เด•เดธเตเดฑเตเดฑเด‚ เดนเดพเตปเดกเตโ€ŒเดฒเดฑเตเดŸเต†

เดนเดพเตปเดกเตโ€Œเดฒเดฑเตเด•เดณเตเดŸเต† เดตเดฒเดฟเดฏ เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดŽเด•เตโ€Œเดธเดฟเด•เต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดคเต เดชเดพเดธเตเดธเดพเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ (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=error

httpOut เด‰เดณเตเดณ เด“เดชเตเดทเตป

เดจเดฟเดฒเดตเดฟเดฒเต† เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเดฒเต† เดกเดพเดฑเตเดฑ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต:

|httpOut('something')

เด•เดพเดฃเตเด• (เดจเต‡เดŸเตเด•): เดนเต‹เดธเตเดฑเตเดฑเต-เด“เตผ-เดเดชเดฟ:9092/kapacitor/v1/tasks/task_name/เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚

เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดทเตป เดกเดฏเด—เตเดฐเด‚

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเต†เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เด’เดฐเต เดฑเต‡เด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚?

เดฑเตˆเดฑเตเดฑเตเดฌเดพเด•เตเด•เดฟเตฝ influxdb-เตฝ เดŸเตˆเด‚เดธเตเดฑเตเดฑเดพเดฎเตเดชเต

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด’เดฐเต เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดฟเดฒเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเดŸเต† เด†เด•เต†เดคเตเดคเตเด• (groupBy(1h)) เด’เดฐเต เด…เดฒเต‡เตผเดŸเตเดŸเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ influxdb-เดฏเดฟเตฝ เดธเด‚เดญเดตเดฟเดšเตเดš เด…เดฒเต‡เตผเดŸเตเดŸเต เดฑเต†เด•เตเด•เต‹เตผเดกเต เดšเต†เดฏเตเดฏเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต (เด—เตเดฐเดพเดซเดพเดจเดฏเดฟเดฒเต† เด—เตเดฐเดพเดซเดฟเตฝ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเตปเตเดฑเต† เดตเดธเตเดคเตเดค เดฎเดจเต‹เดนเดฐเดฎเดพเดฏเดฟ เด•เดพเดฃเดฟเด•เตเด•เดพเตป).

influxDBOut() เด…เดฒเต‡เตผเดŸเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เดŸเตˆเด‚เดธเตเดฑเตเดฑเดพเดฎเตเดชเดฟเดฒเต‡เด•เตเด•เต เดธเดฎเดฏ เดฎเต‚เดฒเตเดฏเด‚ เดŽเดดเตเดคเตเด‚, เดšเดพเตผเดŸเตเดŸเดฟเดฒเต† เดชเต‹เดฏเดฟเตปเตเดฑเต เด…เดฒเต‡เตผเดŸเตเดŸเต เดตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เดฎเตเดฎเตเดชเต / เดชเดฟเดจเตเดจเต€เดŸเต เดŽเดดเตเดคเดชเตเดชเต†เดŸเตเด‚.

เด•เตƒเดคเตเดฏเดค เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเต‹เตพ: เด’เดฐเต เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดนเดพเตปเดกเตโ€Œเดฒเดฑเต† เดตเดฟเดณเดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดˆ เดชเตเดฐเดถเตโ€Œเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดจเดฟเดฒเดตเดฟเดฒเต† เดŸเตˆเด‚เดธเตเดฑเตเดฑเดพเดฎเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต influxdb-เดฏเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดŽเดดเตเดคเตเด‚.

เดกเต‹เด•เตเด•เตผ, เดจเดฟเตผเดฎเตเดฎเดพเดฃเด‚, เดตเดฟเดจเตเดฏเดพเดธเด‚

เด†เดฐเด‚เดญเดคเตเดคเดฟเตฝ, [เดฒเต‹เดกเต] เดฌเตเดฒเต‹เด•เตเด•เดฟเดฒเต† เด•เต‹เตบเดซเดฟเด—เดฑเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เดชเดพเดธเดฟเดฑเตเดฑเดฑเดฟเดจเต เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเด‚ เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เดณเตเด‚ เดนเดพเตปเดกเตโ€Œเดฒเดฑเตเด•เดณเตเด‚ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.

เด’เดฐเต เดŸเดพเดธเตเด•เต เดถเดฐเดฟเดฏเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

  1. เดซเดฏเดฒเดฟเตปเตเดฑเต† เดชเต‡เดฐเต - เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดกเดฟ/เดชเต‡เดฐเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต
  2. เดคเดฐเด‚ - เดธเตเดŸเตเดฐเต€เด‚/เดฌเดพเดšเตเดšเต
  3. dbrp - เดเดคเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต + เดชเต‹เดณเดฟเดธเดฟเดฏเดฟเดฒเดพเดฃเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เต€เดตเต‡เดกเต (dbrp "เดตเดฟเดคเดฐเดฃเด•เตเด•เดพเดฐเตป." "เด“เดŸเตเดŸเต‹เดœเต†เตป")

เดšเดฟเดฒ เดฌเดพเดšเตเดšเต เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเดฟเตฝ dbrp เด‰เดณเตเดณ เด’เดฐเต เดฒเตˆเตป เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดฎเตเดดเตเดตเตป เดธเต‡เดตเดจเดตเตเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เดตเดฟเดธเดฎเตเดฎเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเดคเตเดฏเดธเดจเตเดงเดฎเดพเดฏเดฟ เดฒเต‹เด—เดฟเตฝ เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เด•เตเดฐเต‹เดฃเต‹เด—เตเดฐเดพเดซเดฟเตฝ, เดจเต‡เดฐเต†เดฎเดฑเดฟเดšเตเดšเต, เดˆ เดฒเตˆเตป เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒ, เด‡เดคเต เด‡เตปเตเดฑเตผเดซเต‡เดธเดฟเดฒเต‚เดŸเต† เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด•เดฏเตเด‚ เด’เดฐเต เดชเดฟเดถเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดนเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•: //.+dbrp เด‰เดณเตเดณ เดฒเตˆเดจเตเด•เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ -1 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต‹เด•เตเด•เตผเดซเดฟเตฝ เดชเตเดฑเดคเตเดคเตเด•เดŸเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดฌเดฟเตฝเดกเต เด…เดธเด‚เดฌเดฟเตพ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดชเดฐเดพเดœเดฏเดคเตเดคเดฟเตปเตเดฑเต† เด•เดพเดฐเดฃเด‚ เดชเต†เดŸเตเดŸเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.

เด’เดจเตเดจเดฟเตฝ เดชเดฒเดคเตเด‚ เดšเต‡เดฐเตเด•

เด‰เดฆเดพเดนเดฐเดฃ เดŸเดพเดธเตโ€Œเด•เต: เดธเต‡เดตเดจเดคเตเดคเดฟเตปเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดธเดฎเดฏเดคเตเดคเดฟเตปเตเดฑเต† 95-เดพเด‚ เดถเดคเดฎเดพเดจเด‚ เดจเดฟเด™เตเด™เตพ เด’เดฐเดพเดดเตเดšเดคเตเดคเต‡เด•เตเด•เต เดŽเดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดตเดธเดพเดจ 10 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเต† เด“เดฐเต‹ เดฎเดฟเดจเดฟเดฑเตเดฑเตเด‚ เดˆ เดฎเต‚เดฒเตเดฏเดตเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด•.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดจเตเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฒเดคเตเด‚ เดšเต‡เดฐเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด…เดตเดธเดพเดจเดคเตเดคเต†/เด…เตผเดคเตเดฅเด‚/เดฎเต€เดกเดฟเดฏเตป เดชเต‹เดฏเดฟเตปเตเดฑเตเด•เดณเตเดŸเต† เด—เตเดฐเต‚เดชเตเดชเดฟเตฝ เดจเต‹เดกเต เด’เดฐเต เดธเตเดŸเตเดฐเต€เด‚ เด†เด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต, โ€œเดšเตˆเตฝเดกเต เดชเตŠเดฐเตเดคเตเดคเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เด…เดฐเดฟเด•เตเด•เตพ เดšเต‡เตผเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ: เดฌเดพเดšเตเดšเต -> เดธเตเดŸเตเดฐเต€เด‚โ€ เดŽเดจเตเดจ เดชเดฟเดถเด•เต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด‚.

เดฒเดพเด‚เดก เดŽเด•เตโ€Œเดธเตโ€Œเดชเตเดฐเดทเดจเดฟเดฒเต† เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดพเดฏเดฟ เด’เดฐเต เดฌเดพเดšเตเดšเดฟเตปเตเดฑเต† เดซเดฒเดตเตเด‚ เดชเด•เดฐเด‚ เดตเดฏเตเด•เตเด•เดฟเดฒเตเดฒ.

เด†เดฆเตเดฏ เดฌเดพเดšเตเดšเดฟเตฝ เดจเดฟเดจเตเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดจเดฎเตเดชเดฑเตเด•เตพ udf เดตเดดเดฟ เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดธเต‡เดตเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดธเตˆเดกเตโ€Œเดฒเต‹เดกเต เดตเดดเดฟ เดˆ เดซเดฏเตฝ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด’เดฐเต เด“เดชเตเดทเตป เด‰เดฃเตเดŸเต.

เด‡เดคเต เด•เตŠเดฃเตเดŸเต เดžเด™เตเด™เตพ เดŽเดจเตเดคเดพเดฃเต เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเดคเต?

เดžเด™เตเด™เตพเด•เตเด•เต เดเด•เดฆเต‡เดถเด‚ 100 เดนเต‹เดŸเตเดŸเตฝ เดตเดฟเดคเดฐเดฃเด•เตเด•เดพเดฐเตเดฃเตเดŸเต, เด“เดฐเต‹เดฐเตเดคเตเดคเตผเด•เตเด•เตเด‚ เดจเดฟเดฐเดตเดงเดฟ เด•เดฃเด•เตเดทเดจเตเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚, เดจเดฎเตเด•เตเด•เต เด…เดคเดฟเดจเต† เด’เดฐเต เดšเดพเดจเตฝ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดพเด‚. เดˆ เดšเดพเดจเดฒเตเด•เดณเดฟเตฝ เดเด•เดฆเต‡เดถเด‚ 300 เดŽเดฃเตเดฃเด‚ เด‰เดฃเตเดŸเต, เด“เดฐเต‹ เดšเดพเดจเดฒเดฟเดจเตเด‚ เดตเต€เดดเดพเด‚. เดฑเต†เด•เตเด•เต‹เตผเดกเต เดšเต†เดฏเตโ€Œเดค เดŽเดฒเตเดฒเดพ เดฎเต†เดŸเตเดฐเดฟเด•เตเด•เตเด•เดณเดฟเดฒเตเด‚, เดžเด™เตเด™เตพ เดชเดฟเดถเด•เต เดจเดฟเดฐเด•เตเด•เต เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด‚ (เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเด‚ เดชเดฟเดถเด•เตเด•เดณเตเด‚).

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เด—เตเดฐเดพเดซเดพเดจ เด…เดฒเตเดฒ?

เด—เตเดฐเดพเดซเดพเดจเดฏเดฟเตฝ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเดฟเดถเด•เต เด…เดฒเต‡เตผเดŸเตเดŸเตเด•เตพเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เดฆเต‹เดทเด™เตเด™เดณเตเดฃเตเดŸเต. เดšเดฟเดฒเดคเต เดจเดฟเตผเดฃเดพเดฏเด•เดฎเดพเดฃเต, เดšเดฟเดฒเดคเต เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเดจเดจเตเดธเดฐเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดฃเตเด•เตพ เด…เดŸเดฏเตเด•เตเด•เดพเด‚.

เด…เดณเดตเตเด•เตพ + เด…เดฒเต‡เตผเดŸเตเดŸเดฟเด‚เด—เต เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดŽเด™เตเด™เดจเต† เด•เดฃเด•เตเด•เดพเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เด—เตเดฐเดพเดซเดพเดจเดฏเตเด•เตเด•เต เด…เดฑเดฟเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดจเดฟเดฐเด•เตเด•เต (เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ-เดชเดฟเดถเด•เตเด•เตพ)/เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดชเดฟเดถเด•เตเด•เตพ เดฎเต‹เดถเดฎเดพเดฏเดฟ เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต:

เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเดฑเดฟเตฝ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ

เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เด•เดพเดฃเตเดฎเตเดชเต‹เตพ เดฆเต‹เดทเด‚ เด•เตเดฑเดตเดพเดฃเต:

เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเดฑเดฟเตฝ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ

เดถเดฐเดฟ, เด—เตเดฐเดพเดซเดพเดจเดฏเตเด•เตเด•เต เดฎเตเดฎเตเดชเต เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต† เดจเดฟเดฐเด•เตเด•เต เดจเดฎเตเด•เตเด•เต เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดพเด‚, เดšเดฟเดฒ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เด‡เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚. เดชเด•เตเดทเต† เดจเดฎเตเดฎเตเดŸเต‡เดคเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚... เด“เดฐเต‹ เดšเดพเดจเดฒเดฟเดจเตเด‚ เด…เดคเดฟเตปเตเดฑเต‡เดคเดพเดฏ เด…เดจเตเดชเดพเดคเด‚ "เดธเดพเดงเดพเดฐเดฃ" เด†เดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด…เดฒเต‡เตผเดŸเตเดŸเตเด•เตพ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดฎเต‚เดฒเตเดฏเด™เตเด™เตพเด•เตเด•เดจเตเดธเตƒเดคเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต (เดžเด™เตเด™เตพ เด…เดตเดฏเต† เดžเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดฃเตเด•เตŠเดฃเตเดŸเต เดคเดฟเดฐเดฏเตเดจเตเดจเต, เดชเดคเดฟเดตเต เด…เดฒเต‡เตผเดŸเตเดŸเตเด•เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เด…เดต เดฎเดพเดฑเตเดฑเตเด•).

เดตเตเดฏเดคเตเดฏเดธเตโ€Œเดค เดšเดพเดจเดฒเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ โ€œเดธเดพเดงเดพเดฐเดฃโ€ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเดพเดฃเต เด‡เดต:

เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเดฑเดฟเตฝ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ

เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเดฑเดฟเตฝ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ

เดžเด™เตเด™เตพ เดฎเตเดฎเตเดชเดคเตเดคเต† เดชเต‹เดฏเดฟเตปเตเดฑเต เด…เดตเด—เดฃเดฟเด•เตเด•เตเด•เดฏเตเด‚ "เดธเดพเดงเดพเดฐเดฃ" เดšเดฟเดคเตเดฐเด‚ เดŽเดฒเตเดฒเดพ เดตเดฟเดคเดฐเดฃเด•เตเด•เดพเตผเด•เตเด•เตเด‚ เดธเดฎเดพเดจเดฎเดพเดฃเต†เดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดชเตเดชเต‹เตพ เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฃเต, เด—เตเดฐเดพเดซเดพเดจเดฏเดฟเดฒเต† เด…เดฒเต‡เตผเดŸเตเดŸเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฎเตเด•เตเด•เต เดŽเดคเตเดคเดฟเดšเตเดšเต‡เดฐเดพเดจเดพเด•เตเดฎเต‹?
เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเด‚, เดชเด•เตเดทเต‡ เดžเด™เตเด™เตพ เดถเดฐเดฟเด•เตเด•เตเด‚ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดžเด™เตเด™เตพ เด“เดชเตเดทเดจเตเด•เดณเดฟเดฒเตŠเดจเตเดจเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:
a) เด“เดฐเต‹ เดšเดพเดจเดฒเดฟเดจเตเด‚ เดตเต†เดตเตเดตเต‡เดฑเต† เดงเดพเดฐเดพเดณเด‚ เด—เตเดฐเดพเดซเตเด•เตพ เด‰เดฃเตเดŸเดพเด•เตเด•เตเด• (เด…เดตเดฐเต‹เดŸเตŠเดชเตเดชเด‚ เดตเต‡เดฆเดจเดฏเต‹เดŸเต†)
b) เดŽเดฒเตเดฒเดพ เดšเดพเดจเดฒเตเด•เตพเด•เตเด•เตเดฎเตŠเดชเตเดชเด‚ เด’เดฐเต เดšเดพเตผเดŸเตเดŸเต เดตเดฟเดŸเตเด• (เด•เต‚เดŸเดพเดคเต† เดตเตผเดฃเตเดฃเดพเดญเดฎเดพเดฏ เดฒเตˆเดจเตเด•เดณเดฟเดฒเตเด‚ เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดคเดฎเดพเด•เตเด•เดฟเดฏ เด…เดฒเต‡เตผเดŸเตเดŸเตเด•เดณเดฟเดฒเตเด‚ เดจเดทเตเดŸเดชเตเดชเต†เดŸเตเด•)

เด•เดชเตเดชเดพเดธเดฟเดฑเตเดฑเดฑเดฟเตฝ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ

เดจเดฟเด™เตเด™เตพ เด…เดคเต เดŽเด™เตเด™เดจเต† เด†เดฃเต เดšเต†เดฏเตเดคเดคเต?

เดตเต€เดฃเตเดŸเตเด‚, เดกเต‹เด•เตเดฏเตเดฎเต†เตปเตเดฑเต‡เดทเดจเดฟเตฝ เด’เดฐเต เดจเดฒเตเดฒ เดคเตเดŸเด•เตเด• เด‰เดฆเดพเดนเดฐเดฃเดฎเตเดฃเตเดŸเต (เดšเต‡เตผเดจเตเดจ เดธเต€เดฐเต€เดธเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดจเดฟเดฐเด•เตเด•เตเด•เตพ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเต), เดธเดฎเดพเดจ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเดจเต‹ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เดพเดจเต‹ เด•เดดเดฟเดฏเตเด‚.

เด…เดตเดธเดพเดจเด‚ เดžเด™เตเด™เตพ เดšเต†เดฏเตเดคเดคเต:

  • เดเดคเดพเดจเตเด‚ เดฎเดฃเดฟเด•เตเด•เต‚เดฑเตเด•เตพเด•เตเด•เตเดณเตเดณเดฟเตฝ เดฐเดฃเตเดŸเต เดชเดฐเดฎเตเดชเดฐเด•เดณเดฟเตฝ เดšเต‡เดฐเตเด•, เดšเดพเดจเดฒเตเด•เตพ เดชเตเดฐเด•เดพเดฐเด‚ เด—เตเดฐเต‚เดชเตเดชเตเดšเต†เดฏเตเดฏเตเด•;
  • เดกเดพเดฑเตเดฑ เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด—เตเดฐเต‚เดชเตเดชเต เดชเตเดฐเด•เดพเดฐเด‚ เดชเดฐเดฎเตเดชเดฐ เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•;
  • เดฎเตเดฎเตเดชเดคเตเดคเต† เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เด…เดตเดธเดพเดจ 10 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเตปเตเดฑเต† เดถเดฐเดพเดถเดฐเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด•;
  • เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดพเตฝ เดžเด™เตเด™เตพ เดจเดฟเดฒเดตเดฟเดณเดฟเด•เตเด•เตเด‚;
  • influxdb-เดฏเดฟเตฝ เดธเด‚เดญเดตเดฟเดšเตเดš เด•เดฃเด•เตเด•เดพเด•เตเด•เดฟเดฏ เดจเดฟเดฐเด•เตเด•เตเด•เดณเตเด‚ เด…เดฒเต‡เตผเดŸเตเดŸเตเด•เดณเตเด‚ เดžเด™เตเด™เตพ เดŽเดดเตเดคเตเดจเตเดจเต;
  • เดธเตเดฒเดพเด•เตเด•เดฟเดฒเต‡เด•เตเด•เต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เด…เดฏเดฏเตเด•เตเด•เตเด•.

เดŽเตปเตเดฑเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เด…เดตเดธเดพเดจเด‚ เดฒเดญเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดฒเตเดฒเดพเด‚ (เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดนเดพเตปเดกเตโ€Œเดฒเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตเดฑเดšเตเดšเต เด•เต‚เดŸเดฟ) เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดฎเดจเต‹เดนเดฐเดฎเดพเดฏเดฟ เดจเต‡เดŸเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดžเตเดžเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต 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) Kapacitor เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต.

เดชเตเดฐเดตเต‡เดถเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดคเดŸเดธเตเดธเด‚ เดตเดณเดฐเต† เด‰เดฏเตผเดจเตเดจเดคเดฒเตเดฒ - เด—เตเดฐเดพเดซเดพเดจเดฏเต‹ เดฎเดฑเตเดฑเต เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเต‹ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เด—เตเดฐเดนเด™เตเด™เดณเต† เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดคเตƒเดชเตเดคเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด‡เดคเต เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

DDoS เดชเดฐเดฟเดฐเด•เตเดทเดฏเตเดณเตเดณ เดธเตˆเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดพเดฏ เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดตเดพเด™เตเด™เตเด•, VPS VDS เดธเต†เตผเดตเดฑเตเด•เตพ ๐Ÿ”ฅ DDoS เดชเดฐเดฟเดฐเด•เตเดท, VPS VDS เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดณเตเดณ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดพเดฏ เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเต เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดตเดพเด™เตเด™เต‚ | ProHoster