ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ื ื’ื•ื˜ืŸ ื™ืขื“ืขืจ! ื•ื•ื™ ืึท ื˜ื™ื™ืœ ืคื•ืŸ ืžื™ื™ืŸ ืงื•ืจืก ืึทืจื‘ืขื˜, ืื™ืš ืจื™ืกืขืจื˜ืฉื˜ ื“ื™ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ืคื•ืŸ ืึทื–ืึท ืึท ื“ื™ื ืขืจ ื•ื•ืึธืœืงืŸ ืคึผืœืึทื˜ืคืึธืจืžืข ื•ื•ื™ Yandex.Cloud. ื“ื™ ืคึผืœืึทื˜ืคืึธืจืžืข ืึธืคืคืขืจืก ืคืึทืจืฉื™ื“ืŸ ื‘ืึทื“ื™ื ื•ื ื’ืก ืคึฟืึทืจ ืกืึทืœื•ื•ื™ื ื’ ืคึผืจืึทืงื˜ื™ืฉ ืคึผืจืึธื‘ืœืขืžืก. ืึธื‘ืขืจ, ืžืืœ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื•ื•ืึธืœืงืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ืึท ื’ืึทื ืฅ ื‘ืจื™ื™ื˜ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ื™ืกืขืก. ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื˜ื™ื™ืœืŸ ืžื™ื™ืŸ ื“ืขืจืคืึทืจื•ื ื’ ืื™ืŸ ื“ื™ืคึผืœื•ื™ื™ื ื’ ืึทื–ืึท ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ื•ื•ืึธืก ื˜ืึธืŸ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ?

ื’ืจืืคืื ื - ืึท ืฉื˜ืึทืจืง ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืกืึทืœื•ื•ื™ื ื’ ืึทื ืึทืœื™ืกื™ืก ืคึผืจืึธื‘ืœืขืžืก ืึธื“ืขืจ ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืคึผืจืึธื‘ืœืขืžืก ืคื•ืŸ ืงื™ื™ืŸ ืกื™ืกื˜ืขืžืขืŸ. ืื™ืŸ ื–ื™ื™ืŸ ื™ืงืขืจื“ื™ืง ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ื“ืึธืก ืื™ื– ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืžื™ื˜ ืึท Grafana ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก (ClickHouse, InfluxDB, ืืื–"ื• ื•) ืžื™ื˜ ืึท ื“ืึทื˜ืึทืกืขื˜ ืื•ื™ืฃ ื•ื•ืึธืก ืึทื ืึทืœื™ื˜ื™ืงืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืื–ื™ืจื˜.

ื ืึธืš ืœืึธื ื˜ืฉื™ื ื’ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืžื™ื˜ ืึท ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ, ืื™ืจ ืงืขื ืขืŸ ื’ื™ื™ืŸ ืฆื• ื–ื™ื™ืŸ ื‘ืึทืœืขื‘ืึธืก ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ืึท ืฉื™ื™ืŸ ื•ื™, ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ื•ื•ื™ ืงื•ื•ืืœืŸ ืคึฟืึทืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึทืจื‘ืขื˜, ืฉืึทืคึฟืŸ ื“ืึทืฉื‘ืึธืจื“ื– ืื•ืŸ ื’ืจืึทืคืก.

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ื“ื™ ื’ืจื•ื ื˜ ื•ื•ืขืจืกื™ืข ื”ืื˜ ืึท ื‘ืึทื˜ื™ื™ื˜ื™ืง ืฉื˜ืขืจื•ื ื’ - ืขืก ืื™ื– ื‘ื›ืœืœ ื ื™ืฉื˜ ืฉื•ืœื“-ื˜ืึธืœืขืจืึทื ื˜. ืึทื– ืื™ื–, ื“ื™ ื’ืื ืฆืข ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ ื“ื™ ื•ื•ื™ื™ืึทื‘ื™ืœืึทื˜ื™ ืคื•ืŸ ืื™ื™ืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ. ืื•ื™ื‘ ืขืก ืึธืคึผื–ืึธื’ืŸ ืึธื“ืขืจ 10 ืžืขื ื˜ืฉืŸ ืขืคึฟืขื ืขืŸ ื“ื™ ื•ื™ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ื“ื™ ืคืจืื‘ืœืขืžืขืŸ ื•ื•ืขืœืŸ ืื•ื™ืคืฉื˜ื™ื™ืŸ.

ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“ ืคืฉื•ื˜: ืื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ ืฆื• ... ืฆืขื•ื•ื™ืงืœืขืŸ ืคื™ืœืข ื™ื™ื“ืขื ื™ืงืึทืœ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ืžื™ื˜ ืึท ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ ืื•ืŸ ืฉื˜ืขืœืŸ ื–ื™ื™ ืื•ื ื˜ืขืจ ืึท ืœ 3 ื‘ืึทืœืึทื ืกืขืจ. ืื‘ืขืจ ื ื™ืฉื˜ ืืœืขืก ืื™ื– ื“ื ืื–ื•ื™ ืงืœืืจ. ื’ืจืึทืคืึทื ืึท ืกื˜ืึธืจื– ื‘ืึทื ื™ืฆืขืจ ืกืขื˜ื˜ื™ื ื’ืก (ืคึผืึทื˜ืก ืฆื• ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื–, ื“ืึทืฉื‘ืึธืจื“ื–, ื’ืจืึทืคืก, ืืื–"ื• ื•) ื’ืœื™ื™ึทืš ืื•ื™ืฃ ื“ื™ ื“ื™ืกืง ืคื•ืŸ ื–ื™ื™ืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ. ืื–ื•ื™, ืื•ื™ื‘ ืžื™ืจ ื˜ื•ื™ืฉืŸ ืขื˜ืœืขื›ืข ืกืขื˜ื˜ื™ื ื’ืก ืื™ืŸ ื“ื™ ื•ื™, ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืฉืคื™ื’ืœื˜ ื‘ืœื•ื™ื– ืื•ื™ืฃ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ื•ื•ื• ื“ื™ ื‘ืึทืœืึทื ืกืขืจ ื’ืขืฉื™ืงื˜ ืื•ื ื“ื–. ื“ืึธืก ื•ื•ืขื˜ ืคื™ืจืŸ ืฆื• ืกืชื™ืจื” ืกืขื˜ื˜ื™ื ื’ืก ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืงืึธื–ื™ื ื’ ืคึผืจืึธื‘ืœืขืžืก ืžื™ื˜ ืงืึทื˜ืขืจ ืื•ืŸ ื ื•ืฆืŸ.

ื“ืึธ ืืŸ ืื ื“ืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก ื•ื•ืขื˜ ืงื•ืžืขืŸ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ, ืœืžืฉืœ, MySQL ืึธื“ืขืจ ื–ื™ื™ืŸ ืขืงื•ื•ื™ื•ื•ืึทืœืขื ื˜. ืžื™ืจ ื–ืึธื’ืŸ ื’ืจืึทืคืึทื ืึท ืึทื– ื–ื™ ื–ืึธืœ ืงืจืึธื ื‘ืึทื ื™ืฆืขืจ ืกืขื˜ื˜ื™ื ื’ืก ืื™ืŸ ื“ืขื "ืกืคึผืขืจ" ื“ืึทื˜ืึทื‘ื™ื™ืก. ื“ืขืจื ืึธื›ื“ืขื, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื ื•ื’ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ืขื ื“ืจืš ืฆื• ื“ืขื ื“ืึทื˜ืึทื‘ื™ื™ืก ืึทืžืึธืœ ืื•ื™ืฃ ื™ืขื“ืขืจ ืžืึทืฉื™ืŸ, ืื•ืŸ ืจืขื“ืึทื’ื™ืจืŸ ืึทืœืข ืื ื“ืขืจืข ื‘ืึทื ื™ืฆืขืจ ืกืขื˜ื˜ื™ื ื’ืก ืื•ื™ืฃ ืงื™ื™ืŸ ืคื•ืŸ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ; ื–ื™ื™ ื•ื•ืขืœืŸ ืคืึทืจื‘ืจื™ื™ื˜ืขืจืŸ ืฆื• ื“ื™ ืื ื“ืขืจืข.

ื“ืึธ ืื™ื– ืึท ื“ื™ืึทื’ืจืึทืžืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืœืขืฆื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ:

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ืœืืžื™ืจ ื–ื™ืš ืœืขืจื ืขืŸ ื”ื™ื™ื‘ืŸ ืžื™ื˜ ื“ื™ ื”ืขื ื˜

MySQL ืื•ืŸ ClickHouse

ืื™ื™ื“ืขืจ ื“ื™ืคึผืœื•ื™ื™ื ื’ ืึทื–ืึท ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ื“ื™ ื’ื™ื˜ ืคื•ืŸ ืึท ืงื ืขืคึผืœ, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืœืขืจื ืขืŸ ื•ื•ื™ ืฆื• ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™ึทืŸ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืื•ืŸ ื•ื™ืกืฉื˜ื™ืžืขืŸ ื–ื™ื™ ืžื™ื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ.

ื“ืึธ ื™ืึทื ื“ืขืงืก.ืงืœืึธื•ื“ ื•ื•ืขื˜ ื”ืขืœืคึฟืŸ ืื•ื ื“ื–, ื•ื•ืึธืก ื’ื™ื˜ ืœ 3 ื‘ืึทืœืึทื ืกืขืจื–, ืงืœื™ืงื›ืึธื•ืกืข ืื•ืŸ ืžื™ืกืงืœ ื•ื•ื™ ื’ืขืจืื˜ืŸ ื‘ืึทื“ื™ื ื•ื ื’ืก. ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื ืึธืจ ื“ืึทืจืฃ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื•ืŸ ื•ื•ืึทืจื˜ืŸ ื‘ื™ื– ื“ื™ ืคึผืœืึทื˜ืคืึธืจืžืข ื‘ืจืขื ื’ื˜ ืึทืœืฅ ืื™ืŸ ืืจื‘ืขื˜ืŸ ืกื“ืจ.

ืื™ืš ืจืขื’ื™ืกื˜ืจื™ืจื˜, ื‘ืืฉืืคืŸ ืึท ื•ื•ืึธืœืงืŸ ืื•ืŸ ืึท ืฆืึธืœื•ื ื’ ื—ืฉื‘ื•ืŸ. ื ืึธืš ื“ืขื, ืื™ืš ื’ืขื’ืื ื’ืขืŸ ืฆื• ื“ื™ ื•ื•ืึธืœืงืŸ ืื•ืŸ ืฉื˜ืขืœืŸ ืึทืจื•ื™ืฃ MySQL ืื•ืŸ ClickHouse ืงืœืึทืกื˜ืขืจื– ืžื™ื˜ ืžื™ื ื™ืžืึทืœ ืกืขื˜ื˜ื™ื ื’ืก. ืื™ ืš ื”ื ื‘ ื’ืขืฐืืจ ื˜ ื‘ื™ ื– ื– ืฒ ืฐืขืจ ืŸ ื˜ืขื˜ื™ืง .

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ืื™ืจ ืื•ื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขื“ืขื ืงืขืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ืŸ ื™ืขื“ืขืจ ืงื ื•ื™ืœ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ืึทืงืกืขืก ืฆื• ืขืก ืžื™ื˜ ืึท ืœืึธื’ื™ืŸ ืื•ืŸ ืคึผืึทืจืึธืœ. ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ื’ื™ื™ืŸ ืื™ืŸ ื“ืขื˜ืึทื™ืœืก ื“ืึธ - ืึทืœืฅ ืื™ื– ื’ืึทื ืฅ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ ืื™ืŸ ื“ื™ ืฆื•ื‘ื™ื ื“.

ื“ื™ ื ื™ื˜ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ ื“ืขื˜ืึทืœ ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื– ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ื”ืึธื‘ืŸ ืคื™ืœืข ืžื—ื ื•ืช, ื•ื•ืึธืก ืขื ืฉื•ืจ ื–ื™ื™ืขืจ ืฉื•ืœื“ ื˜ืึธืœืขืจืึทื ืฅ. ืึธื‘ืขืจ, Grafana ืจื™ืงื•ื•ื™ื™ืขืจื– ืคึผื•ื ืงื˜ ืื™ื™ืŸ ื‘ืึทืœืขื‘ืึธืก ืคึฟืึทืจ ื™ืขื“ืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก ืขืก ืึทืจื‘ืขื˜ ืžื™ื˜. ืœืื ื’ ืœื™ื™ืขื ืขืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ื“ื™ ื•ื•ืืœืงื ืก ื”ืื‘ืŸ ืžื™ืš ื’ืขื‘ืจืื›ื˜ ืฆื• ื ื‘ืืฉืœื•ืก. ืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืึทื– ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ืคื•ืŸ ื“ื™ ืžื™ื ื™ื c-<cluster_id>.rw.mdb.yandexcloud.net ืžืึทืคึผื˜ ืฆื• ื“ื™ ืงืจืึทื ื˜ ืึทืงื˜ื™ื•ื• ื‘ืขืœ ื‘ืึทืœืขื‘ืึธืก ืคื•ืŸ ื“ืขื ืงื ื•ื™ืœ ืžื™ื˜ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืฉื™ื™ึทืŸ. ื“ืึธืก ืื™ื– ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื’ืขื‘ืŸ ืฆื• ื’ืจืึทืคืึทื ืึท.

ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ

ืื™ืฆื˜ ืขืก ืื™ื– ืึทืจื•ื™ืฃ ืฆื• ื“ื™ ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ. ืœืึธืžื™ืจ ื›ืึทืคึผืŸ ืึท ืจืขื’ื•ืœืขืจ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืžื™ื˜ ืœื™ื ื•ืงืก ืื•ืŸ ืžืึทื ื™ื•ืึทืœื™ ืงืึทื ืคื™ื’ื™ืขืจ 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 ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืคึผืœื•ื’ื™ืŸ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ClickHouse (ื™ืึธ, ืขืก ืื™ื– ื ื™ืฉื˜ ืกืึทืคึผืœื™ื™ื“ ืื™ืŸ ื“ื™ ื™ืงืขืจื“ื™ืง ืคึผืขืงืœ).

sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource

ืึทื– ืก ืขืก, ื ืึธืš ื•ื•ืึธืก ืžื™ื˜ ืึท ืคึผืฉื•ื˜ ื‘ืึทืคึฟืขืœ

sudo service grafana-server start

ืžื™ืจ ื•ื•ืขืœืŸ ืึธื ื”ื™ื™ื‘ืŸ ื“ืขื ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ. ืื™ืฆื˜ ืื™ืจ ืงืขื ืขืŸ ืึทืจื™ื™ึทืŸ ื“ื™ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง IP ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืื™ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ, โ€‹โ€‹ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืคึผืึธืจื˜ 3000 ืื•ืŸ ื–ืขืŸ ื“ื™ ืฉื™ื™ืŸ Grafana ื•ื™.
ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ืึธื‘ืขืจ ื˜ืึธืŸ ื ื™ื˜ ืงืึทืžื™ืฉ, ืื™ื™ื“ืขืจ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ Grafana, ืื™ืจ ืžื•ื–ืŸ ื’ืขื“ืขื ืงืขืŸ ืฆื• ื–ืึธื’ืŸ ืขืก ื“ื™ ื“ืจืš ืฆื• MySQL ืฆื• ืงืจืึธื ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก ื“ืึธืจื˜.

ื“ื™ ื’ืื ืฆืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ Grafana ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ ืื™ื– ืื™ืŸ ื“ืขืจ ื˜ืขืงืข /etc/grafana/grafana.ini. ื“ื™ ืคืืจืœืื ื’ื˜ ืฉื•ืจื” ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

;url =

ืžื™ืจ ืฉื˜ืขืœืŸ ื“ืขื ื‘ืึทืœืขื‘ืึธืก ืฆื• ื“ื™ MySQL ืงื ื•ื™ืœ. ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื˜ืขืงืข ื›ึผื•ืœืœ ื“ื™ ืœืึธื’ื™ืŸ ืื•ืŸ ืคึผืึทืจืึธืœ ืคึฟืึทืจ ืึทืงืกืขืก Grafana ืื™ืŸ ื“ื™ ื‘ื™ืœื“ ืื•ื™ื‘ืŸ, ื•ื•ืึธืก ื‘ื™ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื–ืขื ืขืŸ ื‘ื™ื™ื“ืข ื’ืœื™ื™ึทืš admin.

ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืกืขื“ ืงืึทืžืึทื ื“ื–:

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 ื•ื•ื™ ืึท ื“ืึทื˜ืึทืกืึธื•ืจืกืข.

ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ื™ื›ื•ืœืช ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ืึท ืืจื‘ืขื˜ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืกืขื˜ื˜ื™ื ื’ืก:

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ืื™ืš ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื•ื•ื™ ื“ื™ URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443

ืึทืœืข! ืžื™ืจ ื”ืึธื‘ืŸ ืื™ื™ืŸ ืืจื‘ืขื˜ืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืžื™ื˜ ืึท ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ ืคืืจื‘ื•ื ื“ืŸ ืฆื• CH ืื•ืŸ MySQL. ืื™ืจ ืงืขื ื˜ ืฉื•ื™ืŸ ืฆื•ืคึฟืขืœื™ืงืขืจ ื“ื™ ื“ืึทื˜ืึทืกืขื˜ ืฆื• ClickHouse ืื•ืŸ ื‘ื•ื™ืขืŸ ื“ืึทืฉื‘ืึธืจื“ื–. ืึธื‘ืขืจ, ืžื™ืจ ื”ืึธื‘ืŸ ื ืึธืš ื ื™ืฉื˜ ื“ืขืจื’ืจื™ื™ื›ื˜ ืื•ื ื“ื–ืขืจ ืฆื™ืœ ืื•ืŸ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื“ื™ืคึผืœื•ื™ื“ ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ.

ืคึผืึทืงืขืจ

Yandex.Cloud ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืฉืึทืคึฟืŸ ืึท ื“ื™ืกืง ื‘ื™ืœื“ ืคื•ืŸ ืึท ื™ื’ื–ื™ืกื˜ื™ื ื’ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ, ืื•ืŸ ืื•ื™ืฃ ื–ื™ื™ึทืŸ ื™ืงืขืจ - ืงื™ื™ืŸ ื ื•ืžืขืจ ืคื•ืŸ ืžืืฉื™ื ืขืŸ ื™ื™ื“ืขื ื™ืงืึทืœ ืฆื• ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ. ื“ืึธืก ืื™ื– ืคึผื•ื ืงื˜ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ. ืฆื• ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืึทืกืขืžื‘ืึทืœ ื“ื™ ื‘ื™ืœื“, ื ืขืžืขืŸ ื“ื™ ื’ืขืฆื™ื™ึทื’ ืคึผืึทืงืขืจ ืคึฟื•ืŸ HashiCorp. ืขืก ื ืขืžื˜ ื•ื•ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืึท json ื˜ืขืงืข ืžื™ื˜ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืคึฟืึทืจ ืึทืกืขืžื‘ืึทืœื™ื ื’ ื“ื™ ื‘ื™ืœื“.

ืื•ื ื“ื–ืขืจ ื“ื–ืฉืกืึธืŸ ื˜ืขืงืข ื•ื•ืขื˜ ืฆื•ื ื•ื™ืคืฉื˜ืขืœื  ื–ื™ืš ืคื•ืŸ ืฆื•ื•ื™ื™ ื‘ืœืึทืงืก: ื‘ื™ืœื“ืขืจื– ืื•ืŸ ืคึผืจืึทื•ื•ื™ื–ืฉืึทื ื–. ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ืœืึธืง ื‘ืืฉืจื™ื™ื‘ื˜ ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ ื–ื™ืš ื•ื•ื™ ืึท ืขื ื˜ื™ื˜ื™, ืื•ืŸ ื“ื™ ืจื’ืข ื‘ืœืึธืง ื‘ืืฉืจื™ื™ื‘ื˜ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืคึฟืึทืจ ืคื™ืœื•ื ื’ ืขืก ืžื™ื˜ ื“ื™ ื ื™ื™ื˜ื™ืง ืื™ื ื”ืึทืœื˜.

ื‘ื•ื™ืœื“ืขืจืก

{
"builders": [
    {
      "type": "yandex",
      "endpoint": "{{user `endpoint`}}",
      "folder_id": "<folder_id>",
      "subnet_id": "{{user `subnet_id`}}",
      "zone": "{{user `zone`}}",
      "labels": {},
      "use_ipv4_nat": true,
      "use_internal_ip": false,
      "service_account_key_file": "<service_account_key_file>",
      "image_name": "grafana-{{timestamp}}",
      "image_family": "grafana",
      "image_labels": {},
      "image_description": "GRAFANA",
      "source_image_family": "ubuntu-1804-lts",
      "disk_size_gb": 3,
      "disk_type": "network-hdd",
      "ssh_username": "ubuntu"
    }
  ],
...
}

ืื™ืŸ ื“ืขื ืžื•ืกื˜ืขืจ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืื™ื“ืขื ื˜ื™ื˜ืขื˜ ืคื•ืŸ ื“ื™ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืื™ืŸ ื“ื™ ื•ื•ืึธืœืงืŸ ื•ื•ื• ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืฉืึทืคึฟืŸ ื“ื™ ื‘ื™ืœื“, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื“ื™ ื•ื•ืขื’ ืฆื• ื“ืขืจ ื˜ืขืงืข ืžื™ื˜ ื“ื™ ืฉืœื™ืกืœืขืŸ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ื™ืก ื—ืฉื‘ื•ืŸ ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืฉืืคืŸ ืคืจื™ืขืจ ืื™ืŸ ื“ืขื ืึธืคึผื˜ื™ื™ืœื•ื ื’. ืื™ืจ ืงืขื ื˜ ืœื™ื™ืขื ืขืŸ ืžืขืจ ื•ื•ืขื’ืŸ ืงืจื™ื™ื™ื˜ื™ื ื’ ืกืขืจื•ื•ื™ืก ืึทืงืึทื•ื ืฅ ืื•ืŸ ืฉืœื™ืกืœืขืŸ ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืึท ื˜ืขืงืข ืื™ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื–ืื’ื˜ ืึทื– ื“ื™ ื“ื™ืกืง ื‘ื™ืœื“ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื‘ื•ื™ื˜ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ืขืจ ืคึผืœืึทื˜ืคืึธืจืžืข ubuntu-1804-lts, ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ื“ื™ ืฆื•ื ืขืžืขืŸ ื‘ืึทื ื™ืฆืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืื™ืŸ ื“ื™ ื‘ื™ืœื“ ืžืฉืคึผื—ื” GRAFANA ืื•ื ื˜ืขืจ ื“ืขื ื ืึธืžืขืŸ grafana-{{timestamp}}.

ืคึผืจืึทื•ื•ื™ื–ืฉืึทื ื–

ืื™ืฆื˜ ืงื•ืžื˜ ื“ื™ ืžืขืจ ื˜ืฉื™ืงืึทื•ื•ืข ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ. ืขืก ื•ื•ืขื˜ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืกื™ืงื•ื•ืึทื ืก ืคื•ืŸ ืึทืงืฉืึทื ื– ื•ื•ืึธืก ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื•ื™ืฃ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืื™ื™ื“ืขืจ ืคืจื™ื™ื– ื–ื™ื™ืŸ ืฉื˜ืึทื˜ ืื™ืŸ ืึท ื“ื™ืกืง ื‘ื™ืœื“.

{
...,
"provisioners": [
    {
            "type": "shell",
            "pause_before": "5s",
            "scripts": [
                "prepare-ctg.sh"
            ]
        },
    {
            "type": "file",
            "source": "setup.sh",
            "destination": "/opt/grafana/setup.sh"
        },
        {
            "type": "shell",
        "execute_command": "sudo {{ .Vars }} bash '{{ .Path }}'",
            "pause_before": "5s",
            "scripts": [
                "install-packages.sh",
                "grafana-setup.sh",
                "run-setup-at-reboot.sh"
        ]
        }
  ]
}

ื“ืึธ ืึทืœืข ืึทืงืฉืึทื ื– ื–ืขื ืขืŸ ืฆืขื˜ื™ื™ืœื˜ ืื™ืŸ 3 ืกื˜ืึทื’ืขืก. ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ื™ื ืข, ืึท ืคึผืฉื•ื˜ ืฉืจื™ืคื˜ ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื•ื•ืึธืก ืงืจื™ื™ื™ืฅ ืึท ืึทื’ื–ื™ืœื™ืขืจื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ.

prepare-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

ืœื•ื™ืคืŸ-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;

ืื™ืฆื˜ ืึทืœืข ื•ื•ืึธืก ื‘ืœื™ื™ื‘ื˜ ืื™ื– ืฆื• ืœื•ื™ืคืŸ ืคึผืึทืงืงืขืจ ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ื‘ื™ืœื“ ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ื“ื™ ืกืคึผืขืกืึทืคื™ื™ื“ ืึธืคึผื˜ื™ื™ืœื•ื ื’. ื•ื•ืขืŸ ืื™ืจ ืฉืึทืคึฟืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ, ืื™ืจ ืงืขื ืขืŸ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืขืก ื•ื•ื™ ืึท ืฉื˜ื™ื•ื•ืœ ื“ื™ืกืง ืื•ืŸ ื ืึธืš ืงืึทื˜ืขืจ ืื™ืจ ื•ื•ืขื˜ ื‘ืึทืงื•ืžืขืŸ ืึท ื’ืจื™ื™ื˜-ื’ืขืžืื›ื˜ Grafana ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ.

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ
ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ื‘ื™ื™ึทืฉืคึผื™ืœ ื’ืจื•ืคึผืข ืื•ืŸ ื‘ืึทืœืึทื ืกืขืจ

ืึทืžืึธืœ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ื“ื™ืกืง ื‘ื™ืœื“ ื•ื•ืึธืก ืึทืœืึทื•ื– ืื•ื ื“ื– ืฆื• ืฉืึทืคึฟืŸ ืคื™ืœืข ื™ื™ื“ืขื ื™ืงืึทืœ ื’ืจืึทืคืึทื ืึท ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจืก, ืžื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ื’ืจื•ืคึผืข. ืื•ื™ืฃ ื“ื™ Yandex.Cloud ืคึผืœืึทื˜ืคืึธืจืžืข, ื“ืขื ื˜ืขืจืžื™ืŸ ืจืขืคืขืจืก ืฆื• ื“ืขืจ ืคืึทืจื‘ืึทื ื“ ืคื•ืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ื•ื•ืึธืก ื”ืึธื‘ืŸ ื“ื™ ื–ืขืœื‘ืข ืงืขืจืึทืงื˜ืขืจื™ืกื˜ื™ืงืก. ื•ื•ืขืŸ ืฉืึทืคึฟืŸ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ื’ืจื•ืคึผืข, ื“ื™ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืคื•ืŸ ืึทืœืข ืžืืฉื™ื ืขืŸ ืื™ืŸ ื“ืขื ื’ืจื•ืคึผืข ืื™ื– ืงืึทื ืคื™ื’ื™ืขืจื“, ืื•ืŸ ื“ืขืžืึธืœื˜ ื“ื™ ืงืขืจืึทืงื˜ืขืจื™ืกื˜ื™ืงืก ืคื•ืŸ ื“ื™ ื’ืจื•ืคึผืข ื–ื™ืš (ืœืžืฉืœ, ื“ื™ ืžื™ื ื™ืžื•ื ืื•ืŸ ืžืึทืงืกื™ืžื•ื ื ื•ืžืขืจ ืคื•ืŸ ืึทืงื˜ื™ื•ื• ืžืืฉื™ื ืขืŸ). ืื•ื™ื‘ ื“ื™ ืงืจืึทื ื˜ ื ื•ืžืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ื˜ืจืขืคืŸ ื“ื™ ืงืจื™ื™ื˜ื™ืจื™ืึท, ื“ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ ื’ืจื•ืคึผืข ื–ื™ืš ื•ื•ืขื˜ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ื•ืžื ื™ื™ื˜ื™ืง ืžืืฉื™ื ืขืŸ ืึธื“ืขืจ ืฉืึทืคึฟืŸ ื ื™ื™ึทืข ืื™ืŸ ื–ื™ื™ืŸ ื‘ื™ืœื“.

ื•ื•ื™ ืึท ื˜ื™ื™ืœ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืึทืจื‘ืขื˜, ืžื™ืจ ื•ื•ืขืœืŸ ืฉืึทืคึฟืŸ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ื’ืจื•ืคึผืข ืคื•ืŸ โ€‹โ€‹ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจืก ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคึฟื•ืŸ ื“ื™ ืคืจื™ืขืจ ื‘ืืฉืืคืŸ ื“ื™ืกืง ื‘ื™ืœื“.

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ื•ื•ืึธืก ืื™ื– ื‘ืืžืช ืžืขืจืงื•ื•ื™ืจื“ื™ืง ืื™ื– ื“ื™ ืกืขื˜ืึทืคึผ ืคื•ืŸ ื“ื™ ืœืขืฆื˜ืข ื‘ื™ื™ึทืฉืคึผื™ืœ ื’ืจื•ืคึผืข. ื“ื™ ืฆื™ืœ ื’ืจื•ืคึผืข ืื™ืŸ ื™ื ืึทื’ืจื™ื™ืฉืึทืŸ ืžื™ื˜ ืœืึธื•ื“ ื‘ืึทืœืึทื ืกืขืจ ื•ื•ืขื˜ ื”ืขืœืคึฟืŸ ืื™ืจ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืึท ืœ 3 ื‘ืึทืœืึทื ืกืขืจ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ืคื•ืŸ ื“ืขื ื’ืจื•ืคึผืข ื“ื•ืจืš ื’ืขื‘ืŸ ืึท ืงืœื™ืง ืึท ืคึผืึธืจ ืคื•ืŸ ืงื ืขืคึผืœืขืš.

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ื•ื•ืขืŸ ืื™ืš ืฉื˜ืขืœืŸ ืึทืจื•ื™ืฃ ื“ื™ ื‘ืึทืœืึทื ืกืขืจ, ืื™ืš ื™ืžืคึผืœืึทืžืขื ืึทื“ ืฆื•ื•ื™ื™ ื•ื•ื™ื›ื˜ื™ืง ืคื•ื ืงื˜ืŸ:

  1. ืื™ืš ื’ืขืžืื›ื˜ ื“ื™ ื‘ืึทืœืึทื ืกืขืจ ืึธื ื ืขืžืขืŸ ื‘ืึทื ื™ืฆืขืจ ืคืึทืจืงืขืจ ืื•ื™ืฃ ืคึผืึธืจื˜ 80 ืื•ืŸ ืจื™ื“ืขืจืขืงื˜ ืขืก ืฆื• ืคึผืึธืจื˜ 3000 ืคื•ืŸ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ, ืคึผื•ื ืงื˜ ื•ื•ื• Grafana ืœืขื‘ืŸ.
  2. ืื™ืš ืฉื˜ืขืœืŸ ืึทืจื•ื™ืฃ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ื“ื™ ื•ื•ื™ื™ืึทื‘ื™ืœืึทื˜ื™ ืคื•ืŸ ืžืืฉื™ื ืขืŸ ื“ื•ืจืš ืคึผื™ื ื’ ื–ื™ื™ ืฆื• ืคึผืึธืจื˜ 3000.

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ Yandex.Cloud ื ื™ืฆืŸ Grafana ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ

ืžื™ื ื™ ืงื™ืฆืขืจ

ืฆื•ื ืกื•ืฃ, ืžื™ืจ ื–ืขื ืขืŸ ื‘ื™ื›ื•ืœืช ืฆื• ืžืึทื ื™ื•ืึทืœื™ ืฆืขื•ื•ื™ืงืœืขืŸ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ, ืื•ืŸ ืื™ืฆื˜ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ื”ืขื›ืกื˜ ืจื™ื–ื™ืœื™ืึทื ื˜ ื’ืจืึทืคืึทื ืึท ื“ื™ื ืกื˜. ืื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ื™ืกืŸ ื“ื™ IP ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ื‘ืึทืœืึทื ืกืขืจ ื•ื•ื™ ื“ื™ ืคึผืึธื–ื™ืฆื™ืข ืคื•ื ื˜ ืฆื• ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ืŸ ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ืคื•ืŸ ื“ื™ ืงืœื™ืงื›ืึธื•ืกืข ืงื ื•ื™ืœ ืื™ืŸ ืกื“ืจ ืฆื• ืžืึทืกืข ื“ื™ ื“ืึทื˜ืึทืกืขื˜ ืื™ืŸ ืขืก.

ืขืก ื•ื•ืึธืœื˜ ื•ื™ืกืงื•ืžืขืŸ ื•ื•ื™ ืึท ื ืฆื—ื•ืŸ? ื™ื, ื ืฆื—ื•ืŸ. ืึธื‘ืขืจ ืขืคึผืขืก ืฆืขื˜ื•ืžืœื˜ ืžื™ืจ ื ืึธืš. ื“ืขืจ ื’ืื ืฆืขืจ ืคึผืจืึธืฆืขืก ืื•ื™ื‘ืŸ ืจื™ืงื•ื•ื™ื™ืขืจื– ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืžืึทื ื•ืึทืœ ืกื˜ืขืคึผืก ืื•ืŸ ืื™ื– ื ื™ืฉื˜ ืกืงืึทืœืึทื‘ืœืข ื‘ื™ื™ึท ืึทืœืข; ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ืึธื˜ืึทืžื™ื™ื˜ ืขืก ืื•ื™ื‘ ืžืขื’ืœืขืš. ื“ืึธืก ืื™ื– ื•ื•ืึธืก ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื“ืžืขื˜.

ื˜ืขืจืจืึทืคืึธืจื ื™ื ืึทื’ืจื™ื™ืฉืึทืŸ

ืžื™ืจ ื•ื•ืขืœืŸ ื•ื•ื™ื“ืขืจ ื ื•ืฆืŸ ืึท ื’ืขืฆื™ื™ึทื’ ืคื•ืŸ 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 - ืึท ืกื™ืžืขืŸ ืคึฟืึทืจ ืึทืงืกืขืก ื“ื™ ื•ื•ืึธืœืงืŸ. ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืืงื•ืžืขืŸ ื“ื•ืจืš ืจื•ื ื’.
cloud_id - ื•ื•ืึธืœืงืŸ ื™ื“ืขื ื˜ื™ืคื™ืขืจ ื•ื•ื• ืžื™ืจ ื•ื•ืขืœืŸ ืฆืขื•ื•ื™ืงืœืขืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ
folder_id - ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื™ื“ืขื ื˜ื™ืคื™ืขืจ ื•ื•ื• ืžื™ืจ ื•ื•ืขืœืŸ ืฆืขื•ื•ื™ืงืœืขืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ
service_account_id - ืกืขืจื•ื•ื™ืก ื—ืฉื‘ื•ืŸ ืื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ืื™ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืคื•ืŸ ื“ื™ ื•ื•ืึธืœืงืŸ.
ื‘ื™ืœื“_ื™ื“ - ืื™ื“ืขื ื˜ื™ืคึฟื™ืฆื™ืจื•ื ื’ ืคื•ืŸ ื“ื™ ื“ื™ืกืง ื‘ื™ืœื“ ื‘ืืงื•ืžืขืŸ ืžื™ื˜ ืคึผืึทืงืงืขืจ
ื ืืžืขืŸ ะธ ืคึผืึทืจืึธืœ - ื ืืžืขืŸ ืื•ืŸ ืคึผืึทืจืึธืœ ืฆื• ืึทืงืกืขืก ื‘ื™ื™ื“ืข ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ืื•ืŸ ื“ื™ Grafana ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ
ื“ื‘ื ืึทืžืข - ื“ืึทื˜ืึทื‘ื™ื™ืก ื ืึธืžืขืŸ ืื™ืŸ CH ืื•ืŸ MySQL ืงืœืึทืกื˜ืขืจื–
public_key_path - ื“ืจืš ืฆื• ื“ืขืจ ื˜ืขืงืข ืžื™ื˜ ื“ื™ื™ืŸ ืขืคื ื˜ืœืขืš ssh ืฉืœื™ืกืœ, ื•ื•ืึธืก ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืื•ื ื˜ืขืจ ื“ืขื ื ืึธืžืขืŸ ubuntu ืฆื• ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ืžื™ื˜ ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจืก

ืคึผืจืึธื“ื•ืฆื™ืจืขืจ ืกืขื˜ืึทืคึผ

ืื™ืฆื˜ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ื˜ืขืจืจืึทืคืึธืจื ืฉืคึผื™ื™ึทื–ืขืจ - ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ื™ืึทื ื“ืขืงืก:

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 ืงื ื•ื™ืœ ืื•ืŸ ื‘ืœื•ื™ื– ื ืึธืš ื“ืขื, ื’ืขื•ื•ืื•ืกื˜ ื–ื™ื™ืŸ ืฉื™ื™ึทืŸ, ืื™ืš ื’ืขื–ืืžืœื˜ ืึท ื“ื™ืกืง ื‘ื™ืœื“ ืžื™ื˜ ื“ื™ ืคืืจืœืื ื’ื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ื•ื•ื• ืื™ืš ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื“ื™ ื‘ืึทืœืขื‘ืึธืก ืฆื• ื“ืขื ืงื ื•ื™ืœ. ืึธื‘ืขืจ ืื™ืฆื˜ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ื“ืขื ืงื ื•ื™ืœ ืฉื™ื™ึทืŸ ืื™ื™ื“ืขืจ ืœืึธื ื˜ืฉื™ื ื’ Terraform, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ื‘ื ื™ืŸ ื“ื™ ื‘ื™ืœื“. ื“ืขืจื™ื‘ืข ืจ ื”ื ื‘ ืื™ ืš ื’ืขืžื•ื– ื˜ ืื ื”ืฒื‘ ืŸ ืฆื• ื ืคืืœื’ื ื“ื™ืง ืŸ ืงื•ื ืฅ.

ื ื™ืฆืŸ ืึทืžืึทื–ืึธืŸ ืก ืžืขื˜ืึทื“ืึทื˜ืึท ื“ื™ื ืกื˜, ืžื™ืจ ื•ื•ืขืœืŸ ืคืึธืจืŸ ืขื˜ืœืขื›ืข ืคึผืึทืจืึทืžืขื˜ืขืจืก ืฆื• ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ, ื•ื•ืึธืก ืขืก ื•ื•ืขื˜ ืึธื ื ืขืžืขืŸ ืื•ืŸ ืคึผืจืึธืฆืขืก. ืžื™ืจ ื“ืึทืจืคึฟืŸ ื“ื™ ืžืึทืฉื™ืŸ ืฆื• ื’ื™ื™ืŸ ืฆื• ื“ื™ ืžืขื˜ืึทื“ืึทื˜ืึท ื”ื™ื ื˜ืขืจ ื“ื™ MySQL ืงื ื•ื™ืœ ื‘ืึทืœืขื‘ืึธืก ืื•ืŸ ื ืืžืขืŸ-ืฉืคึผืจื™ื›ื•ื•ืึธืจื˜, ื•ื•ืึธืก ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ื™ ื˜ืขืจืจืึทืคืึธืจื ื˜ืขืงืข ื ืึธืš ืกื˜ืึทืจื˜ื™ื ื’. ื–ืืœ ืก ื˜ื•ื™ืฉืŸ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ืขืจ ื˜ืขืงืข ืึท ื‘ื™ืกืœ setup.sh, ื•ื•ืึธืก ืœื•ื™ืคื˜ ื•ื•ืขืŸ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืื™ื– ืื•ื™ืกื’ืขื“ืจื™ื™ื˜ ืื•ื™ืฃ.

setup.sh:

#!/bin/bash
CLUSTER_URI="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/mysql_cluster_uri)"
USERNAME="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/username)"
PASSWORD="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/password)"
sudo sed -i "s#.*;url =.*#url = mysql://${USERNAME}:${PASSWORD}@${CLUSTER_URI}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${PASSWORD}#" /etc/grafana/grafana.ini
sudo service grafana-server restart

ื™ื ื˜ืึทื ืก ื’ืจื•ืคึผืข ืื•ืŸ ื‘ืึทืœืึทื ืกืขืจ

ื ืึธืš ืจื™ื‘ื™ืœื˜ ืึท ื ื™ื™ึทืข ื“ื™ืกืง ื‘ื™ืœื“, ืžื™ืจ ืงืขื ืขืŸ ืœืขืกืึธืฃ ืœื™ื™ื’ืŸ ืื•ื ื“ื–ืขืจ ื˜ืขืงืข ืคึฟืึทืจ Terraform.

ืœืึธืžื™ืจ ืึธื ื•ื•ื™ื™ึทื–ืŸ ืึทื– ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื ื•ืฆืŸ ืึท ื™ื’ื–ื™ืกื˜ื™ื ื’ ื“ื™ืกืง ื‘ื™ืœื“:

data "yandex_compute_image" "grafana_image" {
  image_id = var.image_id
}

ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ืฉืึทืคึฟืŸ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ื’ืจื•ืคึผืข:

resource "yandex_compute_instance_group" "grafana_group" {
  name               = "grafana-group"
  folder_id          = var.folder_id
  service_account_id = var.service_account_id
  instance_template {
    platform_id = "standard-v1"
    resources {
      memory = 1
      cores  = 1
    }
    boot_disk {
      mode = "READ_WRITE"
      initialize_params {
        image_id = data.yandex_compute_image.grafana_image.id
        size     = 4
      }
    }
    network_interface {
      network_id = yandex_vpc_network.grafana_network.id
      subnet_ids = [yandex_vpc_subnet.subnet_a.id, yandex_vpc_subnet.subnet_b.id, yandex_vpc_subnet.subnet_c.id]
      nat = "true"
    }
    metadata = {
      mysql_cluster_uri = "c-${yandex_mdb_mysql_cluster.mysql_cluster.id}.rw.mdb.yandexcloud.net:3306/${var.dbname}"
      username = var.username
      password = var.password
      ssh-keys = "ubuntu:${file("${var.public_key_path}")}"
    }
    network_settings {
      type = "STANDARD"
    }
  }

  scale_policy {
    fixed_scale {
      size = 6
    }
  }

  allocation_policy {
    zones = ["ru-central1-a", "ru-central1-b", "ru-central1-c"]
  }

  deploy_policy {
    max_unavailable = 2
    max_creating    = 2
    max_expansion   = 2
    max_deleting    = 2
  }

  load_balancer {
    target_group_name = "grafana-target-group"
  }
}

ืขืก ืื™ื– ื•ื•ืขืจื˜ ืฆื• ื‘ืึทืฆืึธืœืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ื•ื•ื™ ืžื™ืจ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืขืก ืื™ืŸ ื“ื™ ืžืขื˜ืึทื“ืึทื˜ืึท cluster_uri, username ะธ password. ื“ืึธืก ืื™ื– ื“ื™ ื•ื•ืึธืก ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ื•ื•ืขื˜ ื ืขืžืขืŸ ืื•ื™ืก ื‘ื™ื™ ืกื˜ืึทืจื˜ืึทืคึผ ืื•ืŸ ืฉื˜ืขืœืŸ ืื™ืŸ ื“ื™ Grafana ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ.

ืขืก ืื™ื– ืึทืจื•ื™ืฃ ืฆื• ื“ื™ ื‘ืึทืœืึทื ืกืขืจ.

resource "yandex_lb_network_load_balancer" "grafana_balancer" {
  name = "grafana-balancer"

  listener {
    name = "grafana-listener"
    port = 80
    target_port = 3000
    external_address_spec {
      ip_version = "ipv4"
    }
  }

  attached_target_group {
    target_group_id = yandex_compute_instance_group.grafana_group.load_balancer.0.target_group_id

    healthcheck {
      name = "healthcheck"
      tcp_options {
        port = 3000
      }
    }
  }
}

ื ื‘ื™ืกืœ ืฆื•ืงืขืจ

ืขืก ืื™ื– ื‘ืœื•ื™ื– ืึท ื‘ื™ืกืœ ืœื™ื ืงืก. ื ืึธืš ื“ื™ ื“ื™ืคึผืœื•ื™ื“ ื“ื™ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ, ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ื’ื™ื™ืŸ ืฆื• ื“ื™ Grafana UI ืื•ืŸ ืžืึทื ื™ื•ืึทืœื™ ืœื™ื™ื’ืŸ ื“ื™ CH ืงื ื•ื™ืœ (ื“ื™ ID ืคื•ืŸ ื•ื•ืึธืก ื ืึธืš ื“ืึทืจืฃ ื–ื™ื™ืŸ ื‘ืืงื•ืžืขืŸ) ื•ื•ื™ ืึท ื“ืึทื˜ืึท ืžืงื•ืจ. ืึธื‘ืขืจ Terraform ื•ื•ื™ื™ืกื˜ ื“ื™ ืงื ื•ื™ืœ ืฉื™ื™ึทืŸ. ืœืึธืžื™ืจ ืื™ื ืื™ื‘ืขืจืœืึธื–ืŸ ืฆื• ื‘ืจืขื ื’ืขืŸ ื“ืขื ืขื ื™ืŸ.

ืœืึธืžื™ืจ ืœื™ื™ื’ืŸ ืึท ื ื™ื™ึทืข ืฉืคึผื™ื™ึทื–ืขืจ - 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 ืึทื“ืจืขืก ืื•ืŸ ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ืคื•ืŸ ื“ื™ ืงืœื™ืงื›ืึธื•ืกืข ืงื ื•ื™ืœ

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 ืงืขื ืขืŸ ื”ืขืœืคึฟืŸ ืื™ืจ ืžื™ื˜ ื“ืขื. ืื™ืš ื”ืึธืคึฟืŸ ืึทื– ืขืžืขืฆืขืจ ื’ืขืคึฟื™ื ืขืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ื ื•ืฆื™ืง :)

ืคึผืก ื•ื ื˜ืขืจ ืื™ืš ื•ื•ืขื˜ ืฆื•ื˜ืฉืขืคึผืขืŸ ืึท ืœื™ื ืง ืฆื• ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื•ื•ื• ืื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ืคืึทืจื˜ื™ืง ืจืขืกืึทืคึผื™ื– ืคึฟืึทืจ ืคึผืึทืงืงืขืจ ืื•ืŸ ื˜ืขืจืจืึทืคืึธืจื, ืคืจืึทื’ืžืึทื ืฅ ืคื•ืŸ ื•ื•ืึธืก ืื™ืš ืฆื•ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ.

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’