ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ всички! ΠšΠ°Ρ‚ΠΎ част ΠΎΡ‚ моята курсова Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΡƒΡ‡Π²Π°Ρ… Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°ΠΊΠ°Π²Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° ΠΎΠ±Π»Π°Ρ‡Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ°Ρ‚ΠΎ Yandex.Cloud. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ услуги Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° практичСски Π·Π°Π΄Π°Ρ‡ΠΈ. Понякога ΠΎΠ±Π°Ρ‡Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с доста ΠΎΠ±ΡˆΠΈΡ€Π½Π° инфраструктура, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° Ρ‚Π΅Π·ΠΈ услуги. Π’ Ρ‚Π°Π·ΠΈ статия искам Π΄Π° сподСля ΠΎΠΏΠΈΡ‚Π° ΠΎΡ‚ внСдряванСто Π½Π° Ρ‚Π°ΠΊΠΎΠ²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Какво искатС Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅?

Π“Ρ€Π°Ρ„Π°Π½Π° - ΠΌΠΎΡ‰Π΅Π½ инструмСнт Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π°Π½Π°Π»ΠΈΡ‚ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° всякакви систСми. Π’ основната си конфигурация Ρ‚ΠΎΠ²Π° Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина с ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ Grafana, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ (ClickHouse, InfluxDB ΠΈ Π΄Ρ€.) с Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·ΠΈ.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ стартиратС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина с ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° нСйния хост ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ красив потрСбитСлски интСрфСйс, Π΄Π° посочитС Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π·Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°, Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Ρ‚Π°Π±Π»Π° Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° вСрсия ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ - тя ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ Π΅ устойчива Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ. ВоСст, цялата производитСлност Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ зависи ΠΎΡ‚ ТизнСспособността Π½Π° Π΅Π΄Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина. Ако тя ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ ΠΈΠ»ΠΈ Π°ΠΊΠΎ 10 Π΄ΡƒΡˆΠΈ отворят потрСбитСлския интСрфСйс Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‰Π΅ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

Π’Π΅ сС Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ просто: просто трябва Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини с ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ Π΄Π° Π³ΠΈ поставитС ΠΏΠΎΠ΄ L3 Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€. Но Ρ‚ΡƒΠΊ Π½Π΅ всичко Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ясно. Grafana ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° потрСбитСлскитС настройки (ΠΏΡŠΡ‚ΠΈΡ‰Π° към Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Ρ‚Π°Π±Π»Π°, Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Π΄Ρ€.) Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° диска Π½Π° своята Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π°ΠΊΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ някои настройки Π² потрСбитСлския интСрфСйс, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ само Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° машина, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ΡŠΡ‚ Π½ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ. Π’ΠΎΠ²Π° Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ нСпослСдоватСлни настройки Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ стартиранСто ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ.

Π’ΡƒΠΊ Π΄Ρ€ΡƒΠ³Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Ρ‰Π΅ Π΄ΠΎΠΉΠ΄Π΅ Π½Π° ΠΏΠΎΠΌΠΎΡ‰, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ MySQL ΠΈΠ»ΠΈ Π½Π΅Π³ΠΎΠ² Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚. КазвамС Π½Π° Grafana, Ρ‡Π΅ трябва Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° потрСбитСлскитС настройки Π² Ρ‚Π°Π·ΠΈ "Ρ€Π΅Π·Π΅Ρ€Π²Π½Π°" Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° посочитС ΠΏΡŠΡ‚Ρ Π΄ΠΎ Ρ‚Π°Π·ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π° всяка машина вСднъТ ΠΈ Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ всички Π΄Ρ€ΡƒΠ³ΠΈ потрСбитСлски настройки Π½Π° която ΠΈ Π΄Π° Π΅ ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ машини, Ρ‚Π΅ Ρ‰Π΅ растат Π½Π° останалитС.

Π•Ρ‚ΠΎ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π½Π° ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° инфраструктура Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ:

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

НаучСтС сС Π΄Π° ΠΏΠΎΠ²Π΄ΠΈΠ³Π°Ρ‚Π΅ с Ρ€ΡŠΡ†Π΅

MySQL ΠΈ ClickHouse

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠ²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с натисканСто Π½Π° Π΅Π΄ΠΈΠ½ Π±ΡƒΡ‚ΠΎΠ½, бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Π΄Π° ΠΏΠΎΠ²Π΄ΠΈΠ³Π°Ρ‚Π΅ всСки ΠΎΡ‚ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ с Π΄Ρ€ΡŠΠΆΠΊΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Ρ‚Π΅ Π΅Π΄ΠΈΠ½ с Π΄Ρ€ΡƒΠ³.

Π’ΡƒΠΊ Ρ‰Π΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Yandex.Cloud, ΠΊΠΎΠΉΡ‚ΠΎ прСдоставя L3 Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ΠΈ, ClickHouse ΠΈ MySQL ΠΊΠ°Ρ‚ΠΎ управлявани услуги. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΡ‚ трябва само Π΄Π° посочи ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΈ Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ всичко Π² Ρ€Π°Π±ΠΎΡ‚Π½ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅.

РСгистрирах сС, ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… ΠΎΠ±Π»Π°ΠΊ ΠΈ смСтка Π·Π° таксуванС Π·Π° сСбС си. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΎΡ‚ΠΈΠ΄ΠΎΡ… Π² ΠΎΠ±Π»Π°ΠΊΠ° ΠΈ ΠΏΠΎΠ²Π΄ΠΈΠ³Π½Π°Ρ… MySQL ΠΈ ClickHouse ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ настройки. Π˜Π·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ станат Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ.

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ примСрВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° трябва Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ във всСки ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΈ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ нСя Ρ‡Ρ€Π΅Π· потрСбитСлско ΠΈΠΌΠ΅ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π°. Π’ΡƒΠΊ няма Π΄Π° Π½Π°Π²Π»ΠΈΠ·Π°ΠΌ Π² подробности - всичко Π΅ съвсСм ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π² интСрфСйса.

НСочСвидната подробност бСшС, Ρ‡Π΅ Ρ‚Π΅Π·ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈΠΌΠ°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ хостовС, ΠΊΠΎΠΈΡ‚ΠΎ осигуряват тяхната толСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ. Grafana ΠΎΠ±Π°Ρ‡Π΅ изисква Ρ‚ΠΎΡ‡Π½ΠΎ Π΅Π΄ΠΈΠ½ хост Π·Π° всяка Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, с която Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π”ΡŠΠ»Π³ΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅ докумСнтация ΠžΠ±Π»Π°Ρ†ΠΈΡ‚Π΅ ΠΌΠ΅ Π½Π°ΠΊΠ°Ρ€Π°Ρ…Π° Π΄Π° Π²Π·Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Оказва сС, Ρ‡Π΅ Π΄ΠΎΠΌΠ°ΠΊΠΈΠ½ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° c-<cluster_id>.rw.mdb.yandexcloud.net ΠšΠ°Ρ€Ρ‚ΠΈΡ€Π° към тСкущия Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π³Π»Π°Π²Π΅Π½ хост Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° със ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π’ΠΎΠ²Π° Ρ‰Π΅ Π΄Π°Π΄Π΅ΠΌ Π½Π° Π“Ρ€Π°Ρ„Π°Π½Π°.

ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€

Π‘Π΅Π³Π° Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€Π°. НСка настроим ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина с Linux ΠΈ Ρ‰Π΅ поставим Π“Ρ€Π°Ρ„Π°Π½Π° Π²ΡŠΡ€Ρ…Ρƒ Π½Π΅Π³ΠΎ с Ρ€ΡŠΡ†Π΅Ρ‚Π΅ си.

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° 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 ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ красивия UI grafana.
ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° 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.

Успях Π΄Π° постигна Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° конфигурация със слСднитС настройки:

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”Π°Π΄ΠΎΡ… ΠΊΠ°Ρ‚ΠΎ 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-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 с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€
ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π“Ρ€ΡƒΠΏΠ° СкзСмпляри ΠΈ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ° дисково ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π½Π° Grafana, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° създадСм Π³Ρ€ΡƒΠΏΠ° СкзСмпляри. Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Yandex.Cloud Ρ‚ΠΎΠ·ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ сС отнася Π΄ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ характСристики. ΠŸΡ€ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Ρ€ΡƒΠΏΠ° СкзСмпляри сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡŠΡ‚ Π½Π° всички машини Π² Ρ‚Π°Π·ΠΈ Π³Ρ€ΡƒΠΏΠ° ΠΈ слСд Ρ‚ΠΎΠ²Π° характСристикитС Π½Π° самата Π³Ρ€ΡƒΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ минималния ΠΈ максималния Π±Ρ€ΠΎΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ машини). Ако тСкущият Π±Ρ€ΠΎΠΉ Π½Π΅ отговаря Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ, Ρ‚ΠΎΠ³Π°Π²Π° самата Π³Ρ€ΡƒΠΏΠ° СкзСмпляри Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ Π½Π΅Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ машини ΠΈΠ»ΠΈ Ρ‰Π΅ създадС Π½ΠΎΠ²ΠΈ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π· ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅.

ΠšΠ°Ρ‚ΠΎ част ΠΎΡ‚ Π½Π°ΡˆΠ°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Ρ‰Π΅ създадСм Π³Ρ€ΡƒΠΏΠ° СкзСмпляри ΠΎΡ‚ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ създадСни ΠΎΡ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ дисково ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Настройката Π½Π° послСдната инстанционна Π³Ρ€ΡƒΠΏΠ° Π΅ наистина Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½Π°. Π¦Π΅Π»Π΅Π²Π°Ρ‚Π° Π³Ρ€ΡƒΠΏΠ° Π² интСграция с Load Balancer Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° настроитС L3 Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π²ΡŠΡ€Ρ…Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ машини ΠΎΡ‚ Ρ‚Π°Π·ΠΈ Π³Ρ€ΡƒΠΏΠ°, ΠΊΠ°Ρ‚ΠΎ натиснСтС няколко Π±ΡƒΡ‚ΠΎΠ½Π°.

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ΠšΠΎΠ³Π°Ρ‚ΠΎ настройвах балансира, Π²Π½Π΅Π΄Ρ€ΠΈΡ… Π΄Π²Π΅ Π²Π°ΠΆΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ:

  1. Направих Π³ΠΎ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ΡŠΡ‚ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° потрСбитСлски Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΠΏΠΎΡ€Ρ‚ 80 ΠΈ Π΄Π° Π³ΠΎ прСнасочва към ΠΏΠΎΡ€Ρ‚ 3000 Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΆΠΈΠ²Π΅Π΅ Grafana.
  2. НастройтС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° изправността Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ Π³ΠΈ ΠΏΠΈΠ½Π³Π²Π°Ρ‚Π΅ Π½Π° ΠΏΠΎΡ€Ρ‚ 3000.

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ΠΌΠΈΠ½ΠΈ-ΠΎΠ±Ρ‰ΠΎ

Най-накрая успяхмС Ρ€ΡŠΡ‡Π½ΠΎ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΠΌ ΠΆΠ΅Π»Π°Π½Π°Ρ‚Π° инфраструктура Π½Π° прилоТСнията ΠΈ сСга ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ устойчива услуга 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 restart

Intance Π³Ρ€ΡƒΠΏΠ° ΠΈ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ…ΠΌΠ΅ Π½ΠΎΠ²ΠΎΡ‚ΠΎ дисково ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΉ-накрая ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ нашия Ρ„Π°ΠΉΠ» Π·Π° 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

И Π² ΠΎΠ±Π»Π°ΠΊΠ° Ρ‰Π΅ сС Π²ΠΈΠΆΠ΄Π°Ρ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ ΠΏΠΎΠ²Π΄ΠΈΠ³Π½Π°Ρ‚Π°Ρ‚Π° инфраструктура:

ВнСдряванС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ услуги Π² Yandex.Cloud с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Grafana ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π‘ΡƒΠΌΠΈΡ€Π°ΠΉΡ‚Π΅

Π‘Π΅Π³Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° Grafana, всСки ΠΎΡ‚ вас ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈ прилоТСния с ΠΎΠ±ΡˆΠΈΡ€Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Yandex.Cloud. ПолСзни инструмСнти ΠΎΡ‚ HashiCorp ΠΊΠ°Ρ‚ΠΎ Packer ΠΈ Terraform ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ с Ρ‚ΠΎΠ²Π°. Надявам сС някой Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈ Ρ‚Π°Π·ΠΈ статия Π·Π° ΠΏΠΎΠ»Π΅Π·Π½Π° πŸ™‚

PS По-Π΄ΠΎΠ»Ρƒ Ρ‰Π΅ ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π° Π²Ρ€ΡŠΠ·ΠΊΠ° към Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΈ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΈ Π·Π° Packer ΠΈ Terraform, Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Ρ†ΠΈΡ‚ΠΈΡ€Π°Ρ… Π² Ρ‚Π°Π·ΠΈ статия.

Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с DDoS Π·Π°Ρ‰ΠΈΡ‚Π°, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΡƒΠ΅Π± хостинг със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS Π°Ρ‚Π°ΠΊΠΈ, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster