เชœเชŸเชฟเชฒ เชšเซ‡เชคเชตเชฃเซ€เช“ เชธเชพเชฅเซ‡ เชธเชฐเชณ เช•เชพเชฐเซเชฏ. เช…เชฅเชตเชพ เชฌเซ‡เชฒเซ‡เชฐเซเชŸเชฐเชจเซ€ เชฐเชšเชจเชพเชจเซ‹ เช‡เชคเชฟเชนเชพเชธ

เชœเชŸเชฟเชฒ เชšเซ‡เชคเชตเชฃเซ€เช“ เชธเชพเชฅเซ‡ เชธเชฐเชณ เช•เชพเชฐเซเชฏ. เช…เชฅเชตเชพ เชฌเซ‡เชฒเซ‡เชฐเซเชŸเชฐเชจเซ€ เชฐเชšเชจเชพเชจเซ‹ เช‡เชคเชฟเชนเชพเชธ

เชฆเชฐเซ‡เช• เชตเซเชฏเช•เซเชคเชฟเชจเซ‡ เชšเซ‡เชคเชตเชฃเซ€เช“ เชชเชธเช‚เชฆ เช›เซ‡.

เช…เชฒเชฌเชคเซเชค, เชฌเซ‡เชธเซ€เชจเซ‡ เช†เชฒเซ‡เช– เชœเซ‹เชตเชพ เช…เชจเซ‡ เชตเชฟเชธเช‚เช—เชคเชคเชพเช“ เชœเซ‹เชตเชพ เช•เชฐเชคเชพเช‚ เช•เช‚เชˆเช• เชฌเชจเซเชฏเซเช‚ เชนเซ‹เชฏ (เช…เชฅเชตเชพ เชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเซ‹เชฏ) เชคเซเชฏเชพเชฐเซ‡ เชœเชพเชฃ เช•เชฐเชตเซ€ เชตเชงเซ เชธเชพเชฐเซเช‚ เช›เซ‡.

เช…เชจเซ‡ เช† เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชธเชพเชงเชจเซ‹ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เช‡เช•เซ‹เชธเชฟเชธเซเชŸเชฎ เชคเชฐเชซเชฅเซ€ เชšเซ‡เชคเชตเชฃเซ€ เชตเซเชฏเชตเชธเซเชฅเชพเชชเช• เช…เชจเซ‡ VictoriaMetrics เช‰เชคเซเชชเชพเชฆเชจ เชœเซ‚เชฅเชฎเชพเช‚เชฅเซ€ vmalert. Grafana เชฎเชพเช‚ Zabbix เชธเซ‚เชšเชจเชพเช“ เช…เชจเซ‡ เชšเซ‡เชคเชตเชฃเซ€เช“. เชฌเซ‡เชถ เช…เชจเซ‡ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฌเซ‰เชŸเซ‹เชฎเชพเช‚ เชธเซเชต-เชฒเชฟเช–เชฟเชค เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชœเซ‡ เชธเชฎเชฏเชพเช‚เชคเชฐเซ‡ เช…เชฎเซเช• URL เช–เซ‡เช‚เชšเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชœเชฃเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชถเซเช‚ เช•เช‚เชˆเช• เช–เซ‹เชŸเซเช‚ เช›เซ‡. เช˜เชฃเซเช‚ เชฌเชงเซเช‚.

เช…เชฎเซ‡, เช…เชฎเชพเชฐเซ€ เช•เช‚เชชเชจเซ€เชฎเชพเช‚, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เช…เชฎเซ‡ เชœเชŸเชฟเชฒเชคเชพ, เช…เชฅเชตเชพ เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡, เชœเชŸเชฟเชฒ, เชธเช‚เชฏเซเช•เซเชค เชšเซ‡เชคเชตเชฃเซ€เช“ เชฌเชจเชพเชตเชตเชพเชจเซ€ เช…เชถเช•เซเชฏเชคเชพเชฎเชพเช‚ เชจ เชชเชนเซ‹เช‚เชšเซ€เช เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชตเชฟเชตเชฟเชง เช‰เช•เซ‡เชฒเซ‹เชจเซ‹ เชชเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹. เช…เชฎเซ‡ เชถเซเช‚ เช‡เชšเซเช›เชคเชพ เชนเชคเชพ เช…เชจเซ‡ เช…เชฎเซ‡ เชถเซเช‚ เช•เชฐเชตเชพเชจเซเช‚ เชธเชฎเชพเชชเซเชค เช•เชฐเซเชฏเซเช‚ เชคเซ‡ เช•เชŸเชจเซ€ เชจเซ€เชšเซ‡ เช›เซ‡. TLDR: เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช† เชฐเซ€เชคเซ‡ เชฆเซ‡เช–เชพเชฏเซ‹ เชฌเซ‡เชฒเซ‡เชฐเซเชŸเชฐ

เช˜เชฃเชพ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เช…เชฎเซ‡ Grafana เชฎเชพเช‚ เช—เซ‹เช เชตเซ‡เชฒ เชšเซ‡เชคเชตเชฃเซ€เช“ เชธเชพเชฅเซ‡ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชœเซ€เชตเซเชฏเชพ. เชนเชพ, เช† เชถเซเชฐเซ‡เชทเซเช  เชฎเชพเชฐเซเช— เชจเชฅเซ€. เชนเช‚เชฎเซ‡เชถเชพ เช•เซ‡เชŸเชฒเชพเช• เชตเชฟเชถเชฟเชทเซเชŸ เช‰เช•เซ‡เชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ Alertmanager. เช…เชจเซ‡ เช…เชฎเซ‡ เชชเชฃ เชเช• เช•เชฐเชคเชพ เชตเชงเซ เชตเชพเชฐ เช†เช—เชณ เชตเชงเชตเชพ เชคเชฐเชซ เชœเซ‹เชฏเซเช‚. เช…เชจเซ‡ เชชเช›เซ€, เชงเซ€เชฎเซ‡ เชงเซ€เชฎเซ‡, เช…เชฎเซ‡ เชตเชงเซ เช‡เชšเซเช›เชคเชพ เชนเชคเชพ.

เช•เชนเซ‹ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชšเซ‹เช•เซเช•เชธ เชšเชพเชฐเซเชŸเชฎเชพเช‚ XX% เชจเซ‹ เช˜เชŸเชพเชกเซ‹/เชตเชงเชพเชฐเซ‹ เชฅเชฏเซ‹ เชนเซ‹เชฏ เช…เชจเซ‡ M เช•เชฒเชพเช•เชจเชพ เช…เช—เชพเช‰เชจเชพ เชธเชฎเชฏเช—เชพเชณเชพเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€เชฎเชพเช‚ N เชฎเชฟเชจเชฟเชŸ เชธเซเชงเซ€ เชฐเชนเซเชฏเซ‹ เชนเซ‹เชฏ? เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ Grafana เช…เชฅเชตเชพ Alertmanager เชธเชพเชฅเซ‡ เช†เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เชคเซ‡ เชเช•เชฆเชฎ เชธเชฐเชณ เชจเชฅเซ€. (เช…เชฅเชตเชพ เช•เชฆเชพเชš เชคเซ‡ เชถเช•เซเชฏ เชจเชฅเซ€, เชนเซเช‚ เชนเชตเซ‡ เช•เชนเซ€เชถ เชจเชนเซ€เช‚)

เชœเซเชฏเชพเชฐเซ‡ เชšเซ‡เชคเชตเชฃเซ€เชจเซ‹ เชจเชฟเชฐเซเชฃเชฏ เชตเชฟเชตเชฟเชง เชธเซเชคเซเชฐเซ‹เชคเซ‹เชจเชพ เชกเซ‡เชŸเชพเชจเชพ เช†เชงเชพเชฐเซ‡ เชฒเซ‡เชตเซ‹ เชœเซ‹เชˆเช เชคเซเชฏเชพเชฐเซ‡ เชตเชธเซเชคเซเช“ เชตเชงเซ เชœเชŸเชฟเชฒ เชฌเชจเซ‡ เช›เซ‡. เชœเซ€เชตเช‚เชค เช‰เชฆเชพเชนเชฐเชฃ:

เช…เชฎเซ‡ เชฌเซ‡ เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชคเชชเชพเชธเซ€เช เช›เซ€เช, เชชเช›เซ€ เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชคเซ‡เชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชšเซ‡เชคเชตเชฃเซ€ เชจเช•เซเช•เซ€ เช•เชฐเซ€เช เช›เซ€เช. เชธเชฟเช—เซเชจเชฒ เช…เชฅเชตเชพ เชฐเชฆ เช•เชฐเซ‹

เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชจเชฟเชฐเซเชฃเชฏ เชตเชฟเชถเซ‡ เชตเชฟเชšเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชธเชฎเชพเชจ เช‡เชšเซเช›เชพเช“ เชเช•เช เซ€ เช•เชฐเซ€ เช›เซ‡. เช…เชจเซ‡ เชชเช›เซ€ เช…เชฎเซ‡ เช† เชธเซ‡เชตเชพเชจเซ€ เช†เชตเชถเซเชฏเช•เชคเชพเช“/เช•เซเชทเชฎเชคเชพเช“เชจเซ€ เชชเซเชฐเชฅเชฎ เชธเซ‚เชšเชฟ เชธเช‚เช•เชฒเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹, เชœเซ‡ เชนเชœเซ€ เชธเซเชงเซ€ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจเชฅเซ€.

  • เชตเชฟเชตเชฟเชง เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชคเซ‹เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ, เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ, เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ

  • เชตเชฟเชตเชฟเชง เชšเซ‡เชจเชฒเซ‹ เชชเชฐ เชšเซ‡เชคเชตเชฃเซ€เช“ เชฎเซ‹เช•เชฒเซ‹ - เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ, เชธเซเชฒเซ‡เช•, เชตเช—เซ‡เชฐเซ‡.

  • เชตเชฟเชšเชพเชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚, เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช•เซ‡ เชฎเชพเชฐเซ‡ เช˜เซ‹เชทเชฃเชพเชคเซเชฎเช• เชตเชฐเซเชฃเชจ เชจเชฅเซ€ เชœเซ‹เชˆเชคเซเช‚, เชชเชฐเช‚เชคเซ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชฒเช–เชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชœเซ‹เชˆเช เช›เซ‡

  • เชถเซ‡เชกเซเชฏเซ‚เชฒ เชชเชฐ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชšเชฒเชพเชตเชตเซ€

  • เชธเซ‡เชตเชพเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซเช‚ เชธเชฐเชณ เช…เชชเชกเซ‡เชŸ

  • เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชกเซเชธเชฎเชพเช‚เชฅเซ€ เชธเซ‡เชตเชพเชจเซ‡ เชชเซเชจเชƒเชจเชฟเชฐเซเชฎเชพเชฃ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ

เช† เชธเซ‚เชšเชฟ เช…เช‚เชฆเชพเชœเชฟเชค เช›เซ‡ เช…เชจเซ‡ เชธเช‚เชญเชตเชคเชƒ เช–เซ‚เชฌ เชธเชšเซ‹เชŸ เชจเชฅเซ€. เช•เซ‡เชŸเชฒเชพเช• เชฎเซเชฆเซเชฆเชพ เชฌเชฆเชฒเชพเชฏเชพ, เช•เซ‡เชŸเชฒเชพเช• เชฎเซƒเชคเซเชฏเซ เชชเชพเชฎเซเชฏเชพ. เชฌเชงเซเช‚ เชฐเชพเชฌเซ‡เชคเชพ เชฎเซเชœเชฌ เช›เซ‡.

เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชฌเซ‡เชฒเซ‡เชฐเซเชŸเชฐเชจเซ‹ เช‡เชคเชฟเชนเชพเชธ เช† เชฐเซ€เชคเซ‡ เชถเชฐเซ‚ เชฅเชฏเซ‹.

เชœเชŸเชฟเชฒ เชšเซ‡เชคเชตเชฃเซ€เช“ เชธเชพเชฅเซ‡ เชธเชฐเชณ เช•เชพเชฐเซเชฏ. เช…เชฅเชตเชพ เชฌเซ‡เชฒเซ‡เชฐเซเชŸเชฐเชจเซ€ เชฐเชšเชจเชพเชจเซ‹ เช‡เชคเชฟเชนเชพเชธ

เชนเซเช‚ เช…เช‚เชคเชฎเชพเช‚ เชถเซเช‚ เชฅเชฏเซเช‚ เช…เชจเซ‡ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซเช‚ เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถ. (เชนเชพ, เช…เชฒเชฌเชคเซเชค, เช† เช…เช‚เชค เชจเชฅเซ€. เชชเซเชฐเซ‹เชกเช•เซเชŸ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชฎเชพเชŸเซ‡ เช˜เชฃเซ€ เชฏเซ‹เชœเชจเชพเช“ เช›เซ‡. เชนเซเช‚ เช†เชœเซ‡ เชœ เชฐเซ‹เช•เชพเชˆเชถ)

เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡?

เชคเชฎเซ‡ เชฒเซเช†เชฎเชพเช‚ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เซ‹ เช›เซ‹ เชœเซเชฏเชพเช‚ เชคเชฎเซ‡ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“ เชฎเซ‹เช•เชฒเซ‹ เช›เซ‹ (เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ, เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ, เชตเช—เซ‡เชฐเซ‡เชจเซ‡). เชคเชฎเซ‡ เชœเชตเชพเชฌเซ‹ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ‹ เช›เซ‹ เช…เชจเซ‡ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‹ เช›เซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเซ‹ เช›เซ‹. เชชเช›เซ€ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซ€ เชšเซ‡เชคเชตเชฃเซ€ เชšเชพเชฒเซ/เชฌเช‚เชง เช•เชฐเซ‹. เชคเชฎเซ‡ เช•เชจเซเชซเชฟเช—เชฐ เช•เชฐเซ‡เชฒ เชšเซ‡เชจเชฒเซ‹ (เชˆเชฎเซ‡เชฒ, เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ, เชธเซเชฒเซ‡เช•, เชตเช—เซ‡เชฐเซ‡) เชชเชฐ เชฌเซ‡เชฒเซ‡เชฐเซเชŸเชฐ เชชเซ‹เชคเซ‡ เชœ เชเช• เชธเซ‚เชšเชจเชพ เชฎเซ‹เช•เชฒเชถเซ‡. เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ เช…เช‚เชคเชฐเชพเชฒเซ‹ เชชเชฐ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช…เชจเซ‡... เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฌเชธ เชเชŸเชฒเซเช‚ เชœ)

เช‰เชฆเชพเชนเชฐเชฃ เชธเชพเชฅเซ‡ เชฌเชคเชพเชตเชตเชพเชจเซเช‚ เชถเซเชฐเซ‡เชทเซเช  เช›เซ‡:

-- @interval 10s
-- @name script1

local minRequestsRPS = 100

local log = require("log")
local ch1 = require("datasource.clickhouse.ch1")

local res, err = ch1.query("SELECT sum(requests) AS rps FROM some_table WHERE date = now()")
if err ~= nil then
    log.error("clickhouse 'ch1' query error: " .. err)
    return
end

local resultRPS = res[1].rps

if resultRPS < minResultRPS then
    alert.error("rps-min-limit", "Requests RPS are very small: " .. tostring(resultRPS))
else
    alert.success("rps-min-limit", "Requests RPS ok")
end 

เช…เชนเชฟเชฏเชพเช‚ เชถเซเช‚ เชฅเช‡ เชฐเชนเซเชฏเซเช‚ เช›เซ‡:

  • เช…เชฎเซ‡ เชธเซ‚เชšเชตเซ€เช เช›เซ€เช เช•เซ‡ เช† เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฆเชฐ 10 เชธเซ‡เช•เชจเซเชกเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชตเซ€ เชœเซ‹เชˆเช

  • เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซเช‚ เชจเชพเชฎ เชธเซ‚เชšเชตเซ‹ (เชเชชเซ€เช†เชˆ เชฎเชพเชŸเซ‡, เชฒเซ‹เช—เชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเชพเชŸเซ‡, เชชเชฐเซ€เช•เซเชทเชฃเซ‹เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡)

  • เช†เช‰เชŸเชชเซเชŸ เชฒเซ‹เช— เชฎเชพเชŸเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ‡ เชœเซ‹เชกเซ‹

  • เชจเชพเชฎ เชธเชพเชฅเซ‡ เช•เซเชฒเชฟเช•เชนเชพเช‰เชธเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ‡ เชœเซ‹เชกเซ‹ ch1 (เช•เชจเซ‡เช•เซเชถเชจ เชชเซ‹เชคเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡)

  • เช•เซเชฒเชฟเช•เชนเชพเช‰เชธเชจเซ‡ เชตเชฟเชจเช‚เชคเซ€ เชฎเซ‹เช•เชฒเซ‹

  • เชญเซ‚เชฒเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเซ‡ เชฒเซ‹เช—เชฎเชพเช‚ เชเช• เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเซ‹

  • เช•เซเชตเซ‡เชฐเซ€ เชชเชฐเชฟเชฃเชพเชฎเชจเซ€ เชคเซเชฒเชจเชพ เชธเชคเชค เชธเชพเชฅเซ‡ เช•เชฐเซ‹ (เชœเซ€เชตเช‚เชค เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เช…เชฎเซ‡ เช† เชฎเซ‚เชฒเซเชฏ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ€เช เช›เซ€เช, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚เชฅเซ€)

  • ID เชธเชพเชฅเซ‡ เชšเซ‡เชคเชตเชฃเซ€เชจเซ‡ เชธเช•เซเชทเชฎ เช…เชฅเชตเชพ เช…เช•เซเชทเชฎ เช•เชฐเซ‹ rps-min-limit

  • เชœเซ‹ เชšเซ‡เชคเชตเชฃเซ€เชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชฌเชฆเชฒเชพเชˆ เช—เชˆ เชนเซ‹เชฏ เชคเซ‹ เชคเชฎเชจเซ‡ เชเช• เชธเซ‚เชšเชจเชพ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ‡

เช‰เชฆเชพเชนเชฐเชฃ เชเช•เชฆเชฎ เชธเชฐเชณ เช…เชจเซ‡ เชธเชฎเชœเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช…เชฒเชฌเชคเซเชค, เชตเชพเชธเซเชคเชตเชฟเช• เชœเซ€เชตเชจเชฎเชพเช‚ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เช–เซ‚เชฌ เชฒเชพเช‚เชฌเซ€ เช…เชจเซ‡ เชœเชŸเชฟเชฒ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชฎเซ‚เช‚เชเชตเชฃเชฎเชพเช‚ เชชเชกเชตเซเช‚ เช…เชจเซ‡ เชญเซ‚เชฒเซ‹ เช•เชฐเชตเซ€ เชธเชฐเชณ เช›เซ‡.

เชคเซ‡เชฅเซ€, เชคเชพเชฐเซเช•เชฟเช• เช‡เชšเซเช›เชพ เชชเชฐเชฟเชชเช•เซเชต เชฅเชˆ เช—เชˆ เช›เซ‡ - เชคเชฎเชพเชฐเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชฎเชพเชŸเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชฒเช–เชตเชพเชฎเชพเช‚ เชธเชฎเชฐเซเชฅ เชฅเชตเชพ เชฎเชพเชŸเซ‡. เช…เชจเซ‡ เชธเช‚เชธเซเช•เชฐเชฃ v0.4.0 เชฎเชพเช‚ เช† เชฆเซ‡เช–เชพเชฏเซเช‚.

เชชเชฐเซ€เช•เซเชทเชฃ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹

เช‰เชชเชฐเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เช…เชฎเชพเชฐเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฎเชพเชŸเซ‡เชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เชชเชฐเซ€เช•เซเชทเชฃ:

-- @test script1
-- @name script1-test

test = require('test')

local resp = {
    {
        rps = 10
    }
} 

test.datasource('clickhouse.ch1').on('query', 'SELECT sum(requests) AS rps FROM some_table WHERE date = now()').response(resp)

test.alert().assertCalled('error', 'rps-min-limit', 'Requests RPS are very small: 10')
test.alert().assertNotCalled('success', 'rps-min-limit', 'Requests RPS ok')

เชชเช—เชฒเชพเช‚เช“:

  • เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซเช‚ เชจเชพเชฎ เชธเซ‚เชšเชตเซ‹ เช•เซ‡ เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡

  • เชชเชฐเซ€เช•เซเชทเชฃ เชจเชพเชฎ (เชฒเซ‹เช— เชฎเชพเชŸเซ‡)

  • เชชเชฐเซ€เช•เซเชทเชฃ เชฎเซ‹เชกเซเชฏเซเชฒ เชœเซ‹เชกเซ‹

  • เช…เชฎเซ‡ เช•เชนเซ€เช เช›เซ€เช เช•เซ‡ เช•เซเชฒเชฟเช•เชนเชพเช‰เชธเชจเซ‡ เชšเซ‹เช•เซเช•เชธ เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡ เช•เชฏเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช†เชชเชตเซเช‚ เชœเซ‹เชˆเช ch1

  • เช…เชฎเซ‡ เชคเชชเชพเชธเซ€เช เช›เซ€เช เช•เซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชธเช‚เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชšเซ‡เชคเชตเชฃเซ€ (เชญเซ‚เชฒ) rps-min-limit เช•เซ‰เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€

  • เชคเชชเชพเชธเซ‹ เช•เซ‡ rps-min-limit เชšเซ‡เชคเชตเชฃเซ€ เช…เช•เซเชทเชฎ เชจเชฅเซ€ (เชธเชซเชณเชคเชพ)

เชฌเซ‡เชฒเชฐเซเชŸเชฐ เชฌเซ€เชœเซเช‚ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‡?

เชนเซเช‚ เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ, เชฎเชพเชฐเชพ เชฎเชคเซ‡, เชฌเซ‡เชฒเซ‡เชฐเซเชŸเชฐ เช•เซเชถเชณเชคเชพเชจเซ‡ เชธเซเชชเชฐเซเชถ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถ. เชคเชฎเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐ เชฌเชงเซเช‚ เชตเชฟเช—เชคเชตเชพเชฐ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ https://balerter.com

  • เชชเชพเชธเซ‡เชฅเซ€ เชกเซ‡เชŸเชพ เชฎเซ‡เชณเชตเซ‹

    • เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ

    • เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ

    • MySQL

    • เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ

    • เชฒเซ‹เช•เซ€

  • เชšเซ‡เชจเชฒเซ‹เชจเซ‡ เชธเซ‚เชšเชจเชพเช“ เชฎเซ‹เช•เชฒเซ‹

    • เชถเชพเช‚เชค

    • เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ

    • syslog

    • เชธเซ‚เชšเชฟเชค เช•เชฐเซ‹ (เชคเชฎเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ UI เชธเซ‚เชšเชจเชพเช“)

    • เช‡เชฎเซ‡เช‡เชฒ

    • เชฎเชคเชญเซ‡เชฆ

  • เชคเชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชจเชพ เช†เชงเชพเชฐเซ‡ เช—เซเชฐเชพเชซ เชฌเชจเชพเชตเซ‹, S3 เชธเซเชธเช‚เช—เชค เชธเซเชŸเซ‹เชฐเซ‡เชœ เชชเชฐ เช›เชฌเซ€ เช…เชชเชฒเซ‹เชก เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเซ‚เชšเชจเชพเช“ เชธเชพเชฅเซ‡ เชœเซ‹เชกเซ‹ (เชšเชฟเชคเซเชฐเซ‹ เชธเชพเชฅเซ‡ เช‰เชฆเชพเชนเชฐเชฃ)

  • เชคเชฎเชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชตเชšเซเชšเซ‡ เชกเซ‡เชŸเชพเชจเซเช‚ เชตเชฟเชจเชฟเชฎเชฏ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ - เชตเซˆเชถเซเชตเชฟเช• เช•เซ€/เชฎเซ‚เชฒเซเชฏ เชธเช‚เช—เซเชฐเชน

  • เชฒเซเช†เชฎเชพเช‚ เชคเชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชฒเช–เซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เช•เชฐเซ‹ (เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡, เชฒเซเช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ json, csv เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเซ€ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡)

  • เชคเชฎเชพเชฐเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชฎเชพเช‚เชฅเซ€ HTTP เชตเชฟเชจเช‚เชคเซ€เช“ เชฎเซ‹เช•เชฒเซ‹ (เช…เชจเซ‡ เช…เชฒเชฌเชคเซเชค, เชชเซเชฐเชคเชฟเชธเชพเชฆเซ‹ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ‹)

  • API เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ (เช…เชฎเซ‡ เชˆเชšเซเช›เซ€เช เช›เซ€เช เชคเซ‡เชŸเชฒเซเช‚ เช•เชพเชฐเซเชฏเชพเชคเซเชฎเช• เชจเชฅเซ€)

  • เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชจเชฟเช•เชพเชธ เช•เชฐเซ‡ เช›เซ‡

เชคเชฎเซ‡ เชฌเซ€เชœเซเช‚ เชถเซเช‚ เช•เชฐเชตเชพ เชธเช•เซเชทเชฎ เชฌเชจเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹?

เชคเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เช…เชจเซ‡ เช…เชฎเซ‡ เชธเชฟเชจเซเชŸเซ‡เช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเชพ เชฒเซ‹เชจเซเชšเชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช‡เชšเซเช›เซ€เช เช›เซ€เช เช•เซเชฐเซ‹เชจ. เช† เชตเชฐเซเชเชจ v1.0.0 เชชเชนเซ‡เชฒเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡

เชนเซเช‚ เชตเชงเซ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เช…เชจเซ‡ เชธเซ‚เชšเชจเชพ เชตเชฟเชคเชฐเชฃ เชšเซ‡เชจเชฒเซ‹เชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เซ‹เชˆ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ MongoDB เชšเซ‚เช•เซ€ เชœเชถเซ‡. เช•เซ‡เชŸเชฒเชพเช• เชฎเชพเชŸเซ‡ เชธเซเชฅเชฟเชคเชฟเชธเซเชฅเชพเชชเช• เชถเซ‹เชง. เชคเชฎเชพเชฐเชพ เชฎเซ‹เชฌเชพเช‡เชฒ เชซเซ‹เชจ เชชเชฐ SMS เชฎเซ‹เช•เชฒเซ‹ เช…เชจเซ‡/เช…เชฅเชตเชพ เช•เซ‰เชฒ เช•เชฐเซ‹. เช…เชฎเซ‡ เชซเช•เซเชค เชซเชพเช‡เชฒเซ‹เชฎเชพเช‚เชฅเซ€ เชœ เชจเชนเซ€เช‚, เชชเชฃ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚เชฅเซ€ เชชเชฃ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชธเช•เซเชทเชฎ เชฌเชจเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช. เช…เช‚เชคเซ‡, เช…เชฎเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฎเชพเชŸเซ‡ เชตเชงเซ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเซˆเชคเซเชฐเซ€เชชเซ‚เชฐเซเชฃ เชตเซ‡เชฌเชธเชพเช‡เชŸ เช…เชจเซ‡ เชตเชงเซ เชธเชพเชฐเชพ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช‡เชšเซเช›เซ€เช เช›เซ€เช.

เช•เซ‹เชˆเชจเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เช•เช‚เชˆเช• เช–เซ‚เชŸเซ‡ เช›เซ‡) เช…เชนเซ€เช‚ เช…เชฎเซ‡ เชชเซเชฐเชพเชฅเชฎเชฟเช•เชคเชพเช“เชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเซเชฆเชพเชฏเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ€เช เช›เซ€เช. เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเซเชฆเชพเชฏเชจเซ€ เชฎเชฆเชฆ เชฎเชพเชŸเซ‡

เช…เช‚เชคเชฎเชพ

เช…เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช เชฌเซ‡เชฒเซ‡เชฐเซเชŸเชฐ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชคเซ‡ เช›เซ‡เชฒเซเชฒเชพ เช˜เชฃเชพ เชธเชฎเชฏเชฅเซ€ เช›เซ‡. เชกเชเชจเชฌเช‚เชง เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เช†เชชเชฃเซ€ เชฎเชพเชจเชธเชฟเช• เชถเชพเช‚เชคเชฟเชจเซเช‚ เชฐเช•เซเชทเชฃ เช•เชฐเซ‡ เช›เซ‡. เชนเซเช‚ เช†เชถเชพ เชฐเชพเช–เซเช‚ เช›เซเช‚ เช•เซ‡ เช† เช•เชพเชฐเซเชฏ เชฌเซ€เชœเชพ เช•เซ‹เชˆเชจเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชฅเชถเซ‡.

เช…เชจเซ‡ เชคเชฎเชพเชฐเชพ เช…เช‚เช• เช…เชจเซ‡ เชชเซ€เช†เชฐ เชธเชพเชฅเซ‡ เชธเซเชตเชพเช—เชค เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹