ΠΠ΄ΡΠ°Π²ΠΎ Π½Π° ΡΠΈΡΠ΅! ΠΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ ΠΌΠΎΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΊΡΡΡΠΎΡ, Π³ΠΈ ΠΈΡΡΡΠ°ΠΆΡΠ²Π°Π² ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ°ΠΊΠ²Π° Π΄ΠΎΠΌΠ°ΡΠ½Π° ΠΎΠ±Π»Π°ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΊΠ°ΠΊΠΎ
Π¨ΡΠΎ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅?
ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΡΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΡΠ΅ ΠΊΠ°Ρ Π½Π΅ΡΠ·ΠΈΠ½ΠΈΠΎΡ Π΄ΠΎΠΌΠ°ΡΠΈΠ½ ΠΈ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ, Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π²ΠΎΡΠΈ Π·Π° ΠΏΠΎΠ½Π°ΡΠ°ΠΌΠΎΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°, Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠ°Π±Π»ΠΈ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° ΠΈΠΌΠ° Π΅Π΄Π΅Π½ Π·Π½Π°ΡΠ°Π΅Π½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ - Π²ΠΎΠΎΠΏΡΡΠΎ Π½Π΅ Π΅ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ½Π° Π·Π° Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ΄Π½ΠΎΡΠ½ΠΎ, ΡΠ΅Π»Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΠΎΠ΄ΡΠΆΠ»ΠΈΠ²ΠΎΡΡΠ° Π½Π° Π΅Π΄Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°. ΠΠΊΠΎ ΠΎΠ΄Π±ΠΈΠ΅ ΠΈΠ»ΠΈ 10 Π»ΡΡΠ΅ Π³ΠΎ ΠΎΡΠ²ΠΎΡΠ°Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ΡΠΎΠ³Π°Ρ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
Π’ΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Ρ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ: ΡΠ°ΠΌΠΎ ΡΡΠ΅Π±Π° Π΄Π°... ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΡΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΈ Π΄Π° Π³ΠΈ ΡΡΠ°Π²ΠΈΡΠ΅ ΠΏΠΎΠ΄ Π±Π°Π»Π°Π½ΡΠ΅ΡΠΎΡ L3. ΠΠΎ, ΡΡΠΊΠ° Π½Π΅ Π΅ ΡΓ¨ ΡΠΎΠ»ΠΊΡ ΡΠ°ΡΠ½ΠΎ. Grafana Π³ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ (ΠΏΠ°ΡΠ΅ΠΊΠΈ Π΄ΠΎ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠ°Π±Π»ΠΈ, Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ ΠΈΡΠ½.) Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Π΄ΠΈΡΠΊΠΎΡ Π½Π° ΡΠ²ΠΎΡΠ°ΡΠ° Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°. Π’Π°ΠΊΠ°, Π°ΠΊΠΎ ΡΠΌΠ΅Π½ΠΈΠΌΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π²ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ, ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ΅ ΡΠ΅ ΠΎΠ΄ΡΠ°Π·Π°Ρ ΡΠ°ΠΌΠΎ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° ΠΊΠ°Π΄Π΅ ΡΡΠΎ Π½ΠΈ ΠΈΡΠΏΡΠ°ΡΠΈ Π±Π°Π»Π°Π½ΡΠ΅ΡΠΎΡ. ΠΠ²Π° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅ΠΊΠΎΠ½Π·ΠΈΡΡΠ΅Π½ΡΠ½ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π·Π° Π½Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΡΠ²Π°ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ.
ΠΠ²Π΄Π΅ Π΄ΡΡΠ³Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ΅ Π΄ΠΎΡΠ΄Π΅ Π½Π° ΠΏΠΎΠΌΠΎΡ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, MySQL ΠΈΠ»ΠΈ Π½Π΅ΡΠ·ΠΈΠ½ΠΈΠΎΡ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ. ΠΠ° ΠΡΠ°ΡΠ°Π½Π° ΠΈ ΠΊΠ°ΠΆΡΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ Π·Π°ΡΡΠ²Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π²ΠΎ ΠΎΠ²Π°Π° βΡΠ΅Π·Π΅ΡΠ²Π½Π°β Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ°, ΡΠ΅ Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΅Π΄Π½Π°Ρ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° ΠΌΠ°ΡΠΈΠ½Π° Π΄Π° ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠ΅ ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° Π΄ΠΎ ΠΎΠ²Π°Π° Π±Π°Π·Π° ΠΈ Π΄Π° Π³ΠΈ ΡΡΠ΅Π΄ΠΈΡΠ΅ ΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π½Π° ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ ΠΎΠ΄ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ; ΡΠΈΠ΅ ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°Ρ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅.
ΠΠ²Π΅ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ Π½Π° ΠΊΠΎΠ½Π΅ΡΠ½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°:
ΠΠ° Π½Π°ΡΡΠΈΠΌΠ΅ Π΄Π° ΠΊΡΠ΅Π²Π°ΠΌΠ΅ ΡΠΎ ΡΠ°ΡΠ΅
MySQL ΠΈ ClickHouse
ΠΡΠ΅Π΄ Π΄Π° ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈ ΡΠ°ΠΊΠ²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠΏΡΠ΅, Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ Π±Π΅ΡΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΡΠ°ΠΊΡΠ²Π° ΡΠΎ ΡΠ΅ΠΊΠΎΡΠ° Π½Π΅ΡΠ·ΠΈΠ½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π°Ρ Π΅Π΄Π½ΠΈ ΡΠΎ Π΄ΡΡΠ³ΠΈ.
ΠΠ²Π΄Π΅ Yandex.Cloud ΡΠ΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅, ΠΊΠΎΡ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° L3 balancers, ClickHouse ΠΈ MySQL ΠΊΠ°ΠΊΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ. ΠΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΡΡΠ΅Π±Π° ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΈ Π½Π°Π²Π΅Π΄Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΈ Π΄Π° ΠΏΠΎΡΠ΅ΠΊΠ° Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π½Π΅ Π΄ΠΎΠ½Π΅ΡΠ΅ ΡΓ¨ Π²ΠΎ ΡΠ°Π±ΠΎΡΠ½Π° ΡΠΎΡΡΠΎΡΠ±Π°.
Π‘Π΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π², ΡΠΎΠ·Π΄Π°Π΄ΠΎΠ² ΠΎΠ±Π»Π°ΠΊ ΠΈ ΡΠΌΠ΅ΡΠΊΠ° Π·Π° ΠΏΠ»Π°ΡΠ°ΡΠ΅. ΠΠΎΡΠ»Π΅ ΡΠΎΠ°, ΠΎΡΠΈΠ΄ΠΎΠ² Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ ΠΈ Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅ MySQL ΠΈ ClickHouse ΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ. Π§Π΅ΠΊΠ°Π² Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π°Ρ.
ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΡΠ΅Π±Π° Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΡΠ΅ΠΊΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ Π΄ΠΎ Π½Π΅Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π½Π°ΡΠ°Π²Π° ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°. ΠΠ²Π΄Π΅ Π½Π΅ΠΌΠ° Π΄Π° Π½Π°Π²Π»Π΅Π³ΡΠ²Π°ΠΌ Π²ΠΎ Π΄Π΅ΡΠ°Π»ΠΈ - ΡΓ¨ Π΅ ΡΠΎΡΠ΅ΠΌΠ° ΠΎΡΠΈΠ³Π»Π΅Π΄Π½ΠΎ Π²ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ.
ΠΠ΅ΠΎΡΠΈΠ³Π»Π΅Π΄Π½ΠΈΠΎΡ Π΄Π΅ΡΠ°Π» Π±Π΅ΡΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²ΠΈΠ΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈΠΌΠ°Π°Ρ ΠΌΠ½ΠΎΠ³Ρ Ρ
ΠΎΡΡΠΎΠ²ΠΈ, ΠΊΠΎΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ Π½ΠΈΠ²Π½Π° ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, Grafana Π±Π°ΡΠ° ΡΠΎΡΠ½ΠΎ Π΅Π΄Π΅Π½ Ρ
ΠΎΡΡ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ ΠΊΠΎΡΠ° ΡΠ°Π±ΠΎΡΠΈ. ΠΠΎΠ»Π³ΠΎ ΡΠΈΡΠ°ΡΠ΅ c-<cluster_id>.rw.mdb.yandexcloud.net
ΠΌΠ°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ Π°ΠΊΡΠΈΠ²Π΅Π½ Π³Π»Π°Π²Π΅Π½ Π΄ΠΎΠΌΠ°ΡΠΈΠ½ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΡΠΎ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ ID. ΠΠ²Π΅ ΡΡΠΎ ΡΠ΅ ΠΈ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ΅ Π½Π° ΠΡΠ°ΡΠ°Π½Π°.
ΠΠ΅Π± ΡΠ΅ΡΠ²Π΅Ρ
Π‘Π΅Π³Π° Π΅ Π΄ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. ΠΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ΠΌΠ΅ ΠΎΠ±ΠΈΡΠ½Π° Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΡΠΎ Linux ΠΈ ΡΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ Grafana Π½Π° Π½Π΅Π°.
ΠΡΠ΄Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ΠΌΠ΅ ΠΏΡΠ΅ΠΊΡ 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
ΠΠΎΡΠ»Π΅ ΡΠΎΠ°, Π°ΡΠ΄Π΅ Π΄Π° ΡΠ° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ Grafana ΠΏΠΎΠ΄ systemctl ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Π΄ΠΎΠ΄Π°ΡΠΎΠΊΠΎΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ClickHouse (Π΄Π°, Π½Π΅ Π΅ ΠΈΡΠΏΠΎΡΠ°ΡΠ°Π½ Π²ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Π’ΠΎΠ° Π΅ ΡΠΎΠ°, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ° ΡΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°
sudo service grafana-server start
ΡΠ΅ Π³ΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΠΌΠ΅ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° Π²Π½Π΅ΡΠ΅ΡΠ΅ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½Π°ΡΠ° IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° Π²ΠΎ ΠΏΡΠ΅Π»ΠΈΡΡΡΠ²Π°ΡΠΎΡ, Π΄Π° ΡΠ° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΠΏΠΎΡΡΠ°ΡΠ° 3000 ΠΈ Π΄Π° Π³ΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΈΠΎΡ Grafana UI.
ΠΠΎ, Π½Π΅ Π±ΡΠ·Π°ΡΡΠ΅, ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Grafana, ΠΌΠΎΡΠ° Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ Π΄Π° ΠΌΡ ΡΠ° ΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° Π΄ΠΎ MySQL Π·Π° Π΄Π° Π³ΠΈ Π·Π°ΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅ ΡΠ°ΠΌΡ.
Π¦Π΅Π»Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π½Π° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Grafana Π΅ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° /etc/grafana/grafana.ini
. ΠΠΎΡΡΠ΅Π±Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:
;url =
ΠΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠ²ΠΌΠ΅ Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ MySQL. ΠΡΡΠ°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π³ΠΈ ΡΠΎΠ΄ΡΠΆΠΈ Π½Π°ΡΠ°Π²Π°ΡΠ° ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°ΡΠ° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΡΠ°ΡΠ°Π½Π° Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠ³ΠΎΡΠ΅, ΠΊΠΎΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ ΠΈ Π΄Π²Π΅ΡΠ΅ ΡΠ΅ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ 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 ΡΠ΅ Π³ΠΎ ΠΎΠ΄ΡΠ΅Π΄ΠΈΠΌΠ΅ ClickHouse ΠΊΠ°ΠΊΠΎ DataSource.
Π£ΡΠΏΠ΅Π°Π² Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π°ΠΌ ΡΠ°Π±ΠΎΡΠ½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΡΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠ²Π΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ:
ΠΠ°Ρ Π½Π°Π²Π΅Π΄ΠΎΠ² ΠΊΠ°ΠΊΠΎ URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Π‘ΠΈΡΠ΅! ΠΠΌΠ°ΠΌΠ΅ Π΅Π΄Π½Π° ΡΠ°Π±ΠΎΡΠ½Π° Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΡΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ²ΡΠ·Π°Π½ Π½Π° CH ΠΈ MySQL. ΠΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ClickHouse ΠΈ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠ°Π±Π»ΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠΌΠ΅ ΡΠ° ΠΏΠΎΡΡΠΈΠ³Π½Π°Π»Π΅ Π½Π°ΡΠ°ΡΠ° ΡΠ΅Π» ΠΈ Π½Π΅ ΡΠΌΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠ»Π΅ ΡΠ΅Π»ΠΎΡΠ½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°.
ΠΠ°ΠΊΡΠ²Π°Ρ
Yandex.Cloud Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ° Π½Π° Π΄ΠΈΡΠΊΠΎΡ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠ° Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠΎΠ° - ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ Π±ΡΠΎΡ Π½Π° ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ Π΅Π΄Π½ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ. ΠΠ²Π° Π΅ ΡΠΎΠΊΠΌΡ ΠΎΠ½Π° ΡΡΠΎ ΡΠ΅ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅. ΠΠ° ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ°, Π·Π΅ΠΌΠ΅ΡΠ΅ ΡΠ° Π°Π»Π°ΡΠΊΠ°ΡΠ°
ΠΠ°ΡΠ°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° 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) ΡΡΠ°ΡΡΡΠ²Π°ΡΡΠ΅ ΡΠ° Grafana ΠΏΠΎΠ΄ systemctl ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠΎΠΊΠΎΡ 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-datasource
run-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;
Π‘Π΅Π³Π° ΠΎΡΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ Packer ΠΈ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ ΠΈΠ·Π»Π΅Π·Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° ΠΏΠΎΡΡΠ°Π²Π΅Π½Π° Π²ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ Π΄Π΅Π». ΠΠΎΠ³Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄ΠΈΡΠΊ Π·Π° ΠΏΠΎΠ΄ΠΈΠ³Π°ΡΠ΅ ΠΈ ΠΏΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ Π³ΠΎΡΠΎΠ² Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΡΠ°ΡΠ°Π½Π°.
ΠΡΡΠΏΠ° Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ Π±Π°Π»Π°Π½ΡΠ΅Ρ
ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ»ΠΈΠΊΠ° Π½Π° Π΄ΠΈΡΠΊΠΎΡ ΡΡΠΎ Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΈ Π½Π° Grafana, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ Π³ΡΡΠΏΠ° Π·Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ. ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Yandex.Cloud, ΠΎΠ²ΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½ ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π° Π½Π° ΡΠΎΡΡΠ·ΠΎΡ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΊΠΎΠΈ Π³ΠΈ ΠΈΠΌΠ°Π°Ρ ΠΈΡΡΠΈΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ. ΠΡΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π° Π³ΡΡΠΏΠ° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈ, ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΡ Π½Π° ΡΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ Π²ΠΎ ΠΎΠ²Π°Π° Π³ΡΡΠΏΠ°, Π° ΠΏΠΎΡΠΎΠ° ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΠ°ΠΌΠ°ΡΠ° Π³ΡΡΠΏΠ° (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ). ΠΠΊΠΎ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π΅ Π³ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ²Π° ΠΎΠ²ΠΈΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌΠΈ, ΡΠΎΠ³Π°Ρ ΡΠ°ΠΌΠ°ΡΠ° Π³ΡΡΠΏΠ° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΡΠ΅ Π³ΠΈ ΠΎΡΡΡΡΠ°Π½ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈΠ»ΠΈ ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ²ΠΈ ΡΠΏΠΎΡΠ΅Π΄ ΡΠΎΠΏΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ°.
ΠΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ Π½Π°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ°, ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½Π° Π³ΡΡΠΏΠ° Π½Π° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΊΠΎΠΈ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° Π½Π° Π΄ΠΈΡΠΊΠΎΡ.
ΠΠ½Π° ΡΡΠΎ Π΅ Π½Π°Π²ΠΈΡΡΠΈΠ½Π° ΠΈΠ·Π²ΠΎΠ½ΡΠ΅Π΄Π½ΠΎ Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°. Π¦Π΅Π»Π½Π°ΡΠ° Π³ΡΡΠΏΠ° Π²ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΡΠΎ Load Balancer ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π±Π°Π»Π°Π½ΡΠ΅Ρ L3 Π½Π° Π²ΡΠ²ΠΎΡ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΎΠ΄ ΠΎΠ²Π°Π° Π³ΡΡΠΏΠ° ΡΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡΠ²Π°ΡΠ΅ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΠΏΡΠΈΡΠ°.
ΠΡΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π±Π°Π»Π°Π½ΡΠ΅ΡΠΎΡ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π² Π΄Π²Π΅ Π²Π°ΠΆΠ½ΠΈ ΡΠΎΡΠΊΠΈ:
- ΠΠΎ Π½Π°ΡΠ΅ΡΠ°Π² Π±Π°Π»Π°Π½ΡΠ΅ΡΠΎΡ Π΄Π° Π³ΠΎ ΠΏΡΠΈΡΠ°ΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΎΡ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ Π½Π° ΠΏΠΎΡΡΠ°ΡΠ° 80 ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠΈ ΠΊΠΎΠ½ ΠΏΠΎΡΡΠ°ΡΠ° 3000 ΠΎΠ΄ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠΎΠΊΠΌΡ ΡΠ°ΠΌΡ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΆΠΈΠ²Π΅Π΅ ΠΡΠ°ΡΠ°Π½Π°.
- ΠΠΎΡΡΠ°Π²ΠΈΠ² ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΎΠ΄ΡΠΆΠ»ΠΈΠ²ΠΎΡΡΠ° Π½Π° ΠΌΠ°ΡΠΈΠ½ΠΈΡΠ΅ ΡΠΎ ΡΠΎΠ° ΡΡΠΎ Π³ΠΈ ΠΏΠΈΠ½Π³ΠΈΡΠ°Π² Π΄ΠΎ ΠΏΠΎΡΡΠ°ΡΠ° 3000.
ΠΠΈΠ½ΠΈ ΡΠ΅Π·ΠΈΠΌΠ΅
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Π²ΠΌΠ΅ ΡΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ ΡΠ°ΠΊΠ°Π½Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΊΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΡΠ΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π΅Π»Π°ΡΡΠΈΡΠ½Π° ΡΡΠ»ΡΠ³Π° Grafana. Π’ΡΠ΅Π±Π° ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ° Π·Π½Π°Π΅ΡΠ΅ IP Π°Π΄ΡΠ΅ΡΠ°ΡΠ° Π½Π° Π±Π°Π»Π°Π½ΡΠ΅ΡΠΎΡ ΠΊΠ°ΠΊΠΎ Π²Π»Π΅Π·Π½Π° ΡΠΎΡΠΊΠ° Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΈ Π΄ΠΎΠΌΠ°ΡΠΈΠ½ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ClickHouse Π·Π° Π΄Π° ΡΠ° Π²ΡΠΈΡΠ°ΡΠ΅ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ Π½Π΅Π°.
ΠΠ°Π»ΠΈ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠ±Π΅Π΄Π°? ΠΠ°, ΠΏΠΎΠ±Π΅Π΄Π°. ΠΠΎ ΡΠ΅ΠΏΠ°ΠΊ Π½Π΅ΡΡΠΎ ΠΌΠ΅ Π·Π±ΡΠ½ΡΠ²Π°. Π¦Π΅Π»ΠΈΠΎΡ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠΎΠ³ΠΎΡΠ΅ Π±Π°ΡΠ° ΠΌΠ½ΠΎΠ³Ρ ΡΠ°ΡΠ½ΠΈ ΡΠ΅ΠΊΠΎΡΠΈ ΠΈ Π²ΠΎΠΎΠΏΡΡΠΎ Π½Π΅ Π΅ ΡΠΊΠ°Π»Π°Π±ΠΈΠ»Π΅Π½; Π±ΠΈ ΡΠ°ΠΊΠ°Π» Π΄Π° Π³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΠΌ Π°ΠΊΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ²Π° Π΅ ΠΎΠ½Π° Π½Π° ΡΡΠΎ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π΄Π΅Π».
Π’Π΅ΡΠ°ΡΠΎΡΠΌΠ½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ°
ΠΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π°Π»Π°ΡΠΊΠ° ΠΎΠ΄ HashiCorp Π½Π°ΡΠ΅ΡΠ΅Π½Π°
Π¦Π΅Π»Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Terraform ΡΠ΅ ΡΠ²Π΅Π΄ΡΠ²Π° Π½Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° (*.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 β ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ. ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ ΠΎΠ΄
cloud_id β ΠΎΠ±Π»Π°ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠ°Π΄Π΅ ΡΠ΅ ΡΠ° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°
folder_id β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΠ΅ΠΊΡΠΈΡΠ° ΠΊΠ°Π΄Π΅ ΡΠ΅ ΡΠ° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°
service_account_id β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΡΠ»ΡΠΆΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π²ΠΎ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ ΠΎΠ±Π»Π°ΠΊΠΎΡ.
image_id β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° Π½Π° Π΄ΠΈΡΠΊΠΎΡ Π΄ΠΎΠ±ΠΈΠ΅Π½Π° ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Packer
ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎ ΠΈΠΌΠ΅ ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° β ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎ ΠΈΠΌΠ΅ ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ Π±Π°Π·ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ Π΄ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΡ 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 ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈ Π΄ΡΡΠΈ ΠΏΠΎΡΠΎΠ°, Π·Π½Π°Π΅ΡΡΠΈ Π³ΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ ID, ΡΠΎΠ±ΡΠ°Π² ΡΠ»ΠΈΠΊΠ° Π½Π° Π΄ΠΈΡΠΊΠΎΡ ΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°, ΠΊΠ°Π΄Π΅ ΡΡΠΎ Π³ΠΎ Π½Π°Π²Π΅Π΄ΠΎΠ² Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ. ΠΠΎ, ΡΠ΅Π³Π° Π½Π΅ Π³ΠΎ Π·Π½Π°Π΅ΠΌΠ΅ ID Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΠΏΡΠ΅Π΄ Π΄Π° Π³ΠΎ Π»Π°Π½ΡΠΈΡΠ°ΠΌΠ΅ Terraform, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ°. ΠΠ°ΡΠΎΠ°, ΠΌΠΎΡΠ°Π² Π΄Π° ΠΏΡΠΈΠ±Π΅Π³Π½Π°ΠΌ ΠΊΠΎΠ½ ΡΠ»Π΅Π΄Π½ΠΎΠ²ΠΎ
ΠΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° 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
. Π’ΠΎΠΊΠΌΡ ΡΠΈΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° ΡΠ΅ Π³ΠΈ ΠΈΠ·Π²Π°Π΄ΠΈ ΠΏΡΠΈ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠ΅ Π³ΠΈ ΡΡΠ°Π²ΠΈ Π²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Grafana.
Π’ΠΎΠ° Π΅ Π΄ΠΎ Π±Π°Π»Π°Π½ΡΠ΅ΡΠΎΡ.
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 ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ (ΡΠΈΡ ID ΡΓ¨ ΡΡΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅) ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π²ΠΎΡ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΎ, Terraform Π³ΠΎ Π·Π½Π°Π΅ ID Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ. ΠΠ° ΠΌΡ Π΄ΠΎΠ²Π΅ΡΠΈΠΌΠ΅ Π΄Π° ΡΠ° Π΄ΠΎΠ²Π΅Π΄Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π΄ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠ°.
ΠΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ Π½ΠΎΠ² ΠΏΡΠΎΠ²Π°ΡΠ΄Π΅Ρ - ΠΡΠ°ΡΠ°Π½Π° ΠΈ Π΄Π° ΠΈ ΡΠ° Π΄Π°Π΄Π΅ΠΌΠ΅ IP Π°Π΄ΡΠ΅ΡΠ°ΡΠ° Π½Π° Π±Π°Π»Π°Π½ΡΠ΅ΡΠΎΡ ΠΊΠ°ΠΊΠΎ Π΄ΠΎΠΌΠ°ΡΠΈΠ½. Π‘ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΡΠΎ Π³ΠΈ ΠΏΡΠ°Π²ΠΈ Terraform Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° Π½Π΅ΡΠ·ΠΈΠ½ΠΈΠΎΡ Π±Π°Π»Π°Π½ΡΠ΅Ρ ΡΠ΅ ΡΠ°ΡΡΠ°Ρ Π²ΠΎ 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"
}
ΠΡΠ΄Π΅ Π΄Π° ΡΠ° ΠΈΡΡΠ΅ΡΠ»Π°ΠΌΠ΅ ΠΊΠΎΡΠ°ΡΠ°
ΠΡΠ΄Π΅ Π΄Π° ΡΠ° ΠΏΡΠΈΠΊΠ°ΠΆΠ΅ΠΌΠ΅ IP Π°Π΄ΡΠ΅ΡΠ°ΡΠ° Π½Π° Π±Π°Π»Π°Π½ΡΠ΅ΡΠΎΡ ΠΈ Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ClickHouse
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"
}
ΠΠΎΠΆΠ΅ Π΄Π° ΡΡΡΠ°
Π‘ΠΈΡΠ΅! ΠΠ°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π° ΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠ΅, ΡΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅, Π΄Π° ΠΌΡ ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ Π½Π° Terraform Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ ΡΠ΅ΡΠΎ ΠΎΠ½Π° ΡΡΠΎ Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π²ΠΌΠ΅ ΠΏΠΎΠ³ΠΎΡΠ΅. Π¦Π΅Π»ΠΈΠΎΡ ΠΏΡΠΎΡΠ΅Ρ ΠΌΠΈ ΡΡΠ°Π΅ΡΠ΅ ΠΎΠΊΠΎΠ»Ρ 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 ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Π²ΠΎ ΠΎΠ²Π°. Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° Π½Π΅ΠΊΠΎΡ ΡΠ΅ ΡΠ° Π½Π°ΡΠ΄Π΅ ΠΎΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠΈΡΠ½Π° :)
Π.Π‘. ΠΠΎΠ΄ΠΎΠ»Ρ ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΡΠ°ΠΌ Π²ΡΡΠΊΠ° Π΄ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΠ΄Π΅ΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ ΡΠ΅ΡΠ΅ΠΏΡΠΈ Π·Π° Packer ΠΈ Terraform, ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ ΠΎΠ΄ ΠΊΠΎΠΈ Π΄Π°Π΄ΠΎΠ² Π²ΠΎ ΠΎΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ°.
ΠΠ·Π²ΠΎΡ: www.habr.com