เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเบ„เบปเบ™! เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฑเบเบชเบนเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ‚เป‰เบญเบเป„เบ”เป‰เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เป€เบงเบ—เบตเบŸเบฑเบ‡เบžเบฒเบเปƒเบ™เบ›เบฐเป€เบ—เบ”เป€เบŠเบฑเปˆเบ™: Yandex.Cloud. เป€เบงเบ—เบตเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ•เปˆเบฒเบ‡เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบžเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ„เบฅเบฒเบงเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ”เป‰เบงเบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ‚เป‰เบญเบเบขเบฒเบเปเบšเปˆเบ‡เบ›เบฑเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เป€เบˆเบปเป‰เบฒเบขเบฒเบเป„เบ”เป‰เบซเบเบฑเบ‡?

เบเบฃเบฒเบŸเบฒเบ™เบฒ โ€” เป€เบ›เบฑเบ™โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบญเปเบฒโ€‹เบ™เบฒเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบซเบผเบทโ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เบ‚เบญเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹. เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ Grafana, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ (ClickHouse, InfluxDB, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เบ—เบตเปˆเบกเบตเบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบˆเบฐเบญเบตเบ‡เปƒเบชเปˆ.

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบ›เบตเบ”เบ•เบปเบงเป€เบ„เบทเปˆเบญเบ‡ virtual เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป„เบ›เบซเบฒเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบ‚เบญเบ‡เบกเบฑเบ™เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบš UI เบ—เบตเปˆเบชเบงเบเบ‡เบฒเบก, เบฅเบฐเบšเบธเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ•เปเปˆเป„เบ›, เบชเป‰เบฒเบ‡ dashboards เปเบฅเบฐเบเบฒเบŸ.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เบชเบฐโ€‹เบšเบฑเบšโ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เบกเบตโ€‹เบˆเบธเบ”โ€‹เบญเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เบซเบ™เบถเปˆเบ‡ - เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบ—เบปเบ™โ€‹เบ—เบฒเบ™โ€‹เบ•เปเปˆโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เบซเบ™เบถเปˆเบ‡. เบ–เป‰เบฒเบกเบฑเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบซเบผเบท 10 เบ„เบปเบ™เป€เบ›เบตเบ” UI เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเบฑเบ™เบซเบฒเบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™.

เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ‡เปˆเบฒเบเป†: เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ ... เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบซเบผเบฒเบเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเปเบฅเบฐเบงเบฒเบ‡เบžเบงเบเบกเบฑเบ™เบžเบฒเบเปƒเบ•เป‰เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡ L3. เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. Grafana เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบœเบนเป‰เปƒเบŠเป‰ (เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, dashboards, graphs, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เป‚เบ”เบเบเบปเบ‡เปƒเบ™เปเบœเปˆเบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual เบ‚เบญเบ‡เบกเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เบšเบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™ UI, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆ balancer เบชเบปเปˆเบ‡เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒ. เบ™เบตเป‰เบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เบเปเปˆเปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰.

เบ—เบตเปˆเบ™เบตเป‰เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เบˆเบฐเบกเบฒเป€เบ–เบดเบ‡เบเบนเป‰เป„เบž, เบ•เบปเบงเบขเปˆเบฒเบ‡, MySQL เบซเบผเบทเบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เบกเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบšเบญเบ Grafana เบงเปˆเบฒเบ™เบฒเบ‡เบ„เบงเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ " spare" เบ™เบตเป‰. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบˆเบฐเบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบฅเบฐเบšเบธเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบ„เบฑเป‰เบ‡เบ”เบฝเบงเปƒเบ™เปเบ•เปˆเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡, เปเบฅเบฐเปเบเป‰เป„เบ‚เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual; เบžเบงเบเบกเบฑเบ™เบˆเบฐเบ‚เบฐเบซเบเบฒเบเป„เบ›เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เบญเบทเปˆเบ™เป†.

เบ™เบตเป‰เปเบกเปˆเบ™เปเบœเบ™เบงเบฒเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบ:

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เปƒเบซเป‰เป€เบฎเบปเบฒเบฎเบฝเบ™เบฎเบนเป‰เบ—เบตเปˆเบˆเบฐเบเบปเบเบ”เป‰เบงเบเบกเบทเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ

MySQL เปเบฅเบฐ ClickHouse

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ”เป‰เบงเบเบเบฒเบ™เบเบปเบ”เบ›เบธเปˆเบก, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบกเบฑเบ™เปเบฅเบฐเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™.

เบ—เบตเปˆเบ™เบตเป‰ Yandex.Cloud เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡ L3 balancers, ClickHouse เปเบฅเบฐ MySQL เป€เบ›เบฑเบ™เบšเปเบฅเบดเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡. เบœเบนเป‰เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปเบฅเบฐเบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเป€เบงเบ—เบตเบ™เปเบฒเป€เบญเบปเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡.

เบ‚เป‰เบญเบเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, เบชเป‰เบฒเบ‡เป€เบกเบ„ เปเบฅเบฐเบšเบฑเบ™เบŠเบตเบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป„เบ›เบซเบฒเบ„เบฅเบฒเบงเปเบฅเบฐเบ•เบฑเป‰เบ‡เบเบธเปˆเบก MySQL เปเบฅเบฐ ClickHouse เบ”เป‰เบงเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบซเบ™เป‰เบญเบ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบžเบงเบเป€เบ‚เบปเบฒเบเบฒเบเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบทเปˆเบˆเปเบฒเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เปเบ•เปˆเบฅเบฐเบเบธเปˆเบกเปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบตเปˆเบ™เบตเป‰ - เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš.

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบตเปˆเบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบกเบตเบซเบผเบฒเบเป‚เบฎเบ”, เป€เบŠเบดเปˆเบ‡เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, Grafana เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบซเบ™เบถเปˆเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš. เบญเปˆเบฒเบ™เบเบฒเบง เป€เบญเบเบฐเบชเบฒเบ™ เป€เบกเบเป„เบ”เป‰เบ™เปเบฒเบ‚เป‰เบญเบเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ. เบกเบฑเบ™ turns เปƒเบซเป‰ เป€เบซเบฑเบ™ เบงเปˆเบฒ เป€เบˆเบปเป‰เบฒ เบžเบฒเบš เบ‚เบญเบ‡ เบŠเบฐ เบ™เบดเบ” c-<cluster_id>.rw.mdb.yandexcloud.net เปเบœเบ™เบ—เบตเปˆเบเบฑเบšเปเบกเปˆเบšเป‰เบฒเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเบ—เบตเปˆเบกเบต ID เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบซเป‰ Grafana.

เป€เบŠเบตเบšเป€เบงเบตเป€เบงเบฑเบš

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ. เปƒเบซเป‰เบเบปเบเป€เบ„เบทเปˆเบญเบ‡ virtual เบ›เบปเบเบเบฐเบ•เบดเบเบฑเบš Linux เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Grafana เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ 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 เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡ plugin เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš 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 เบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡ virtual machine เปƒเบ™ browser, เบฅเบฐเบšเบธ port 3000 เปเบฅเบฐเป€เบšเบดเปˆเบ‡ Grafana UI เบ—เบตเปˆเบชเบงเบเบ‡เบฒเบก.
เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ 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 UI เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบฅเบฐเบšเบธ ClickHouse เป€เบ›เบฑเบ™ DataSource.

เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ”เป‰เบงเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เบ‚เป‰เบญเบเบฅเบฐเบšเบธเป€เบ›เบฑเบ™ URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443

เบ—เบฑเบ‡เปเบปเบ”! เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš CH เปเบฅเบฐ MySQL. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเบฑเบšเป‚เบซเบฅเบ”เบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆ ClickHouse เปเบฅเบฐเบชเป‰เบฒเบ‡ dashboards เป„เบ”เป‰เปเบฅเป‰เบง. โ€‹เป€เบ–เบดเบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เปƒเบ”โ€‹เบเปโ€‹เบ•เบฒเบก, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเบฑเบ‡โ€‹เบšเปเปˆโ€‹เบ—เบฑเบ™โ€‹เบšเบฑเบ™เบฅเบธโ€‹เป€เบ›เบปเป‰เบฒโ€‹เปเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป€เบ—เบทเปˆเบญ โ€‹เปเบฅเบฐ เบเบฑเบ‡โ€‹เบšเปเปˆโ€‹เบ—เบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบ™เบณโ€‹เปƒเบŠเป‰โ€‹เบžเบทเป‰เบ™เบ–เบฒเบ™โ€‹เป‚เบ„เบ‡โ€‹เบฅเปˆเบฒเบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เบ„เบปเบšโ€‹เบŠเบธเบ”.

Packer

Yandex.Cloud เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเปเบœเปˆเบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เปเบฅเบฐเบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™ - เบˆเปเบฒเบ™เบงเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เปเบ—เป‰เป†. เป€เบžเบทเปˆเบญเบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เบ›เบฐเบเบญเบšเบฎเบนเบšเบžเบฒเบš, เป€เบญเบปเบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบท Packer เบˆเบฒเบ HashiCorp. เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เป‰เบญเบ™เป„เบŸเบฅเปŒ json เบžเป‰เบญเบกเบเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเบฎเบนเบšเบžเบฒเบš.

เป„เบŸเบฅเปŒ json เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบญเบ‡เบ•เบฑเบ™: builders เปเบฅเบฐ provisioners. เบšเบฅเบฑเบญเบเบ—เปเบฒเบญเบดเบ”เบญเบฐเบ—เบดเบšเบฒเบเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เป€เบ›เบฑเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™, เปเบฅเบฐเบšเบฅเบฑเบญเบเบ—เบตเบชเบญเบ‡เบญเบฐเบ—เบดเบšเบฒเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเบเบฑเบšเป€เบ™เบทเป‰เบญเบซเบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™.

เบœเบนเป‰เบเปเปˆเบชเป‰เบฒเบ‡

{
"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}}.

เบœเบนเป‰เบชเบฐเปœเบญเบ‡

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฒเบชเปˆเบงเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบกเบฑเบ™เบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบˆเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™ virtual machine เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐ freezing เบฅเบฑเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเบžเบฒเบšเปเบœเปˆเบ™.

{
...,
"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 เบ‚เบฑเป‰เบ™เบ•เบญเบ™. เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”, script เบ‡เปˆเบฒเบเบ”เบฒเบเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต auxiliary.

เบเบฐเบเบฝเบก-ctg.sh:

#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เบชเบฐเบ„เบดเบšเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ•เป‰เบญเบ‡เป€เบ›เบตเบ”เบ•เบปเบงเบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ„เบทเปˆเบญเบ‡ virtual. script เบ™เบตเป‰เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ•เบปเบงเปเบ›เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Grafana เปเบฅเบฐ restart web server.

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 เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡ plugin ClickHouse
3) เปƒเบชเปˆ script setup.sh เปƒเบ™เปเบ–เบงเป€เบ›เบตเบ”เบ•เบปเบงเบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเป€เบ›เบตเบ”เป€เบ„เบทเปˆเบญเบ‡ virtual.

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 เปเบฅเบฐเป€เบญเบปเบฒเบฎเบนเบšเบžเบฒเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบงเบฒเบ‡เป„เบงเป‰เปƒเบ™เบžเบฒเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”. เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเบกเบฑเบ™เป€เบ›เบฑเบ™ boot disk เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเป€เบ›เบตเบ”เบ•เบปเบงเบ—เปˆเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ Grafana เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบก.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡
เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เบเบธเปˆเบกเบ•เบปเบงเบขเปˆเบฒเบ‡ เปเบฅเบฐเบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบฎเบนเบšเบžเบฒเบšเปเบœเปˆเบ™เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบš Grafana เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบซเบผเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบเบธเปˆเบกเบ•เบปเบงเบขเปˆเบฒเบ‡. เปƒเบ™เป€เบงเบ—เบต Yandex.Cloud, เบ„เปเบฒเบชเบฑเบšเบ™เบตเป‰เบซเบกเบฒเบเป€เบ–เบดเบ‡เบชเบฐเบซเบฐเบžเบฑเบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™. เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบธเปˆเบกเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ•เบปเป‰เบ™เปเบšเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบกเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบˆเปเบฒเบ™เบงเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ•เปเปˆเบฒเบชเบธเบ”เปเบฅเบฐเบชเบนเบ‡เบชเบธเบ”). เบ–เป‰เบฒเบ•เบปเบงเป€เบฅเบเบ›เบฐเบˆเบธเบšเบฑเบ™เบšเปเปˆเบเบปเบ‡เบเบฑเบšเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบเบธเปˆเบกเบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบˆเบฐเป€เบญเบปเบฒเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบญเบญเบเบซเบผเบทเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเปƒเบ™เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.

เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบเบธเปˆเบกเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ—เบตเปˆเบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบˆเบฒเบเบฎเบนเบšเบžเบฒเบšเปเบœเปˆเบ™เบ”เบดเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เบชเบดเปˆเบ‡เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เปเบ—เป‰เป†เปเบกเปˆเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบธเปˆเบกเบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบธเบ”เบ—เป‰เบฒเบ. เบเบธเปˆเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบ™เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš Load Balancer เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡ L3 เบขเบนเปˆเป€เบ—เบดเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual เบ‚เบญเบ‡เบเบธเปˆเบกเบ™เบตเป‰เป‚เบ”เบเบเบฒเบ™เบ„เบฅเบดเบเบชเบญเบ‡เบชเบฒเบกเบ›เบธเปˆเบก.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เป€เบกเบทเปˆเบญเบ•เบฑเป‰เบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบญเบ‡เบˆเบธเบ”เบชเปเบฒเบ„เบฑเบ™:

  1. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบญเบกเบฎเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เบžเบญเบ” 80 เปเบฅเบฐเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเบžเบญเบ” 3000 เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual, เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบšเปˆเบญเบ™เบ—เบตเปˆ Grafana เบญเบฒเป„เบชเบขเบนเปˆ.
  2. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ„เบงเบฒเบกโ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹เบ‚เบญเบ‡โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบˆเบฑเบโ€‹เป‚เบ”เบโ€‹เบเบฒเบ™ ping เปƒเบซเป‰โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒ port 3000.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud เป‚เบ”เบเปƒเบŠเป‰ Grafana เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡

เบชเบฐเบซเบผเบธเบšเบซเบเปเป‰

เบชเบธเบ”เบ—เป‰เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เบณเปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป„เบ”เป‰เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบšเปเบฅเบดเบเบฒเบ™ Grafana เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบขเบทเบ”เบขเบธเปˆเบ™เบชเบนเบ‡. เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบนเป‰เบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เป€เบ›เบฑเบ™เบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบฅเบฐเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบ‚เบญเบ‡เบเบธเปˆเบก ClickHouse เป€เบžเบทเปˆเบญเป‚เบซเบฅเบ”เบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบกเบฑเบ™.

เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เป„เบŠเบŠเบฐเบ™เบฐ? เปเบกเปˆเบ™เปเบฅเป‰เบง, เป„เบŠเบŠเบฐเบ™เบฐ. เปเบ•เปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เป‰เบญเบเบชเบฑเบšเบชเบปเบ™. เบ‚เบฐโ€‹เบšเบงเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ‚เป‰เบฒเบ‡โ€‹เป€เบ—เบดเบ‡โ€‹เบ™เบตเป‰โ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบซเบผเบฒเบโ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ„เบนเปˆโ€‹เบกเบทโ€‹เปเบฅเบฐโ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹เป„เบ”เป‰โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹; เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบขเบฒเบโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบกเบฑเบ™โ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹เบ–เป‰เบฒโ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบฒเบเบ•เปเปˆเป„เบ›เบˆเบฐเบ–เบทเบเบญเบธเบ—เบดเบ”เปƒเบซเป‰.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ Terraform

เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบˆเบฒเบ HashiCorp เป€เบญเบตเป‰เบ™เบงเปˆเบฒ Terraform. เบกเบฑเบ™เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ›เบฑเบšเปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ”เป‰เบงเบเบเบฒเบ™เบ„เบฅเบดเบเบ›เบธเปˆเบกเบซเบ™เบถเปˆเบ‡, เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ•เบปเบงเปเบ›เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰. เปƒเบซเป‰เบ‚เบฝเบ™เบชเบนเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เปƒเบ™เบชเปˆเบงเบ™เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฑเบ‡เปเบปเบ”เบเบฑเบš 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 โ€” token เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบŸเบฑเบ‡โ€‹เป„เบ”เป‰โ€‹. เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เป‚เบ”เบโ€‹ เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.
cloud_id โ€” cloud identifier เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹
folder_id โ€” เบ•เบปเบงโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹
service_account_id โ€” เบ•เบปเบงเบฅเบฐเบšเบธเบšเบฑเบ™เบŠเบตเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบขเบนเปˆเปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบ„เบฅเบฒเบง.
image_id โ€” เบ•เบปเบงเบฅเบฐเบšเบธเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเปเบœเปˆเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเปƒเบŠเป‰ Packer
เบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰ ะธ เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™ โ€” เบŠเบทเปˆโ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เปเบฅเบฐโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบœเปˆเบฒเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบ–เบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบฑเบ‡โ€‹เบชเบญเบ‡โ€‹เปเบฅเบฐ Grafana web server
dbname โ€” เบŠเบทเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเปƒเบ™เบเบธเปˆเบก CH เปเบฅเบฐ MySQL
public_key_path โ€” เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ” ssh เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบžเบฒเบเปƒเบ•เป‰เบŠเบทเปˆ ubuntu เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบš

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™

เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform - เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, Yandex:

provider "yandex" {
  token     = var.oauth_token
  cloud_id  = var.cloud_id
  folder_id = var.folder_id
  zone      = "ru-central1-a"
}

เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เบ•เบปเบงเปเบ›เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบ เปเบฅเบฐเบเบธเปˆเบก

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบทเปˆเบชเบฒเบ™, เบชเบฒเบก subnets (เบซเบ™เบถเปˆเบ‡เปƒเบ™เปเบ•เปˆเบฅเบฐเบžเบฒเบเบžเบทเป‰เบ™) เปเบฅเบฐเบเบปเบเบชเบนเบ‡เบเบธเปˆเบก 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 เบ‚เบญเบ‡เบกเบฑเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฅเบงเบšเบฅเบงเบกเบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เปเบœเปˆเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เบšเปˆเบญเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป‚เบฎเบ”เปƒเบซเป‰เบเบฑเบšเบเบธเปˆเบก. เปเบ•เปˆเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบฎเบนเป‰ cluster ID เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบง Terraform, เบฅเบงเบกเบ—เบฑเบ‡เปƒเบ™เป€เบงเบฅเบฒเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เป„เบ”เป‰ resort เบเบฑเบšเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰ trick.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ metadata เบ‚เบญเบ‡ Amazon, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบœเปˆเบฒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบซเป‰เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual, เป€เบŠเบดเปˆเบ‡เบกเบฑเบ™เบˆเบฐเบเบญเบกเบฎเบฑเบšเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เป„เบ›เบซเบฒ metadata เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡ MySQL cluster host เปเบฅเบฐ username-password, เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เป„เบŸเบฅเปŒ Terraform, เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เปƒเบซเป‰เบ›เปˆเบฝเบ™เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเป€เบฅเบฑเบเบ™เป‰เบญเบ setup.sh, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡ virtual เป€เบ›เบตเบ”.

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

เบเบธเปˆเบก instance เปเบฅเบฐ balancer

เบกเบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเปเบœเปˆเบ™เปƒเบซเบกเปˆ, เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป„เบŸเบฅเปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเบฅเบฑเบš 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"
  }
}

เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ metadata cluster_uri, username ะธ password. เบกเบฑเบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡ virtual เบˆเบฐเบญเบญเบเปƒเบ™เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเปƒเบชเปˆเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ 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 เบเบธเปˆเบก. เบ‚เปโ€‹เปƒเบซเป‰โ€‹เบฅเบฒเบงโ€‹เบงเบฒเบ‡โ€‹เปƒเบˆโ€‹เบ™เบณโ€‹เป€เบฅเบทเปˆเบญเบ‡โ€‹เบ™เบตเป‰โ€‹เปƒเบซเป‰โ€‹เป€เบเบตเบ”โ€‹เบœเบปเบ™.

เปƒเบซเป‰เป€เบžเบตเปˆเบกเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เปƒเบซเบกเปˆ - 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"
}

เปƒเบซเป‰ comb เบœเบปเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ

เปƒเบซเป‰เบชเบฐเปเบ”เบ‡เบ—เบตเปˆเบขเบนเปˆ IP balancer เปเบฅเบฐเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบ‚เบญเบ‡เบเบธเปˆเบก 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 เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบ„เบฑเบ”เบ•เบดเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš repository เบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบชเบนเบ”เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบš Packer เปเบฅเบฐ Terraform, fragments เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰.

เบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™