ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ! ΠΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ ΠΌΠΎΡΡΠ° ΠΊΡΡΡΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΡΡΠ²Π°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ°ΠΊΠ°Π²Π° Π²ΡΡΡΠ΅ΡΠ½Π° ΠΎΠ±Π»Π°ΡΠ½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΊΠ°ΡΠΎ . ΠΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΎΠ±Π°ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π²Π°ΡΠ΅ΡΠΎ ΠΎΠ±Π»Π°ΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π΄ΠΎΡΡΠ° ΠΎΠ±ΡΠΈΡΠ½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° ΡΠ΅Π·ΠΈ ΡΡΠ»ΡΠ³ΠΈ. Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»Ρ ΠΎΠΏΠΈΡΠ° ΠΎΡ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠΠ°ΠΊΠ²ΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅?
- ΠΌΠΎΡΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. Π ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠΎΠ²Π° Π΅ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Ρ ΡΠ΅Π± ΡΡΡΠ²ΡΡ Grafana, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ (ClickHouse, InfluxDB ΠΈ Π΄Ρ.) Ρ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·ΠΈ.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Ρ ΡΠ΅Π± ΡΡΡΠ²ΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° Π½Π΅ΠΉΠ½ΠΈΡ Ρ ΠΎΡΡ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΊΡΠ°ΡΠΈΠ² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΊΠ°ΡΠΎ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°, Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ°Π±Π»Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ.

ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ - ΡΡ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ Π΅ ΡΡΡΠΎΠΉΡΠΈΠ²Π° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. Π’ΠΎΠ΅ΡΡ, ΡΡΠ»Π°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π½Π° Π΅Π΄Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°. ΠΠΊΠΎ ΡΡ ΠΎΡΠΊΠ°ΠΆΠ΅ ΠΈΠ»ΠΈ Π°ΠΊΠΎ 10 Π΄ΡΡΠΈ ΠΎΡΠ²ΠΎΡΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
Π’Π΅ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ ΠΏΡΠΎΡΡΠΎ: ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ Ρ ΡΠ΅Π± ΡΡΡΠ²ΡΡ ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΏΠΎΠ΄ L3 Π±Π°Π»Π°Π½ΡΡΠΎΡ. ΠΠΎ ΡΡΠΊ Π½Π΅ Π²ΡΠΈΡΠΊΠΎ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΡΠ½ΠΎ. Grafana ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ (ΠΏΡΡΠΈΡΠ° ΠΊΡΠΌ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠ°Π±Π»Π°, Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π΄Ρ.) Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Π΄ΠΈΡΠΊΠ° Π½Π° ΡΠ²ΠΎΡΡΠ° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½ΡΠΊΠΎΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠΎΠ³Π°Π²Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ ΡΠ°ΠΌΠΎ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°, ΠΊΡΠ΄Π΅ΡΠΎ Π±Π°Π»Π°Π½ΡΡΠΎΡΡΡ Π½ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠΈ. Π’ΠΎΠ²Π° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π° Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ.
Π’ΡΠΊ Π΄ΡΡΠ³Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΡΠ΅ Π΄ΠΎΠΉΠ΄Π΅ Π½Π° ΠΏΠΎΠΌΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ MySQL ΠΈΠ»ΠΈ Π½Π΅Π³ΠΎΠ² Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ. ΠΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° Grafana, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΡΠ°Π·ΠΈ "ΡΠ΅Π·Π΅ΡΠ²Π½Π°" Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΏΡΡΡ Π΄ΠΎ ΡΠ°Π·ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π° Π²ΡΡΠΊΠ° ΠΌΠ°ΡΠΈΠ½Π° Π²Π΅Π΄Π½ΡΠΆ ΠΈ Π΄Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΠΊΠΎΡΡΠΎ ΠΈ Π΄Π° Π΅ ΠΎΡ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠ΅ ΡΠ΅ ΡΠ°ΡΡΠ°Ρ Π½Π° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅.
ΠΡΠΎ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ:

ΠΠ°ΡΡΠ΅ΡΠ΅ ΡΠ΅ Π΄Π° ΠΏΠΎΠ²Π΄ΠΈΠ³Π°ΡΠ΅ Ρ ΡΡΡΠ΅
MySQL ΠΈ ClickHouse
ΠΡΠ΅Π΄ΠΈ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΡΠ΅ ΡΠ°ΠΊΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ Π±ΡΡΠΎΠ½, Π±Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΏΠΎΠ²Π΄ΠΈΠ³Π°ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Ρ Π΄ΡΡΠΆΠΊΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅ Π΅Π΄ΠΈΠ½ Ρ Π΄ΡΡΠ³.
Π’ΡΠΊ ΡΠ΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ 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
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ 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 ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΡΠ°ΡΠΈΠ²ΠΈΡ UI grafana.

ΠΠΎ Π½Π΅ Π±ΡΡΠ·Π°ΠΉΡΠ΅, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ Grafana, Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΏΡΡΡ Π΄ΠΎ MySQL, Π·Π° Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΡΠ°ΠΌ.
Π¦ΡΠ»Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ° Grafana Π΅ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° /etc/grafana/grafana.ini. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡΡ ΡΠ΅Π΄ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
;url =ΠΠΈΠ΅ ΠΈΠ·Π»Π°Π³Π°ΠΌΠ΅ Ρ
ΠΎΡΡΠ° Π½Π° MySQL ΠΊΠ»ΡΡΡΠ΅ΡΠ°. Π‘ΡΡΠΈΡΡ ΡΠ°ΠΉΠ» ΡΡΠ΄ΡΡΠΆΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΈΠΌΠ΅ ΠΈ ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Grafana Π½Π° ΡΠ½ΠΈΠΌΠΊΠ°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π΅Π΄Π½Π°ΠΊΠ²ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ 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 ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈΠΌ ClickHouse ΠΊΠ°ΡΠΎ DataSource.
Π£ΡΠΏΡΡ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΡΡ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:

ΠΠ°Π΄ΠΎΡ
ΠΊΠ°ΡΠΎ URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
ΠΡΠΈΡΠΊΠΎ! ΠΠΌΠ°ΠΌΠ΅ Π΅Π΄Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΡΠ° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Ρ ΡΠ΅Π± ΡΡΡΠ²ΡΡ, ΡΠ²ΡΡΠ·Π°Π½ ΠΊΡΠΌ CH ΠΈ MySQL. ΠΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠ°ΡΠΈΡΠ΅ Π½Π°Π±ΠΎΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ Π² ClickHouse ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ°Π±Π»Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. ΠΡΠ΅ ΠΎΡΠ΅ ΠΎΠ±Π°ΡΠ΅ Π½Π΅ ΡΠΌΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Π»ΠΈ ΡΠ΅Π»ΡΠ° ΡΠΈ ΠΈ Π½Π΅ ΡΠΌΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠ»ΠΈ ΠΏΡΠ»Π½ΠΎΡΠ΅Π½Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°.
ΠΠΏΠ°ΠΊΠΎΠ²ΡΠΈΠΊ
Yandex.Cloud Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ. Π’ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅. ΠΠ° Π΄Π° ΡΠ³Π»ΠΎΠ±ΠΈΡΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΎΡ HashiCorp. Π’ΠΎΠΉ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΊΠ°ΡΠΎ Π²Ρ ΠΎΠ΄ json ΡΠ°ΠΉΠ» Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠ°ΡΠΈΡΡ json ΡΠ°ΠΉΠ» ΡΠ΅ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΄Π²Π° Π±Π»ΠΎΠΊΠ°: builders ΠΈ providers. ΠΡΡΠ²ΠΈΡΡ Π±Π»ΠΎΠΊ ΠΎΠΏΠΈΡΠ²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΡΠ°ΠΌΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ, Π° Π²ΡΠΎΡΠΈΡΡ ΠΎΠΏΠΈΡΠ²Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ΡΠΎ ΠΌΡ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅.
Π‘ΡΡΠΎΠΈΡΠ΅Π»ΠΈΡΠ΅
{
"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-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;Π‘Π΅Π³Π° ΠΎΡΡΠ°Π²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Packer ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΎ Π² ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ Π΄ΡΠ». ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Ρ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΡΠΎ Π΄ΠΈΡΠΊ Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ ΠΈ ΡΠ»Π΅Π΄ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π³ΠΎΡΠΎΠ² ΡΠ΅Π± ΡΡΡΠ²ΡΡ Π½Π° Grafana.


ΠΡΡΠΏΠ° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ ΠΈ Π±Π°Π»Π°Π½ΡΡΠΎΡ
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ° Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠΈ Π½Π° Grafana, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π³ΡΡΠΏΠ° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ. Π ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Yandex.Cloud ΡΠΎΠ·ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ. ΠΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΏΡΠΎΡΠΎΡΠΈΠΏΡΡ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ Π² ΡΠ°Π·ΠΈ Π³ΡΡΠΏΠ° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΠ°ΠΌΠ°ΡΠ° Π³ΡΡΠΏΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ Π±ΡΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ). ΠΠΊΠΎ ΡΠ΅ΠΊΡΡΠΈΡΡ Π±ΡΠΎΠΉ Π½Π΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΡΠΎΠ·ΠΈ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ, ΡΠΎΠ³Π°Π²Π° ΡΠ°ΠΌΠ°ΡΠ° Π³ΡΡΠΏΠ° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ Π½Π΅Π½ΡΠΆΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈΠ»ΠΈ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ²ΠΈ ΠΏΠΎ ΠΎΠ±ΡΠ°Π· ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅.
ΠΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ Π½Π°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π³ΡΡΠΏΠ° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ ΠΎΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΎΡΠΎ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.


ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΎΠ½Π½Π° Π³ΡΡΠΏΠ° Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½Π°. Π¦Π΅Π»Π΅Π²Π°ΡΠ° Π³ΡΡΠΏΠ° Π² ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Load Balancer ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ L3 Π±Π°Π»Π°Π½ΡΡΠΎΡ Π²ΡΡΡ Ρ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΎΡ ΡΠ°Π·ΠΈ Π³ΡΡΠΏΠ°, ΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π±ΡΡΠΎΠ½Π°.

ΠΠΎΠ³Π°ΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠ°, Π²Π½Π΅Π΄ΡΠΈΡ Π΄Π²Π΅ Π²Π°ΠΆΠ½ΠΈ ΡΠΎΡΠΊΠΈ:
- ΠΠ°ΠΏΡΠ°Π²ΠΈΡ Π³ΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ Π±Π°Π»Π°Π½ΡΡΠΎΡΡΡ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΡΠ°ΡΠΈΠΊ Π½Π° ΠΏΠΎΡΡ 80 ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π° ΠΊΡΠΌ ΠΏΠΎΡΡ 3000 Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠΎΡΠ½ΠΎ ΠΊΡΠ΄Π΅ΡΠΎ ΠΆΠΈΠ²Π΅Π΅ Grafana.
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΠΈΠ·ΠΏΡΠ°Π²Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°, ΠΊΠ°ΡΠΎ Π³ΠΈ ΠΏΠΈΠ½Π³Π²Π°ΡΠ΅ Π½Π° ΠΏΠΎΡΡ 3000.

ΠΌΠΈΠ½ΠΈ-ΠΎΠ±ΡΠΎ
ΠΠ°ΠΉ-Π½Π°ΠΊΡΠ°Ρ ΡΡΠΏΡΡ ΠΌΠ΅ ΡΡΡΠ½ΠΎ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΠΌ ΠΆΠ΅Π»Π°Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΈ ΡΠ΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΠΎΠΉΡΠΈΠ²Π° ΡΡΠ»ΡΠ³Π° Grafana. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ ΡΠ°ΠΌΠΎ Π΄Π° Π·Π½Π°Π΅ΡΠ΅ IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ° ΠΊΠ°ΡΠΎ Π²Ρ ΠΎΠ΄Π½Π° ΡΠΎΡΠΊΠ° ΠΊΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Ρ ΠΎΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° ClickHouse, Π·Π° Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈΡΠ΅ Π½Π°Π±ΠΎΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ Π² Π½Π΅Π³ΠΎ.
ΠΠ·Π³Π»Π΅ΠΆΠ΄Π° Π»ΠΈ ΠΏΠΎΠ±Π΅Π΄Π°? ΠΠ°, ΠΏΠΎΠ±Π΅Π΄Π°. ΠΠΎ Π²ΡΠ΅ Π½Π΅ΡΠΎ ΠΌΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°. Π¦Π΅Π»ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°, ΠΈΡΠΊΠ°ΠΌ Π΄Π° Π³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΠΌ, Π°ΠΊΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’ΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠΎΠΊΡΡΡΡ Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΡΠ°Π·Π΄Π΅Π».
Terraform ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ
ΠΡΠ½ΠΎΠ²ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΎΡ 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, ΡΡΠ±ΡΠ°Ρ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΆΠ΅Π»Π°Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΏΠΎΡΠΎΡΠΈΡ Ρ ΠΎΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠΎ ΡΠ΅Π³Π° Π½Π΅ Π·Π½Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° 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 restartIntance Π³ΡΡΠΏΠ° ΠΈ Π±Π°Π»Π°Π½ΡΡΠΎΡ
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΌΠ΅ Π½ΠΎΠ²ΠΎΡΠΎ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΉ-Π½Π°ΠΊΡΠ°Ρ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π°ΡΠΈΡ ΡΠ°ΠΉΠ» Π·Π° 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 ΠΈ ΡΡΡΠ½ΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ CH ΠΊΠ»ΡΡΡΠ΅ΡΠ° (ΡΠΈΠΉΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅) ΠΊΠ°ΡΠΎ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠΎ Terraform Π·Π½Π°Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠ΅ΠΊΠ° Π³ΠΎ Π½Π°ΠΊΠ°ΡΠ°ΠΌΠ΅ Π΄Π° Π΄ΠΎΠ²ΡΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ°.
ΠΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ² Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊ - Grafana, ΠΈ Π΄Π° ΠΌΡΡΠ½Π΅ΠΌ 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 ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Ρ ΡΠΎΠ²Π°. ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅ Π½ΡΠΊΠΎΠΉ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π·Π° ΠΏΠΎΠ»Π΅Π·Π½Π° π
PS ΠΠΎ-Π΄ΠΎΠ»Ρ ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΡΠ° Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ ΡΠ΅ΡΠ΅ΠΏΡΠΈ Π·Π° Packer ΠΈ Terraform, ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΠΈΡΠΈΡΠ°Ρ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com
