āĻšāĻžāĻ āϏāĻŦ! āĻāĻŽāĻžāϰ āĻā§āϰā§āϏ āĻāĻžāĻā§āϰ āĻ āĻāĻļ āĻšāĻŋāϏāĻžāĻŦā§, āĻāĻŽāĻŋ āϝā§āĻŽāύ āĻāĻāĻāĻŋ āĻāϰā§āϝāĻŧāĻž āĻā§āϞāĻžāĻāĻĄ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽā§āϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻžāĻā§āϞāĻŋ āύāĻŋāϝāĻŧā§ āĻāĻŦā§āώāĻŖāĻž āĻāϰāĻāĻŋāϞāĻžāĻŽ . āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āĻŦāĻŋāĻāĻŋāύā§āύ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻāĻāύāĻ āĻāĻāύāĻ āĻāĻ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āĻŦāϰāĻ āĻŦāĻŋāϏā§āϤā§āϤ āĻĒāϰāĻŋāĻāĻžāĻ āĻžāĻŽā§ āϏāĻš āĻāĻĒāύāĻžāϰ āĻā§āϞāĻžāĻāĻĄ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ āĻāĻ āύāĻŋāĻŦāύā§āϧā§, āĻāĻŽāĻŋ āĻāĻ āϧāϰāύā§āϰ āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϏā§āĻĨāĻžāĻĒāύā§āϰ āĻ āĻāĻŋāĻā§āĻāϤāĻž āĻļā§āϝāĻŧāĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻāĨ¤

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

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

āĻāĻĒāύāĻžāϰ āĻšāĻžāϤ āĻĻāĻŋāϝāĻŧā§ āĻŦāĻžāĻĄāĻŧāĻžāϤ⧠āĻļāĻŋāĻā§āύ
āĻŽāĻžāĻāĻāϏāĻāĻŋāĻāĻāϞ āĻāĻŦāĻ āĻā§āϞāĻŋāĻ āĻšāĻžāĻāϏ
āĻāĻāĻāĻŋ āĻŦā§āϤāĻžāĻŽā§ āĻā§āϞāĻŋāĻ āĻāϰ⧠āĻāĻ āĻāĻžāϤā§āϝāĻŧ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻāĻā§, āĻāĻāĻŋāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύāĻā§ āĻšā§āϝāĻžāύā§āĻĄā§āϞāĻā§āϞāĻŋāϰ āϏāĻžāĻšāĻžāϝā§āϝ⧠āĻā§āĻāĻžāĻŦā§ āϤā§āϞāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻā§ āĻ āĻĒāϰā§āϰ āϏāĻžāĻĨā§ āĻāĻā§āĻā§āϤ āĻāϰāϤ⧠āĻšāĻŦā§ āϤāĻž āĻļāĻŋāĻāϤ⧠āĻšāĻŦā§āĨ¤
Yandex.Cloud āĻāĻāĻžāύ⧠āĻāĻŽāĻžāĻĻā§āϰ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāĻŦā§, āϝāĻž L3 āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ, ClickHouse āĻāĻŦāĻ MySQL āĻĒāϰāĻŋāĻāĻžāϞāĻŋāϤ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻšāĻŋāϏā§āĻŦā§ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋāĻā§āϞāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽāĻāĻŋ āϏāĻŦāĻāĻŋāĻā§āĻā§ āĻāĻāĻāĻŋ āĻāĻžāϰā§āϝāĻāϰ⧠āĻ āĻŦāϏā§āĻĨāĻžāϝāĻŧ āύāĻŋāϝāĻŧā§ āĻāϏāĻž āĻĒāϰā§āϝāύā§āϤ āĻ āĻĒā§āĻā§āώāĻž āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻŽāĻŋ āύāĻŋāĻŦāύā§āϧāύ āĻāϰā§āĻāĻŋ, āύāĻŋāĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻā§āϞāĻžāĻāĻĄ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻŦāĻŋāϞāĻŋāĻ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋāĨ¤ āĻāϰ āĻĒāϰā§, āĻāĻŽāĻŋ āĻā§āϞāĻžāĻāĻĄā§ āĻāĻŋāϝāĻŧā§āĻāĻŋāϞāĻžāĻŽ āĻāĻŦāĻ āύā§āϝā§āύāϤāĻŽ āϏā§āĻāĻŋāĻāϏ āϏāĻš MySQL āĻāĻŦāĻ ClickHouse āĻā§āϞāĻžāϏā§āĻāĻžāϰāĻā§āϞāĻŋ āĻāϤā§āĻĨāĻžāĻĒāύ āĻāϰā§āĻāĻŋāĨ¤ āϤāĻžāϰāĻž āϏāĻā§āϰāĻŋāϝāĻŧ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ āĻ āĻĒā§āĻā§āώāĻž āĻāϰā§āύāĨ¤


āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāĻŦāĻ āϞāĻāĻāύ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻŋāϤ⧠āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻžāϰ āĻāĻĨāĻžāĻ āĻŽāύ⧠āϰāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻŽāĻŋ āĻāĻāĻžāύ⧠āĻŦāĻŋāĻļāĻĻā§ āϝāĻžāĻŦ āύāĻž - āĻāύā§āĻāĻžāϰāĻĢā§āϏ⧠āϏāĻŦāĻāĻŋāĻā§ āĻŦā§āĻļ āϏā§āĻĒāώā§āĻāĨ¤
āĻ
-āϏā§āĻĒāώā§āĻ āĻŦāĻŋāĻŦāϰāĻŖ āĻāĻŋāϞ āϝ⧠āĻāĻ āĻĄāĻžāĻāĻžāĻŦā§āϏāĻā§āϞāĻŋāϤ⧠āĻ
āύā§āĻ āĻšā§āϏā§āĻ āϰāϝāĻŧā§āĻā§ āϝāĻž āϤāĻžāĻĻā§āϰ āĻĻā§āώ āϏāĻšāύāĻļā§āϞāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, Grafana āĻāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰ⧠āĻāĻŽāύ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻāύā§āϝ āĻ āĻŋāĻ āĻāĻāĻāĻŋ āĻšā§āϏā§āĻ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ āĻĻā§āϰā§āĻ āĻĒāĻĄāĻŧāĻž āĻŽā§āĻ āĻāĻŽāĻžāĻā§ āĻāĻāĻāĻž āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ⧠āύāĻŋāϝāĻŧā§ āĻā§āϞāĨ¤ āĻĻā§āĻāĻž āϝāĻžāĻā§āĻā§ āϝ⧠āĻĢāϰā§āĻŽā§āϰ āĻāĻāĻāĻŋ āĻšā§āϏā§āĻ c-<cluster_id>.rw.mdb.yandexcloud.net āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻāĻāĻĄāĻŋ āϏāĻš āĻŦāϰā§āϤāĻŽāĻžāύ āϏāĻā§āϰāĻŋāϝāĻŧ āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻŽāĻžāϏā§āĻāĻžāϰ āĻšā§āϏā§āĻā§ āĻŽāĻžāύāĻāĻŋāϤā§āϰāĨ¤ āϏā§āĻāĻžāĻ āĻāĻŽāϰāĻž āĻā§āϰāĻžāĻĢāύāĻžāĻā§ āĻĻā§āĻŦāĨ¤
āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ
āĻāĻāύ āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻĒāĻžāϞāĻžāĨ¤ āĻāϞā§āύ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āϏā§āĻ āĻāĻĒ āĻāϰāĻž āϝāĻžāĻ, āϝāĻžāϰ āĻŽāϧā§āϝ⧠āĻĨāĻžāĻāĻŦā§ Linux āĻāĻŦāĻ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āĻšāĻžāϤ āĻĻāĻŋāϝāĻŧā§ āĻāϰ āĻāĻĒāϰ āĻā§āϰāĻžāĻĢāĻžāύāĻž āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻŦāĨ¤


āĻāϏā§āύ ssh āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻāϝā§āĻ āĻāϰāĻŋ āĻāĻŦāĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĒā§āϝāĻžāĻā§āĻāĻā§āϞāĻŋ āĻāύāϏā§āĻāϞ āĻāϰāĻŋāĨ¤
sudo apt-get install -y apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/enterprise/deb stable main"
sudo apt-get update
sudo apt-get install -y grafana-enterprise
āĻāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž systemctl āĻāϰ āĻ āϧā§āύ⧠Grafana āĻļā§āϰ⧠āĻāϰāĻŦ āĻāĻŦāĻ ClickHouse āĻāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϞāĻžāĻāĻāύāĻāĻŋ āĻāύāϏā§āĻāϞ āĻāϰāĻŦ (āĻšā§āϝāĻžāĻ, āĻāĻāĻŋ āĻŽā§āϞāĻŋāĻ āĻĒā§āϝāĻžāĻā§āĻā§ āϏāϰāĻŦāϰāĻžāĻš āĻāϰāĻž āĻšāϝāĻŧ āύāĻž)āĨ¤
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasourceāĻāĻāĻāĻŋ āϏāĻšāĻ āĻāĻĻā§āĻļ āϏāĻā§āĻā§ āϝ⧠āĻĒāϰ⧠āϏāĻŦāĻāĻŋāĻā§
sudo service grafana-server startāĻāĻŽāϰāĻž āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ āĻļā§āϰ⧠āĻāϰāĻŦāĨ¤ āĻāĻāύ āĻŦā§āϰāĻžāĻāĻāĻžāϰ⧠āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύā§āϰ āĻŦāĻžāĻšā§āϝāĻŋāĻ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāύāĻžāϝāĻŧ āĻĄā§āϰāĻžāĻāĻ āĻāϰāĻž, āĻĒā§āϰā§āĻ 3000 āĻāϞā§āϞā§āĻ āĻāϰāĻž āĻāĻŦāĻ āϏā§āύā§āĻĻāϰ UI āĻā§āϰāĻžāĻĢāύāĻž āĻĻā§āĻāĻž āϏāĻŽā§āĻāĻŦ āĻšāĻŦā§āĨ¤

āϤāĻŦā§ āϤāĻžāĻĄāĻŧāĻžāĻšā§āĻĄāĻŧā§ āĻāϰāĻŦā§āύ āύāĻž, Grafana āϏā§āĻ āĻāĻĒ āĻāϰāĻžāϰ āĻāĻā§, āĻāĻĒāύāĻŋ āϏā§āĻāĻŋāĻāϏ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ MySQL āĻāϰ āĻĒāĻĨ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāϤ⧠āĻā§āϞāĻŦā§āύ āύāĻžāĨ¤
āĻā§āϰāĻžāĻĢāĻžāύāĻž āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞāĻāĻŋāϤ⧠āϰāϝāĻŧā§āĻā§ /etc/grafana/grafana.ini. āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āϞāĻžāĻāύ āĻāĻ āĻŽāϤ āĻĻā§āĻāĻžāϝāĻŧ:
;url =āĻāĻŽāϰāĻž āĻšā§āϏā§āĻāĻā§ āĻŽāĻžāĻāĻāϏāĻāĻŋāĻāĻāϞ āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠āĻĒā§āϰāĻāĻžāĻļ āĻāϰāĻŋāĨ¤ āĻāĻĒāϰā§āϰ āĻāĻŦāĻŋāϤ⧠āĻā§āϰāĻžāĻĢāĻžāύāĻž āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻ āĻĢāĻžāĻāϞāĻāĻŋāϤ⧠āϞāĻāĻāύ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϰāϝāĻŧā§āĻā§, āϝāĻž āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§ āĻāĻāϝāĻŧāĻ āϏāĻŽāĻžāύ admin.
āĻāĻĒāύāĻŋ sed āĻāĻŽāĻžāύā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
sudo sed -i "s#.*;url =.*#url = mysql://${MYSQL_USERNAME}:${MYSQL_PASSWORD}@${MYSQL_CLUSTER_URI}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${GRAFANA_USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${GRAFANA_PASSWORD}#" /etc/grafana/grafana.ini
āĻāĻāĻž āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ!
sudo service grafana-server restartāĻāĻāύ Grafana UI āĻ, āĻāĻŽāϰāĻž DataSource āĻšāĻŋāϏāĻžāĻŦā§ ClickHouse āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻŦāĨ¤
āĻāĻŽāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϏā§āĻāĻŋāĻāϏā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻžāϰā§āϝāĻāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻ āϰā§āĻāύ āĻāϰāϤ⧠āĻĒā§āϰā§āĻāĻŋ:

āĻāĻŽāĻŋ URL āĻšāĻŋāϏā§āĻŦā§ āĻĻāĻŋāϝāĻŧā§āĻāĻŋ https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
āϏāĻŽāϏā§āϤ ! āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻā§ CH āĻāĻŦāĻ MySQL āĻāϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻā§āϤ āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ āϏāĻš āĻāĻāĻāĻŋ āĻāĻžāĻ āĻāϰāĻž āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āϰāϝāĻŧā§āĻā§ā§ˇ āĻāĻĒāύāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻā§āϞāĻŋāĻāĻšāĻžāĻāϏ⧠āĻĄā§āĻāĻžāϏā§āĻ āĻāĻĒāϞā§āĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻĄā§āϝāĻžāĻļāĻŦā§āϰā§āĻĄ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎ āϝāĻžāĻāĻšā§āĻ, āĻāĻŽāϰāĻž āĻāĻāύāĻ āĻāĻŽāĻžāĻĻā§āϰ āϞāĻā§āώā§āϝ⧠āĻĒā§āĻāĻāĻžāϤ⧠āĻĒāĻžāϰāĻŋāύāĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŖāĻžāĻā§āĻ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻŋāύāĻŋāĨ¤
āĻāϰāĻ
Yandex.Cloud āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύā§āϰ āĻāĻāĻāĻŋ āĻĄāĻŋāϏā§āĻ āĻāĻŽā§āĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ āĻāĻŦāĻ āĻāĻāĻŋāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻĒāĻāύā§āĻĻ āĻŽāϤ⧠āĻ āύā§āĻāĻā§āϞāĻŋ āĻ āĻāĻŋāύā§āύ āĻŽā§āĻļāĻŋāύ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻ āĻāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦ āĻ āĻŋāĻ āĻāĻŋ. āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻāĻāĻžāĻŦā§ āĻāĻŋāϤā§āϰāĻāĻŋ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāϤā§, āĻā§āϞāĻāĻŋ āύāĻŋāύ HashiCorp āĻĨā§āĻā§ āĻāĻāĻŋ āĻāĻŽā§āĻ āϤā§āϰāĻŋāϰ āĻāύā§āϝ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āϏāĻš āĻāĻāĻāĻŋ json āĻĢāĻžāĻāϞ āĻāύāĻĒā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āύā§āϝāĻŧāĨ¤
āĻāĻŽāĻžāĻĻā§āϰ json āĻĢāĻžāĻāϞ⧠āĻĻā§āĻāĻŋ āĻŦā§āϞāĻ āĻĨāĻžāĻāĻŦā§: āύāĻŋāϰā§āĻŽāĻžāϤāĻž āĻāĻŦāĻ āĻĒā§āϰāĻāĻŋāĻāĻžāϰāĨ¤ āĻĒā§āϰāĻĨāĻŽ āĻŦā§āϞāĻāĻāĻŋ āĻāĻŋāϤā§āϰā§āϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻā§āϞāĻŋāĻā§ āĻāĻāĻāĻŋ āϏāϤā§āϤāĻž āĻšāĻŋāϏāĻžāĻŦā§ āĻŦāϰā§āĻŖāύāĻž āĻāϰ⧠āĻāĻŦāĻ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āϏāĻžāĻŽāĻā§āϰ⧠āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻŋ āĻĒā§āϰāĻŖ āĻāϰāĻžāϰ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻŦāϰā§āĻŖāύāĻž āĻāϰā§āĨ¤
āύāĻŋāϰā§āĻŽāĻžāϤāĻž
{
"builders": [
{
"type": "yandex",
"endpoint": "{{user `endpoint`}}",
"folder_id": "<folder_id>",
"subnet_id": "{{user `subnet_id`}}",
"zone": "{{user `zone`}}",
"labels": {},
"use_ipv4_nat": true,
"use_internal_ip": false,
"service_account_key_file": "<service_account_key_file>",
"image_name": "grafana-{{timestamp}}",
"image_family": "grafana",
"image_labels": {},
"image_description": "GRAFANA",
"source_image_family": "ubuntu-1804-lts",
"disk_size_gb": 3,
"disk_type": "network-hdd",
"ssh_username": "ubuntu"
}
],
...
}āĻāĻ āĻā§āĻŽāĻĒā§āϞā§āĻā§, āĻāĻĒāύāĻžāĻā§ āĻā§āϞāĻžāĻāĻĄā§āϰ āϏā§āĻ āĻŦāĻŋāĻāĻžāĻā§āϰ āĻāĻāĻĄā§āύā§āĻāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϏā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻāĻŽā§āĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāĻžāύ, āϏā§āĻāϏāĻžāĻĨā§ āĻāĻ āĻŦāĻŋāĻāĻžāĻā§ āĻĒā§āϰā§āĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻĒāϰāĻŋāώā§āĻŦāĻž āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻĨā§āĻā§ āĻā§āĻā§āϞāĻŋāϰ āϏāĻžāĻšāĻžāϝā§āϝ⧠āĻĢāĻžāĻāϞā§āϰ āĻĒāĻĨāĨ¤ āĻāĻĒāύāĻŋ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻŦāĻŋāĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āĻāĻāĻžāϰ⧠āĻĒāϰāĻŋāώā§āĻŦāĻž āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻāĻŦāĻ āĻā§ āϤā§āϰāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ .
āĻāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻŦāϞ⧠āϝ⧠āĻĄāĻŋāϏā§āĻ āĻāĻŽā§āĻ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻšāĻŦā§ ubuntu-1804-lts, āĻāĻŋāϤā§āϰ āĻĒāϰāĻŋāĻŦāĻžāϰ⧠āĻāĻĒāϝā§āĻā§āϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻŦāĻŋāĻāĻžāĻā§ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ GRAFANA āύāĻžāĻŽā§āϰ āύāĻŋāĻā§ grafana-{{timestamp}}.
āĻŦāĻŋāϧāĻžāύāĻāĻžāϰā§
āĻāĻāύ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āϰ āĻāϰāĻ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āĻ āĻāĻļā§āϰ āĻāύā§āϝāĨ¤ āĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧāĻžāĻā§āϞāĻŋāϰ āĻā§āϰāĻŽ āĻŦāϰā§āĻŖāύāĻž āĻāϰāĻŦā§ āϝāĻž āĻāĻāĻāĻŋ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ⧠āĻāĻāĻāĻŋ āĻĄāĻŋāϏā§āĻ āĻāĻŋāϤā§āϰā§āϰ āĻŽāϧā§āϝ⧠āϏā§āĻĨāĻŋāϰ āĻāϰāĻžāϰ āĻāĻā§ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāϤ⧠āĻšāĻŦā§ā§ˇ
{
...,
"provisioners": [
{
"type": "shell",
"pause_before": "5s",
"scripts": [
"prepare-ctg.sh"
]
},
{
"type": "file",
"source": "setup.sh",
"destination": "/opt/grafana/setup.sh"
},
{
"type": "shell",
"execute_command": "sudo {{ .Vars }} bash '{{ .Path }}'",
"pause_before": "5s",
"scripts": [
"install-packages.sh",
"grafana-setup.sh",
"run-setup-at-reboot.sh"
]
}
]
}āĻāĻāĻžāύā§, āϏāĻŽāϏā§āϤ āĻā§āϰāĻŋāϝāĻŧāĻžāĻā§ 3āĻāĻŋ āĻĒāϰā§āϝāĻžāϝāĻŧā§ āĻŦāĻŋāĻāĻā§āϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻĒā§āϰāĻĨāĻŽ āĻĒāϰā§āϝāĻžāϝāĻŧā§, āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻžāύ⧠āĻšāϝāĻŧ āϝāĻž āĻāĻāĻāĻŋ āϏāĻšāĻžāϝāĻŧāĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
āĻĒā§āϰāϏā§āϤā§āϤ-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafanaāĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāϰā§āϝāĻžāϝāĻŧā§, āĻāĻŽāϰāĻž āĻāĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϰāĻžāĻāĻŋ, āϝāĻž āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āĻļā§āϰ⧠āĻāϰāĻžāϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āĻāĻžāϞāĻžāύā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāĻŦā§āĨ¤ āĻāĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§āϞāĻŋāĻā§ Grafana āĻāϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āϏā§āĻ āĻāϰāϤ⧠āĻāĻŦāĻ āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻāϰāĻŦā§āĨ¤
setup.sh:
#!/bin/bash
CLUSTER_ID="<cluster_id>"
USERNAME="<username>"
PASSWORD="<password>"
sudo sed -i "s#.*;url =.*#url = mysql://${USERNAME}:${PASSWORD}@c-${CLUSTER_ID}.rw.mdb.yandexcloud.net#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${PASSWORD}#" /etc/grafana/grafana.ini
sudo service grafana-server restartāĻāϰ āĻĒāϰā§, 3āĻāĻŋ āĻāĻŋāύāĻŋāϏ āĻāϰāϤ⧠āĻšāĻŦā§:
1) āĻĒā§āϝāĻžāĻā§āĻ āĻāύāϏā§āĻāϞ āĻāϰā§āύ
2) Systemctl āĻāϰ āĻ
āϧā§āύ⧠Grafana āĻļā§āϰ⧠āĻāϰā§āύ āĻāĻŦāĻ ClickHouse āĻĒā§āϞāĻžāĻāĻāύ āĻāύāϏā§āĻāϞ āĻāϰā§āύ
3) āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āĻāĻžāϞ⧠āĻāϰāĻžāϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§āĻ āĻāĻžāϞāĻžāύā§āϰ āĻāύā§āϝ setup.sh āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĻāĻŋāĻā§ āϏāĻžāϰāĻŋāϤ⧠āϰāĻžāĻā§āύāĨ¤
install-packages.sh:
#!/bin/bash
sudo systemd-run --property='After=apt-daily.service apt-daily-upgrade.service' --wait /bin/true
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/enterprise/deb stable main"
sudo apt-get update
sudo apt-get install -y grafana-enterprise grafana-setup.sh:
#!/bin/bash
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasourcerun-setup-at-reboot.sh:
#!/bin/bash
chmod +x /opt/grafana/setup.sh
cat > /etc/cron.d/first-boot <<EOF
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
@reboot root /bin/bash /opt/grafana/setup.sh > /var/log/yc-setup.log 2>&1
EOF
chmod +x /etc/cron.d/first-boot;āĻāĻāύ āĻĒā§āϝāĻžāĻāĻžāϰ āĻāĻžāϞāĻžāύ⧠āĻāĻŦāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒāĻžāϰā§āĻāĻŋāĻļāύ⧠āĻāĻāĻāĻĒā§āĻ āĻāĻŽā§āĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻŦāĻžāĻāĻŋ āĻāĻā§āĨ¤ āĻāĻāĻāĻŋ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻĒāύāĻŋ āĻāĻāĻŋāĻā§ āĻŦā§āĻ āĻĄāĻŋāϏā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ āϰā§āĻĄāĻŋāĻŽā§āĻĄ āĻā§āϰāĻžāĻĢāĻžāύāĻž āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ āĻĒāĻžāύāĨ¤


āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ āĻā§āϰā§āĻĒ āĻāĻŦāĻ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ
āĻāĻāĻŦāĻžāϰ āĻāĻāĻāĻŋ āĻĄāĻŋāϏā§āĻ āĻāĻŋāϤā§āϰ āĻĒāĻžāĻāϝāĻŧāĻž āĻā§āϞ⧠āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻ āύā§āĻāĻā§āϞāĻŋ āĻ āĻāĻŋāύā§āύ āĻā§āϰāĻžāĻĢāĻžāύāĻž āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ, āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻā§āϰā§āĻĒ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ Yandex.Cloud āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽā§, āĻāĻ āĻļāĻŦā§āĻĻāĻāĻŋ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύāĻā§āϞāĻŋāϰ āĻŽāĻŋāϞāύāĻā§ āĻŦā§āĻāĻžāϝāĻŧ āϝā§āĻā§āϞāĻŋāϰ āĻāĻāĻ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϰāϝāĻŧā§āĻā§āĨ¤ āĻāĻāĻāĻŋ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ āĻā§āϰā§āĻĒ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻ āĻā§āϰā§āĻĒā§āϰ āϏāĻŽāϏā§āϤ āĻŽā§āĻļāĻŋāύā§āϰ āĻĒā§āϰā§āĻā§āĻāĻžāĻāĻĒ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ⧠āĻā§āϰā§āĻĒā§āϰ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞāĻŋ (āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āϏāĻā§āϰāĻŋāϝāĻŧ āĻŽā§āĻļāĻŋāύā§āϰ āϏāϰā§āĻŦāύāĻŋāĻŽā§āύ āĻāĻŦāĻ āϏāϰā§āĻŦāĻžāϧāĻŋāĻ āϏāĻāĻā§āϝāĻž)āĨ¤ āϝāĻĻāĻŋ āĻŦāϰā§āϤāĻŽāĻžāύ āϏāĻāĻā§āϝāĻžāĻāĻŋ āĻāĻ āĻŽāĻžāύāĻĻāĻŖā§āĻĄāĻāĻŋ āĻĒā§āϰāĻŖ āύāĻž āĻāϰā§, āϤāĻžāĻšāϞ⧠āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ āĻā§āϰā§āĻĒ āύāĻŋāĻā§āĻ āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻŽā§āĻļāĻŋāύāĻā§āϞāĻŋ āϏāϰāĻŋāϝāĻŧā§ āĻĢā§āϞāĻŦā§ āĻŦāĻž āĻāĻŽā§āĻ āĻāĻŦāĻ āϏāĻžāĻĻā§āĻļā§āϝ⧠āύāϤā§āύ āϤā§āϰāĻŋ āĻāϰāĻŦā§āĨ¤
āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāϏā§āĻā§āϰ āĻ āĻāĻļ āĻšāĻŋāϏā§āĻŦā§, āĻāĻŽāϰāĻž āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻāĻāĻāĻŋ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ āĻā§āϰā§āĻĒ āϤā§āϰāĻŋ āĻāϰāĻŦ āϝāĻž āĻĒā§āϰā§āĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻĄāĻŋāϏā§āĻ āĻāĻŽā§āĻ āĻĨā§āĻā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāĻŦā§āĨ¤


āĻļā§āώ āĻāĻĻāĻžāĻšāϰāĻŖ āĻā§āϰā§āĻĒ āϏā§āĻāĻŋāĻ āϏāϤā§āϝāĻŋāĻ āĻāϞā§āϞā§āĻāϝā§āĻā§āϝāĨ¤ āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻāĻāϤā§āϰāĻŋāϤ āϞāĻā§āώā§āϝ āĻā§āώā§āĻ ā§āĻāĻŋ āĻāĻĒāύāĻžāĻā§ āĻāϝāĻŧā§āĻāĻāĻŋ āĻŦā§āϤāĻžāĻŽ āĻāĻŋāĻĒā§ āĻāĻ āĻā§āϰā§āĻĒā§āϰ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύā§āϰ āĻāĻĒāϰ⧠āĻāĻāĻāĻŋ L3 āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āϏā§āĻ āĻāĻĒ āĻāϰāϤ⧠āϏāĻšāĻžāϝāĻŧāϤāĻž āĻāϰāĻŦā§āĨ¤

āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āϏā§āĻ āĻāĻĒ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻŽāĻŋ āĻĻā§āĻāĻŋ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻĒāϝāĻŧā§āύā§āĻ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰā§āĻāĻŋ:
- āĻāĻŽāĻŋ āĻāĻāĻŋ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋ āϝāĻžāϤ⧠āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰāĻāĻŋ āĻĒā§āϰā§āĻ 80-āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻā§āϰā§āϝāĻžāĻĢāĻŋāĻ āĻā§āϰāĻšāĻŖ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύā§āϰ 3000 āĻĒā§āϰā§āĻā§ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļāĻŋāϤ āĻāϰā§, āϝā§āĻāĻžāύ⧠Grafana āĻŦāĻžāϏ āĻāϰā§āĨ¤
- āĻĒā§āϰā§āĻ 3000 āĻ āĻĒāĻŋāĻ āĻāϰ⧠āĻŽā§āĻļāĻŋāύā§āϰ āϏā§āĻŦāĻžāϏā§āĻĨā§āϝ āĻĒāϰā§āĻā§āώāĻž āϏā§āĻ āĻāĻĒ āĻāϰā§āύāĨ¤

āĻŽāĻŋāύāĻŋ āĻŽā§āĻ
āĻ āĻŦāĻļā§āώā§, āĻāĻŽāϰāĻž āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāĻāύā§āĻĻāϏāĻ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĒāϰāĻŋāĻāĻžāĻ āĻžāĻŽā§ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻšāϝāĻŧā§āĻāĻŋ, āĻāĻŦāĻ āĻāĻāύ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻ āϤā§āϝāύā§āϤ āϏā§āĻĨāĻŋāϤāĻŋāϏā§āĻĨāĻžāĻĒāĻ āĻā§āϰāĻžāĻĢāĻžāύāĻž āĻĒāϰāĻŋāώā§āĻŦāĻž āϰāϝāĻŧā§āĻā§āĨ¤ āĻāĻāĻŋāϤ⧠āĻĄā§āĻāĻžāϏā§āĻ āϞā§āĻĄ āĻāϰāĻžāϰ āĻāύā§āϝ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋāϰ āĻāύā§āĻā§āϰāĻŋ āĻĒāϝāĻŧā§āύā§āĻ āĻāĻŦāĻ āĻā§āϞāĻŋāĻāĻšāĻžāĻāϏ āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āϰ āĻšā§āϏā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰā§āϰ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāύāĻž āĻāĻžāύāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻāĻž āĻāĻŋ āĻŦāĻŋāĻāϝāĻŧ āĻŦāϞ⧠āĻŽāύ⧠āĻšāĻŦā§? āĻšā§āϝāĻžāĻ, āĻŦāĻŋāĻāϝāĻŧāĨ¤ āĻāĻŋāύā§āϤ⧠āĻāĻŋāĻā§ āĻāĻāύāĻ āĻāĻŽāĻžāĻā§ āĻŦāĻŋāϰāĻā§āϤ āĻāϰā§. āĻāĻĒāϰā§āϰ āĻĒā§āϰ⧠āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋāϰ āĻāύā§āϝ āĻ āύā§āĻāĻā§āϞāĻŋ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞ āĻ ā§āϝāĻžāĻāĻļāύ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻāĻŦāĻ āĻāĻāĻŋ āĻŽā§āĻā§āĻ āϏā§āĻā§āϞ āĻāϰ⧠āύāĻž, āĻāĻŽāĻŋ āϏāĻŽā§āĻāĻŦ āĻšāϞ⧠āĻāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāϰāϤ⧠āĻāĻžāĻāĨ¤ āĻāĻāĻŋ āĻĒāϰāĻŦāϰā§āϤ⧠āĻŦāĻŋāĻāĻžāĻā§āϰ āĻĢā§āĻāĻžāϏ āĻšāĻŦā§āĨ¤
Terraform āϏāĻā§āĻā§ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ
āĻāĻŽāϰāĻž āĻāĻŦāĻžāϰ HashiCorp āύāĻžāĻŽāĻ āĻāĻāĻāĻŋ āĻā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦ . āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāĻžāϏ āĻāϰāĻž āĻāϝāĻŧā§āĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āĻŦā§āϤāĻžāĻŽā§āϰ āĻā§āϞāĻŋāĻā§ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĒāϰāĻŋāĻāĻžāĻ āĻžāĻŽā§ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āϏāĻšāĻžāϝāĻŧāϤāĻž āĻāϰāĻŦā§āĨ¤ āĻāϏā§āύ āĻāĻāĻāĻŋ āϰā§āϏāĻŋāĻĒāĻŋ āϞāĻŋāĻāĻŋ āϝāĻž āĻŦāĻŋāĻāĻŋāύā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻŦāĻŋāĻāĻŋāύā§āύ āĻŦāĻŋāĻāĻžāĻā§ āĻāĻāĻžāϧāĻŋāĻāĻŦāĻžāϰ āĻāĻžāϞāĻžāύ⧠āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻā§āϰāĻžāĻĢāϰā§āĻŽā§āϰ āϏāĻžāĻĨā§ āϏāĻŽāϏā§āϤ āĻāĻžāĻ āĻāĻāĻāĻŋ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞ āϞāĻŋāĻāϤ⧠āύā§āĻŽā§ āĻāϏ⧠(*.tf) āĻāĻŦāĻ āĻāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻ
āĻŦāĻāĻžāĻ āĻžāĻŽā§ āϤā§āϰāĻŋ āĻāϰāĻžāĨ¤
āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ
āĻĢāĻžāĻāϞā§āϰ āĻāĻā§āĻŦāĻžāϰ⧠āĻļā§āϰā§āϤā§, āĻāĻŽāϰāĻž āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§āϞāĻŋ āĻŦā§āϰ āĻāϰāĻŦ āϝāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰ⧠āϝ⧠āĻāĻŦāĻŋāώā§āϝāϤ⧠āĻĒāϰāĻŋāĻāĻžāĻ āĻžāĻŽā§ āĻā§āĻĨāĻžāϝāĻŧ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāĻŦā§āĨ¤
variable "oauth_token" {
type = string
default = "<oauth-token>"
}
variable "cloud_id" {
type = string
default = "<cloud-id>"
}
variable "folder_id" {
type = string
default = "<folder_id>"
}
variable "service_account_id" {
type = string
default = "<service_account_id>"
}
variable "image_id" {
type = string
default = "<image_id>"
}
variable "username" {
type = string
default = "<username>"
}
variable "password" {
type = string
default = "<password>"
}
variable "dbname" {
type = string
default = "<dbname>"
}
variable "public_key_path" {
type = string
default = "<path to ssh public key>"
}āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϏā§āĻĨāĻžāĻĒāύā§āϰ āĻĒā§āϰ⧠āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋ āĻāĻāĻāĻŋ āĻĄāĻŋāϏā§āĻ āĻāĻŽā§āĻ āϤā§āϰāĻŋ āĻāĻŦāĻ āĻāĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§āϞāĻŋ āϏā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āύā§āĻŽā§ āĻāϏāĻŦā§āĨ¤ āĻāĻŽāĻžāĻā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻž āϝāĻžāĻ āϤāĻžāϰāĻž āĻāĻŋ āĻāύā§āϝ āĻĻāĻžāϝāĻŧā§:
oauth_token - āĻā§āϞāĻžāĻāĻĄā§ āĻ
ā§āϝāĻžāĻā§āϏā§āϏā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻā§āĻā§āύāĨ¤ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāĻŦā§ .
āĻā§āϞāĻžāĻāĻĄ_āĻāĻāĻĄāĻŋ - āĻā§āϞāĻžāĻāĻĄā§āϰ āĻļāύāĻžāĻā§āϤāĻāĻžāϰ⧠āϝā§āĻāĻžāύ⧠āĻāĻŽāϰāĻž āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻŦ
āĻĢā§āϞā§āĻĄāĻžāϰ_āĻāĻāĻĄāĻŋ â āϝ⧠āĻŦāĻŋāĻāĻžāĻā§āϰ āĻļāύāĻžāĻā§āϤāĻāĻžāϰ⧠āĻāĻŽāϰāĻž āĻāĻŦā§āĻĻāύāĻāĻŋ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻŦ
service_account_id â āĻā§āϞāĻžāĻāĻĄā§āϰ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻŦāĻŋāĻāĻžāĻā§ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻā§āϰ āĻļāύāĻžāĻā§āϤāĻāĻžāϰā§āĨ¤
image_id - āĻĒā§āϝāĻžāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰāĻžāĻĒā§āϤ āĻĄāĻŋāϏā§āĻ āĻāĻŋāϤā§āϰā§āϰ āϏāύāĻžāĻā§āϤāĻāĻžāϰā§
āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ и āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ - āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāĻŦāĻ Grafana āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ āĻāĻāϝāĻŧ āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ
dbname - CH āĻāĻŦāĻ MySQL āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āϰ āĻāĻŋāϤāϰ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āύāĻžāĻŽ
āϏāϰā§āĻŦāĻāύā§āύ_āĻā§_āĻĒāĻĨ - āĻāĻĒāύāĻžāϰ āϏāϰā§āĻŦāĻāύā§āύ ssh āĻā§ āϏāĻš āĻĢāĻžāĻāϞā§āϰ āĻĒāĻĨ, āϝāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻĒāύāĻŋ āύāĻžāĻŽā§āϰ āĻ
āϧā§āύ⧠āϏāĻāϝā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ ubuntu āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ āϏāĻš āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύā§
āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϏā§āĻāĻŋāĻ
āĻāĻāύ āĻāĻĒāύāĻžāĻā§ Terraform āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§ - āĻāĻŽāĻžāĻĻā§āϰ āĻā§āώā§āϤā§āϰā§, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
āĻāĻĒāύāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻā§āύ āϝ⧠āĻāĻāĻžāύ⧠āĻāĻŽāϰāĻž āĻāĻĒāϰ⧠āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻāĻŋāĨ¤
āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻāĻŦāĻ āĻā§āϞāĻžāϏā§āĻāĻžāϰ
āĻāĻāύ āĻāϏā§āύ āĻāĻāĻāĻŋ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āϤā§āϰāĻŋ āĻāϰāĻŋ āϝā§āĻāĻžāύ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§āϰ āĻāĻĒāĻžāĻĻāĻžāύ āϝā§āĻāĻžāϝā§āĻ āĻāϰāĻŦā§, āϤāĻŋāύāĻāĻŋ āϏāĻžāĻŦāύā§āĻ (āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻ āĻā§āĻāϞ⧠āĻāĻāĻāĻŋ) āĻāĻŦāĻ CH āĻāĻŦāĻ MySQL āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻŦāĻžāĻĄāĻŧāĻžāĻŦā§āĨ¤
resource "yandex_vpc_network" "grafana_network" {}
resource "yandex_vpc_subnet" "subnet_a" {
zone = "ru-central1-a"
network_id = yandex_vpc_network.grafana_network.id
v4_cidr_blocks = ["10.1.0.0/24"]
}
resource "yandex_vpc_subnet" "subnet_b" {
zone = "ru-central1-b"
network_id = yandex_vpc_network.grafana_network.id
v4_cidr_blocks = ["10.2.0.0/24"]
}
resource "yandex_vpc_subnet" "subnet_c" {
zone = "ru-central1-c"
network_id = yandex_vpc_network.grafana_network.id
v4_cidr_blocks = ["10.3.0.0/24"]
}
resource "yandex_mdb_clickhouse_cluster" "ch_cluster" {
name = "grafana-clickhouse"
environment = "PRODUCTION"
network_id = yandex_vpc_network.grafana_network.id
clickhouse {
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 16
}
}
zookeeper {
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 10
}
}
database {
name = var.dbname
}
user {
name = var.username
password = var.password
permission {
database_name = var.dbname
}
}
host {
type = "CLICKHOUSE"
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet_a.id
}
host {
type = "CLICKHOUSE"
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet_b.id
}
host {
type = "CLICKHOUSE"
zone = "ru-central1-c"
subnet_id = yandex_vpc_subnet.subnet_c.id
}
host {
type = "ZOOKEEPER"
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet_a.id
}
host {
type = "ZOOKEEPER"
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet_b.id
}
host {
type = "ZOOKEEPER"
zone = "ru-central1-c"
subnet_id = yandex_vpc_subnet.subnet_c.id
}
}
resource "yandex_mdb_mysql_cluster" "mysql_cluster" {
name = "grafana_mysql"
environment = "PRODUCTION"
network_id = yandex_vpc_network.grafana_network.id
version = "8.0"
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 16
}
database {
name = var.dbname
}
user {
name = var.username
password = var.password
permission {
database_name = var.dbname
roles = ["ALL"]
}
}
host {
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet_a.id
}
host {
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet_b.id
}
host {
zone = "ru-central1-c"
subnet_id = yandex_vpc_subnet.subnet_c.id
}
}āĻāĻĒāύāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻā§āύ, āĻĻā§āĻāĻŋ āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϤāĻŋāύāĻāĻŋ āĻĒā§āϰāĻžāĻĒā§āϝāϤāĻž āĻ āĻā§āĻāϞ⧠āϏā§āĻĨāĻžāĻĒāύ āĻāϰ⧠āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āϤā§āϰā§āĻāĻŋ-āϏāĻšāύāĻļā§āϞ āĻšāϤ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āĻāϝāĻŧā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ
āĻŽāύ⧠āĻšāĻā§āĻā§ āĻāĻĒāύāĻŋ āĻāĻāĻ āĻā§āϤāύāĻžāϝāĻŧ āĻāĻžāϞāĻŋāϝāĻŧā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āύ, āĻāĻŋāύā§āϤ⧠āĻāĻŽāĻŋ āĻ āϏā§āĻŦāĻŋāϧāĻžāϝāĻŧ āĻĒāĻĄāĻŧā§āĻāĻŋāϞāĻžāĻŽāĨ¤ āϤāĻžāϰ āĻāĻā§, āĻāĻŽāĻŋ āĻĒā§āϰāĻĨāĻŽā§ MySQL āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻāϤā§āĻĨāĻžāĻĒāύ āĻāϰā§āĻāĻŋ āĻāĻŦāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϤāĻžāϰ āĻĒāϰā§, āĻāϰ āĻāĻāĻĄāĻŋ āĻā§āύā§, āĻāĻŽāĻŋ āĻĒāĻāύā§āĻĻāϏāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āϏāĻš āĻāĻāĻāĻŋ āĻĄāĻŋāϏā§āĻ āĻāĻŋāϤā§āϰ āϏāĻāĻā§āϰāĻš āĻāϰā§āĻāĻŋ, āϝā§āĻāĻžāύ⧠āĻāĻŽāĻŋ āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠āĻšā§āϏā§āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āĻāĻŋāĨ¤ āĻāĻŋāύā§āϤ⧠āĻāĻāύ āĻāĻŽāϰāĻž āĻā§āϰāĻžāĻĢāϰā§āĻŽ āĻāĻžāϞ⧠āĻāϰāĻžāϰ āĻāĻā§ āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻāĻāĻĄāĻŋ āĻāĻžāύāĻŋ āύāĻž, āĻāĻŦāĻŋ āϤā§āϰāĻŋāϰ āϏāĻŽāϝāĻŧ āϏāĻšāĨ¤ āϤāĻžāĻ āĻāĻŽāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻ āĻŦāϞāĻŽā§āĻŦāύ āĻāĻŋāϞ .
Amazon āĻĨā§āĻā§ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻĒāϰāĻŋāώā§āĻŦāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āĻāĻŽāϰāĻž āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ⧠āĻāĻŋāĻā§ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āĻĒāĻžāϏ āĻāϰāĻŦ, āϝāĻž āĻāĻāĻŋ āĻā§āϰāĻšāĻŖ āĻāϰāĻŦā§ āĻāĻŦāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻŦā§āĨ¤ āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āϰ MySQL āĻšā§āϏā§āĻ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ-āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄā§āϰ āĻāύā§āϝ āĻŽā§āĻāĻžāĻĄā§āĻāĻžāϤ⧠āϝāĻžāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻŽā§āĻļāĻŋāύā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻĒāϰ⧠Terraform āĻĢāĻžāĻāϞ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āĻā§āĨ¤ āĻĢāĻžāĻāϞā§āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āϏāĻžāĻŽāĻžāύā§āϝ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ setup.sh, āϝāĻž āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āĻāĻžāϞ⧠āĻšāϞ⧠āĻāϞā§āĨ¤
setup.sh:
#!/bin/bash
CLUSTER_URI="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/mysql_cluster_uri)"
USERNAME="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/username)"
PASSWORD="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/password)"
sudo sed -i "s#.*;url =.*#url = mysql://${USERNAME}:${PASSWORD}@${CLUSTER_URI}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${PASSWORD}#" /etc/grafana/grafana.ini
sudo service grafana-server restartāĻāύāĻā§āϝāĻžāύā§āϏ āĻā§āϰā§āĻĒ āĻāĻŦāĻ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ
āύāϤā§āύ āĻĄāĻŋāϏā§āĻ āĻāĻŽā§āĻ āĻĒā§āύāϰā§āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻŽāϰāĻž āĻ āĻŦāĻļā§āώ⧠Terraform āĻāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻĢāĻžāĻāϞ āϝā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
āĻāĻŽāϰāĻž āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŋ āϝ⧠āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄāĻŋāϏā§āĻ āĻāĻŋāϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻ:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}āĻāĻāύ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻā§āϰā§āĻĒ āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻžāĻ:
resource "yandex_compute_instance_group" "grafana_group" {
name = "grafana-group"
folder_id = var.folder_id
service_account_id = var.service_account_id
instance_template {
platform_id = "standard-v1"
resources {
memory = 1
cores = 1
}
boot_disk {
mode = "READ_WRITE"
initialize_params {
image_id = data.yandex_compute_image.grafana_image.id
size = 4
}
}
network_interface {
network_id = yandex_vpc_network.grafana_network.id
subnet_ids = [yandex_vpc_subnet.subnet_a.id, yandex_vpc_subnet.subnet_b.id, yandex_vpc_subnet.subnet_c.id]
nat = "true"
}
metadata = {
mysql_cluster_uri = "c-${yandex_mdb_mysql_cluster.mysql_cluster.id}.rw.mdb.yandexcloud.net:3306/${var.dbname}"
username = var.username
password = var.password
ssh-keys = "ubuntu:${file("${var.public_key_path}")}"
}
network_settings {
type = "STANDARD"
}
}
scale_policy {
fixed_scale {
size = 6
}
}
allocation_policy {
zones = ["ru-central1-a", "ru-central1-b", "ru-central1-c"]
}
deploy_policy {
max_unavailable = 2
max_creating = 2
max_expansion = 2
max_deleting = 2
}
load_balancer {
target_group_name = "grafana-target-group"
}
}āĻāĻŽāϰāĻž āĻāĻŋāĻāĻžāĻŦā§ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻĒāĻžāϏ āĻāϰā§āĻāĻŋ āϏā§āĻĻāĻŋāĻā§ āĻŽāύā§āϝā§āĻ āĻĻā§āĻāϝāĻŧāĻž āĻŽā§āϞā§āϝāĻŦāĻžāύ cluster_uri, username и password. āĻāĻāĻŋ āϤāĻžāĻĻā§āϰ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āϝāĻž āϏā§āĻāĻžāϰā§āĻāĻāĻĒā§ āĻāĻāĻŋ āĻĒāĻžāĻŦā§ āĻāĻŦāĻ āĻā§āϰāĻžāĻĢāĻžāύāĻž āĻāύāĻĢāĻŋāĻāĻžāϰ⧠āϰāĻžāĻāĻŦā§āĨ¤
āĻāĻāĻž āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āϏāĻŽā§āĻĒāϰā§āĻā§.
resource "yandex_lb_network_load_balancer" "grafana_balancer" {
name = "grafana-balancer"
listener {
name = "grafana-listener"
port = 80
target_port = 3000
external_address_spec {
ip_version = "ipv4"
}
}
attached_target_group {
target_group_id = yandex_compute_instance_group.grafana_group.load_balancer.0.target_group_id
healthcheck {
name = "healthcheck"
tcp_options {
port = 3000
}
}
}
}āϏāĻžāĻŽāĻžāύā§āϝ āĻāĻŋāύāĻŋ
āĻā§āĻŦ āĻāĻŽ āĻŦāĻžāĻāĻŋ āĻāĻŋāϞāĨ¤ āĻĒāϰāĻŋāĻāĻžāĻ āĻžāĻŽā§ āϏā§āĻĨāĻžāĻĒāύā§āϰ āĻĒāϰ, āĻāĻĒāύāĻžāĻā§ Grafana UI-āĻ āϝā§āϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ CH āĻā§āϞāĻžāϏā§āĻāĻžāϰ (āϝāĻžāϰ āĻāĻāĻĄāĻŋ āĻāĻĒāύāĻžāĻā§ āĻāĻāύāĻ āĻĒā§āϤ⧠āĻšāĻŦā§) āĻĄā§āĻāĻž āĻā§āϏ āĻšāĻŋāϏā§āĻŦā§ āϝā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻŋāύā§āϤ⧠Terraform āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻāĻāĻĄāĻŋ āĻāĻžāύā§āĨ¤ āĻāĻā§ āĻāĻžāĻ āĻļā§āώ āĻāϰāĻŋāϝāĻŧā§ āĻĻā§āĻāĨ¤
āĻāϏā§āύ āĻāĻāĻāĻŋ āύāϤā§āύ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϝā§āĻ āĻāϰāĻŋ - Grafana, āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻšā§āϏā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āĻāĻāĻĒāĻŋ āϏā§āϞāĻŋāĻĒ āĻāϰā§āύ⧎ āĻā§āϰāĻžāĻĢāϰā§āĻŽ āĻŽā§āĻļāĻŋāύ⧠āϝ⧠āϏāĻŽāϏā§āϤ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āĻāϰ⧠āϝā§āĻāĻžāύ⧠āϤāĻžāϰ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰ⧠MySQL-āĻ āĻāĻŦāĻ āϏā§āĻāĻāύā§āϝ āĻ āύā§āϝāĻžāύā§āϝ āϏāĻŽāϏā§āϤ āĻŽā§āĻļāĻŋāύ⧠āĻŦā§āĻĻā§āϧāĻŋ āĻĒāĻžāĻŦā§āĨ¤
provider "grafana" {
url = "http://${[for s in yandex_lb_network_load_balancer.grafana_balancer.listener: s.external_address_spec.0.address].0}"
auth = "${var.username}:${var.password}"
}
resource "grafana_data_source" "ch_data_source" {
type = "vertamedia-clickhouse-datasource"
name = "grafana"
url = "https://c-${yandex_mdb_clickhouse_cluster.ch_cluster.id}.rw.mdb.yandexcloud.net:8443"
basic_auth_enabled = "true"
basic_auth_username = var.username
basic_auth_password = var.password
is_default = "true"
access_mode = "proxy"
}āĻāϞā§āύ āĻāĻŋāϰā§āύāĻŋ
āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āĻāĻāĻĒāĻŋ āĻāĻŦāĻ āĻā§āϞāĻŋāĻāĻšāĻžāĻāϏ āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻšā§āϏā§āĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§āύ
output "grafana_balancer_ip_address" {
value = [for s in yandex_lb_network_load_balancer.grafana_balancer.listener: s.external_address_spec.0.address].0
}
output "clickhouse_cluster_host" {
value = "https://c-${yandex_mdb_clickhouse_cluster.ch_cluster.id}.rw.mdb.yandexcloud.net:8443"
}āϰāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ
āϏāĻŽāϏā§āϤ ! āĻāĻŽāĻžāĻĻā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞ āĻĒā§āϰāϏā§āϤā§āϤ āĻāĻŦāĻ āĻāĻŽāϰāĻž āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϏā§āĻ āĻāϰ⧠āĻā§āϰāĻžāĻĢāϰā§āĻŽāĻā§ āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŋ āĻāĻŽāϰāĻž āĻāĻĒāϰ⧠āĻŦāϰā§āĻŖāĻŋāϤ āϏāĻŦāĻāĻŋāĻā§ āĻŦāĻžāĻĄāĻŧāĻžāϤā§āĨ¤ āĻĒā§āϰ⧠āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋ āĻāĻŽāĻžāϰ āĻĒā§āϰāĻžāϝāĻŧ 15 āĻŽāĻŋāύāĻŋāĻ āϏāĻŽāϝāĻŧ āύā§āϝāĻŧāĨ¤
āĻļā§āώā§, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āϏā§āύā§āĻĻāϰ āĻŦāĻžāϰā§āϤāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āύ:
Apply complete! Resources: 9 added, 0 changed, 0 destroyed.
Outputs:
clickhouse_cluster_host = https://c-c9q14ipa2ngadqsbp2iq.rw.mdb.yandexcloud.net:8443
grafana_balancer_ip_address = 130.193.50.25āĻāĻŦāĻ āĻŽā§āĻā§, āĻāϤā§āĻĨāĻžāĻĒāĻŋāϤ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§āϰ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋ āĻĻā§āĻļā§āϝāĻŽāĻžāύ āĻšāĻŦā§:

āĻāϏā§āύ āĻĒāϰāĻŋāĻŖāĻžāĻŽ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻĢāϞāĻžāĻĢāϞ
āĻāĻāύ, Grafana-āĻāϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āĻāĻĒāύāĻžāϰāĻž āĻĒā§āϰāϤā§āϝā§āĻā§āĻ Yandex.Cloud āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽā§ āĻŦāĻŋāϏā§āϤā§āϤ āĻā§āϞāĻžāĻāĻĄ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āϏāĻš āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ HashiCorp āĻĨā§āĻā§ āĻĻāϰāĻāĻžāϰ⧠āĻā§āϞ āϝā§āĻŽāύ Packer āĻāĻŦāĻ Terraform āĻāĻĒāύāĻžāĻā§ āĻāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻŽāĻŋ āĻāĻļāĻž āĻāϰāĻŋ āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āĻāĻžāϰāĻ āĻāĻžāĻā§ āϞāĻžāĻāĻŦā§ đ
āĻĒāĻŋāĻāϏ āύā§āĻā§ āĻāĻŽāĻŋ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞā§āϰ āĻāĻāĻāĻŋ āϞāĻŋāĻā§āĻ āϏāĻāϝā§āĻā§āϤ āĻāϰāĻŦ, āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻĒā§āϝāĻžāĻāĻžāϰ āĻāĻŦāĻ āĻā§āϰāĻžāĻĢāϰā§āĻŽā§āϰ āĻāύā§āϝ āϤā§āϰāĻŋ āϰā§āϏāĻŋāĻĒāĻŋāĻā§āϞāĻŋ āĻā§āĻāĻā§ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ, āϝāĻžāϰ āĻā§āĻāϰā§āĻā§āϞāĻŋ āĻāĻŽāĻŋ āĻāĻ āύāĻŋāĻŦāύā§āϧ⧠āĻāĻĻā§āϧā§āϤ āĻāϰā§āĻāĻŋāĨ¤
āĻāϤā§āϏ: www.habr.com
