рд╕рд░реНрд╡рд╛рдВрдирд╛ рдирдорд╕реНрдХрд╛рд░! рдорд╛рдЭреНрдпрд╛ рдЕрднреНрдпрд╛рд╕рдХреНрд░рдорд╛рдЪреНрдпрд╛ рдХрд╛рдорд╛рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди, рдореА рдЕрд╢рд╛ рдШрд░рдЧреБрддреА рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪреНрдпрд╛ рдХреНрд╖рдорддрд╛рдВрд╡рд░ рд╕рдВрд╢реЛрдзрди рдХреЗрд▓реЗ
рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ?
рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░рд╕рд╣ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рд▓реЙрдиреНрдЪ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣реА рддреНрдпрд╛рдЪреНрдпрд╛ рд╣реЛрд╕реНрдЯрд╡рд░ рдЬрд╛рдКрди рдПрдХ рд╕реБрдВрджрд░ UI рдорд┐рд│рд╡реВ рд╢рдХрддрд╛, рдкреБрдвреАрд▓ рдХрд╛рдорд╛рд╕рд╛рдареА рд╕реНрддреНрд░реЛрдд рдореНрд╣рдгреВрди рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛, рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ рдЖрд▓реЗрдЦ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛.
рдореВрд▓рднреВрдд рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ рдПрдХ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХрдорддрд░рддрд╛ рдЖрд╣реЗ - рддреА рджреЛрд╖-рд╕рд╣рд┐рд╖реНрдгреБ рдирд╛рд╣реА. рдореНрд╣рдгрдЬреЗрдЪ, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреА рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдПрдХрд╛ рдЖрднрд╛рд╕реА рдорд╢реАрдирдЪреНрдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддреЗрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ. рдЬрд░ рддреЗ рдирд╛рдХрд╛рд░рд▓реЗ рдХрд┐рдВрд╡рд╛ 10 рд▓реЛрдХрд╛рдВрдиреА рдПрдХрд╛рдЪ рд╡реЗрд│реА UI рдЙрдШрдбрд▓реЗ рддрд░ рд╕рдорд╕реНрдпрд╛ рдЙрджреНрднрд╡рддреАрд▓.
рддреЗ рд╕рд╣рдЬрдкрдгреЗ рд╕реЛрдбрд╡рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд: рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд... рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░рд╕рд╣ рдЕрдиреЗрдХ рд╕рдорд╛рди рдЖрднрд╛рд╕реА рдорд╢реАрди рддреИрдирд╛рдд рдХрд░рдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ L3 рдмреЕрд▓рдиреНрд╕рд░рдЦрд╛рд▓реА рдареЗрд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдкрд░рдВрддреБ рдпреЗрдереЗ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЗрддрдХреЗ рд╕реНрдкрд╖реНрдЯ рдирд╛рд╣реА. Grafana рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ (рдбреЗрдЯрд╛рдмреЗрд╕рдЪреЗ рдорд╛рд░реНрдЧ, рдбреЕрд╢рдмреЛрд░реНрдб, рдЖрд▓реЗрдЦ рдЗ.) рдереЗрдЯ рддреНрдпрд╛рдЪреНрдпрд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирдЪреНрдпрд╛ рдбрд┐рд╕реНрдХрд╡рд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдЖрдореНрд╣реА UI рдордзреНрдпреЗ рдХрд╛рд╣реА рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдмрджрд▓рд▓реНрдпрд╛рд╕, рд╣реЗ рдмрджрд▓ рдХреЗрд╡рд│ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд╡рд░ рджрд┐рд╕реВрди рдпреЗрддреАрд▓ рдЬрд┐рдереЗ рдмреЕрд▓рдиреНрд╕рд░рдиреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдкрд╛рдард╡рд▓реЗ рдЖрд╣реЗ. рд╣реЗ рдЖрдордЪреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рд╡рд┐рд╕рдВрдЧрдд рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдХрдбреЗ рдиреЗрдИрд▓, рдЬреНрдпрд╛рдореБрд│реЗ рд▓реЙрдиреНрдЪ рдЖрдгрд┐ рд╡рд╛рдкрд░рд╛рдордзреНрдпреЗ рд╕рдорд╕реНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддреАрд▓.
рдпреЗрдереЗ рджреБрд╕рд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдЪрд╛рд╡рд╛рд╕рд╛рдареА рдпреЗрдИрд▓, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, MySQL рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рдорддреБрд▓реНрдп. рдЖрдореНрд╣реА рдЧреНрд░рд╛рдлрд╛рдирд╛рд▓рд╛ рд╕рд╛рдВрдЧрддреЛ рдХреА рддрд┐рдиреЗ рдпрд╛ тАЬрд╕реНрдкреЗрдЕрд░тАЭ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рд╛рд╡реА. рддреНрдпрд╛рдирдВрддрд░, рдкреНрд░рддреНрдпреЗрдХ рдорд╢реАрдирд╡рд░ рдПрдХрджрд╛ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдЪрд╛ рдорд╛рд░реНрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрдгрд┐ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд╡рд░ рдЗрддрд░ рд╕рд░реНрд╡ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреЗ рдкреБрд░реЗрд╕реЗ рдЕрд╕реЗрд▓; рддреЗ рдЗрддрд░рд╛рдВрдкрд░реНрдпрдВрдд рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрддреАрд▓.
рдЕрдВрддрд┐рдо рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рдЪрд╛ рдЖрдХреГрддреА рдпреЗрдереЗ рдЖрд╣реЗ:
рдЪрд▓рд╛ рдЖрдкрд▓реНрдпрд╛ рд╣рд╛рддрд╛рдВрдиреА рдЙрдЪрд▓рд╛рдпрд▓рд╛ рд╢рд┐рдХреВрдпрд╛
MySQL рдЖрдгрд┐ ClickHouse
рдмрдЯрдгрд╛рдЪреНрдпрд╛ рдХреНрд▓рд┐рдХрд╡рд░ рдЕрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рддреНрдпрд╛рддреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХрд╕реЗ рд╣рд╛рддрд╛рд│рд╛рдпрдЪреЗ рдЖрдгрд┐ рддреЗ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдХрд╕реЗ рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рд╛рдпрдЪреЗ рд╣реЗ рд╢рд┐рдХрдгреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ.
рдпреЗрдереЗ Yandex.Cloud рдЖрдореНрд╣рд╛рд▓рд╛ рдорджрдд рдХрд░реЗрд▓, рдЬреЗ L3 рдмреЕрд▓рдиреНрд╕рд░реНрд╕, рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдЖрдгрд┐ MySQL рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рд╕реЗрд╡рд╛ рдореНрд╣рдгреВрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдлрдХреНрдд рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдХреНрд░рдорд╛рдиреЗ рдЖрдгреЗрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛.
рдореА рдиреЛрдВрджрдгреА рдХреЗрд▓реА, рдХреНрд▓рд╛рдЙрдб рдЖрдгрд┐ рдкреЗрдореЗрдВрдЯ рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ. рддреНрдпрд╛рдирдВрддрд░, рдореА рдХреНрд▓рд╛рдЙрдбрд╡рд░ рдЧреЗрд▓реЛ рдЖрдгрд┐ рдХрд┐рдорд╛рди рд╕реЗрдЯрд┐рдВрдЧреНрдЬрд╕рд╣ MySQL рдЖрдгрд┐ ClickHouse рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗрдЯ рдХреЗрд▓реЗ. рддреЗ рд╕рдХреНрд░рд┐рдп рд╣реЛрдИрдкрд░реНрдпрдВрдд рдореА рдерд╛рдВрдмрд▓реЛ.
рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рд▓реЙрдЧрд┐рди рдЖрдгрд┐ рдкрд╛рд╕рд╡рд░реНрдб рд╡рд╛рдкрд░реВрди рддреНрдпрд╛рдд рдкреНрд░рд╡реЗрд╢ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдореА рдпреЗрдереЗ рддрдкрд╢реАрд▓рд╛рдВрдордзреНрдпреЗ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА - рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЗрдВрдЯрд░рдлреЗрд╕рдордзреНрдпреЗ рдЕрдЧрджреА рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ.
рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рддрдкрд╢реАрд▓ рдЕрд╕рд╛ рд╣реЛрддрд╛ рдХреА рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдЕрдиреЗрдХ рд╣реЛрд╕реНрдЯ рдЖрд╣реЗрдд, рдЬреЗ рддреНрдпрд╛рдВрдЪреЗ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛рдд. рддрдерд╛рдкрд┐, Grafana рд▓рд╛ рддреЗ рдХрд╛рдо рдХрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╛рдареА рдЕрдЧрджреА рдПрдХ рд╣реЛрд╕реНрдЯ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд▓рд╛рдВрдм рд╡рд╛рдЪрди c-<cluster_id>.rw.mdb.yandexcloud.net
рд╕рдВрдмрдВрдзрд┐рдд ID рд╕рд╣ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рдорд╛рд╕реНрдЯрд░ рд╣реЛрд╕реНрдЯрд╡рд░ рдореЕрдк рдХреЗрд▓реЗ. рд╣реЗрдЪ рдЖрдореНрд╣реА рдЧреНрд░рд╛рдлрд╛рдирд╛ рджреЗрдК.
рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░
рдЖрддрд╛ рд╣реЗ рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ. рд▓рд┐рдирдХреНрд╕рд╕рд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рд╡рд╛рдврд╡реВ рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдореЕрдиреНрдпреБрдЕрд▓реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ.
рдЪрд▓рд╛ ssh рджреНрд╡рд╛рд░реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реВ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдкреЕрдХреЗрдЬреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ.
sudo apt-get install -y apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/enterprise/deb stable main"
sudo apt-get update
sudo apt-get install -y grafana-enterprise
рддреНрдпрд╛рдирдВрддрд░, Grafana systemctl рдЕрдВрддрд░реНрдЧрдд рдЪрд╛рд▓рд╡реВ рдЖрдгрд┐ ClickHouse рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ (рд╣реЛрдп, рддреЗ рдореВрд▓рднреВрдд рдкреЕрдХреЗрдЬрдордзреНрдпреЗ рджрд┐рд▓реЗрд▓реЗ рдирд╛рд╣реА).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
рддреЗрдЪ, рддреНрдпрд╛рдирдВрддрд░ рд╕рд╛рдзреНрдпрд╛ рдЖрджреЗрд╢рд╛рдиреЗ
sudo service grafana-server start
рдЖрдореНрд╣реА рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ рд╕реБрд░реВ рдХрд░реВ. рдЖрддрд╛ рдЖрдкрдг рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирдЪрд╛ рдмрд╛рд╣реНрдп IP рдкрддреНрддрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛, рдкреЛрд░реНрдЯ 3000 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд╕реБрдВрджрд░ Grafana UI рдкрд╛рд╣реВ рд╢рдХрддрд╛.
рдкрд░рдВрддреБ рдШрд╛рдИ рдХрд░реВ рдирдХрд╛, рдЧреНрд░рд╛рдлрд╛рдирд╛ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рддреНрдпрд╛рд╕ MySQL рдЪрд╛ рдорд╛рд░реНрдЧ рд╕рд╛рдВрдЧрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
Grafana рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░рдЪреЗ рд╕рдВрдкреВрд░реНрдг рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдЖрд╣реЗ /etc/grafana/grafana.ini
. рдЖрд╡рд╢реНрдпрдХ рдУрд│ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:
;url =
рдЖрдореНрд╣реА рд╣реЛрд╕реНрдЯрд▓рд╛ MySQL рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рд╕реЗрдЯ рдХрд░рддреЛ. рддреНрдпрд╛рдЪ рдлрд╛рдИрд▓рдордзреНрдпреЗ рд╡рд░реАрд▓ рдЪрд┐рддреНрд░рд╛рдд рдЧреНрд░рд╛рдлрд╛рдирд╛рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд▓реЙрдЧрд┐рди рдЖрдгрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдЖрд╣реЗ, рдЬреЗ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рджреЛрдиреНрд╣реА рд╕рдорд╛рди рдЖрд╣реЗрдд admin
.
рддреБрдореНрд╣реА sed рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛:
sudo sed -i "s#.*;url =.*#url = mysql://${MYSQL_USERNAME}:${MYSQL_PASSWORD}@${MYSQL_CLUSTER_URI}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${GRAFANA_USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${GRAFANA_PASSWORD}#" /etc/grafana/grafana.ini
рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ!
sudo service grafana-server restart
рдЖрддрд╛ Grafana UI рдордзреНрдпреЗ рдЖрдореНрд╣реА рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдбреЗрдЯрд╛рд╕реНрд░реЛрдд рдореНрд╣рдгреВрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ.
рдореА рдЦрд╛рд▓реАрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрд╕рд╣ рдХрд╛рд░реНрдпрд░рдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╣реЛрддреЛ:
рдореА URL рдореНрд╣рдгреВрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
рд╕рд░реНрд╡! рдЖрдордЪреНрдпрд╛рдХрдбреЗ CH рдЖрдгрд┐ MySQL рд╢реА рдХрдиреЗрдХреНрдЯ рдХреЗрд▓реЗрд▓реЗ рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ рдЕрд╕рд▓реЗрд▓реЗ рдПрдХ рдХрд╛рд░реНрдпрд░рдд рдЖрднрд╛рд╕реА рдорд╢реАрди рдЖрд╣реЗ. рддреБрдореНрд╣реА рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕рд╡рд░ рдбреЗрдЯрд╛рд╕реЗрдЯ рдЖрдзреАрдЪ рдЕрдкрд▓реЛрдб рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдбреЕрд╢рдмреЛрд░реНрдб рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛. рддрдерд╛рдкрд┐, рдЖрдореНрд╣реА рдЕрджреНрдпрд╛рдк рдЖрдордЪреЗ рдзреНрдпреЗрдп рд╕рд╛рдзреНрдп рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реА рдЖрдгрд┐ рдкреВрд░реНрдг рд╡рд╛рдвреАрд╡ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рддреИрдирд╛рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдирд╛рд╣реАрдд.
рдкреЕрдХрд░
Yandex.Cloud рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рджреНрдпрдорд╛рди рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирдЪреА рдбрд┐рд╕реНрдХ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ - рдПрдХрдореЗрдХрд╛рдВрд╢реА рд╕рд╛рд░рдЦреАрдЪ рдХрд┐рддреАрд╣реА рдорд╢реАрди. рд╣реЗ рдЖрдкрдг рдирдХреНрдХреА рд╡рд╛рдкрд░рдгрд╛рд░ рдЖрд╣реЛрдд. рдкреНрд░рддрд┐рдорд╛ рд╕реЛрдпреАрд╕реНрдХрд░рдкрдгреЗ рдПрдХрддреНрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╕рд╛рдзрди рдШреНрдпрд╛
рдЖрдордЪреНрдпрд╛ json рдлрд╛рдЗрд▓рдордзреНрдпреЗ рджреЛрди рдмреНрд▓реЙрдХ рдЕрд╕рддреАрд▓: рдмрд┐рд▓реНрдбрд░ рдЖрдгрд┐ рдкреНрд░реЛрд╡реНрд╣рд┐рдЬрдирд░реНрд╕. рдкрд╣рд┐рд▓рд╛ рдмреНрд▓реЙрдХ рдкреНрд░рддрд┐рдореЗрдЪреНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪреЗ рд╕реНрд╡рддрдГ рдПрдХ рдЕрд╕реНрддрд┐рддреНрд╡ рдореНрд╣рдгреВрди рд╡рд░реНрдгрди рдХрд░рддреЛ рдЖрдгрд┐ рджреБрд╕рд░рд╛ рдмреНрд▓реЙрдХ рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдордЧреНрд░реАрд╕рд╣ рднрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реВрдЪрдирд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЛ.
рдмрд┐рд▓реНрдбрд░реНрд╕
{
"builders": [
{
"type": "yandex",
"endpoint": "{{user `endpoint`}}",
"folder_id": "<folder_id>",
"subnet_id": "{{user `subnet_id`}}",
"zone": "{{user `zone`}}",
"labels": {},
"use_ipv4_nat": true,
"use_internal_ip": false,
"service_account_key_file": "<service_account_key_file>",
"image_name": "grafana-{{timestamp}}",
"image_family": "grafana",
"image_labels": {},
"image_description": "GRAFANA",
"source_image_family": "ubuntu-1804-lts",
"disk_size_gb": 3,
"disk_type": "network-hdd",
"ssh_username": "ubuntu"
}
],
...
}
рдпрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯрдордзреНрдпреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдХреНрд▓рд╛рдЙрдбрдордзреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдЪрд╛ рдЖрдпрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬрд┐рдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗ, рддрд╕реЗрдЪ рдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд рдкреВрд░реНрд╡реА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реЗрд╡рд╛ рдЦрд╛рддреНрдпрд╛рддреАрд▓ рдХреА рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓рдЪрд╛ рдорд╛рд░реНрдЧ. рддреБрдореНрд╣реА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рд╕реЗрд╡рд╛ рдЦрд╛рддреА рдЖрдгрд┐ рдХреА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛
рд╣реЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореНрд╣рдгрддреЗ рдХреА рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдбрд┐рд╕реНрдХ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХреЗрд▓реА рдЬрд╛рдИрд▓ ubuntu-1804-lts
, рдкреНрд░рддрд┐рдорд╛ рдХреБрдЯреБрдВрдмрд╛рддреАрд▓ рдпреЛрдЧреНрдп рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд рдареЗрд╡рд▓реЗ GRAFANA
рдирд╛рд╡рд╛рдЦрд╛рд▓реА grafana-{{timestamp}}
.
рдкреНрд░реЛрд╡реНрд╣рд┐рдЬрдирд░реНрд╕
рдЖрддрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪрд╛ рдЕрдзрд┐рдХ рдордиреЛрд░рдВрдЬрдХ рднрд╛рдЧ рдпреЗрддреЛ. рддреЗ рдХреГрддреАрдВрдЪреНрдпрд╛ рдХреНрд░рдорд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░реЗрд▓ рдЬреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд╡рд░ рдбрд┐рд╕реНрдХ рдЗрдореЗрдЬрдордзреНрдпреЗ рдЧреЛрдард╡рдгреНрдпрд╛рдЖрдзреА рдХрд░рд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрддреАрд▓.
{
...,
"provisioners": [
{
"type": "shell",
"pause_before": "5s",
"scripts": [
"prepare-ctg.sh"
]
},
{
"type": "file",
"source": "setup.sh",
"destination": "/opt/grafana/setup.sh"
},
{
"type": "shell",
"execute_command": "sudo {{ .Vars }} bash '{{ .Path }}'",
"pause_before": "5s",
"scripts": [
"install-packages.sh",
"grafana-setup.sh",
"run-setup-at-reboot.sh"
]
}
]
}
рдпреЗрдереЗ рд╕рд░реНрд╡ рдХреНрд░рд┐рдпрд╛ 3 рдЯрдкреНрдкреНрдпрд╛рдд рд╡рд┐рднрд╛рдЧрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдкрд╣рд┐рд▓реНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рдПрдХ рд╕рд╛рдзреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ рдЬреА рдПрдХ рд╕рд╣рд╛рдпрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрдпрд╛рд░ рдХрд░рддреЗ.
рддрдпрд╛рд░реА-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
рдкреБрдврдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рдЖрдореНрд╣реА рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдареЗрд╡рддреЛ, рдЬреА рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рд╕реБрд░реВ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рд▓рдЧреЗрдЪ рд▓реЙрдиреНрдЪ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдареЗрд╡реЗрд▓ рдЬреНрдпрд╛рдВрдирд╛ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ рдиреЛрдВрджрдгреА рдХрд░рдгреЗ рдЖрдгрд┐ рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
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) рдкреЕрдХреЗрдЬреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛
реи) Systemctl рдЕрдВрддрд░реНрдЧрдд Grafana рдЪрд╛рд▓рд╡рд╛ рдЖрдгрд┐ 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;
рдЖрддрд╛ рдлрдХреНрдд рдкреЕрдХрд░ рдЪрд╛рд▓рд╡рдгреЗ рдЖрдгрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рднрд╛рдЧрд╛рдд рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рддрд┐рдорд╛ рдареЗрд╡рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ. рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рддреБрдореНрд╣реА рддреЗ рдмреВрдЯ рдбрд┐рд╕реНрдХ рдореНрд╣рдгреВрди рдирд┐рд╡рдбреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд▓рд╛рдБрдЪ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рддрдпрд╛рд░ Grafana рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ рдорд┐рд│реЗрд▓.
рдЙрджрд╛рд╣рд░рдг рдЧрдЯ рдЖрдгрд┐ рдмреЕрд▓рдиреНрд╕рд░
рдПрдХрджрд╛ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдбрд┐рд╕реНрдХ рдЗрдореЗрдЬ рдЖрд▓реА рдЬреА рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрдиреЗрдХ рд╕рдорд╛рди рдЧреНрд░рд╛рдлрд╛рдирд╛ рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, рдЖрдореНрд╣реА рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЧрдЯ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддреЛ. Yandex.Cloud рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░, рд╣реА рд╕рдВрдЬреНрдЮрд╛ рд╕рдорд╛рди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЖрднрд╛рд╕реА рдорд╢реАрдирдЪреНрдпрд╛ рдпреБрдирд┐рдпрдирд▓рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ. рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЧрдЯ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рдпрд╛ рдЧрдЯрд╛рддреАрд▓ рд╕рд░реНрд╡ рдорд╢реАрдирдЪреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдирдВрддрд░ рдЧрдЯрд╛рдЪреА рд╕реНрд╡рддрдГрдЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рдХреНрд░рд┐рдп рдорд╢реАрдирдЪреА рдХрд┐рдорд╛рди рдЖрдгрд┐ рдХрдорд╛рд▓ рд╕рдВрдЦреНрдпрд╛). рдЬрд░ рд╕рдзреНрдпрд╛рдЪреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдирд┐рдХрд╖рд╛рдВрдЪреА рдкреВрд░реНрддрддрд╛ рдХрд░рдд рдирд╕реЗрд▓, рддрд░ рдЙрджрд╛рд╣рд░рдг рдЧрдЯ рд╕реНрд╡рддрдГ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдорд╢реАрди рдХрд╛рдвреВрди рдЯрд╛рдХреЗрд▓ рдХрд┐рдВрд╡рд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдкреНрд░рддрд┐рдореЗрдордзреНрдпреЗ рдирд╡реАрди рддрдпрд╛рд░ рдХрд░реЗрд▓.
рдЖрдордЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдЪрд╛ рдПрдХ рднрд╛рдЧ рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░рдЪрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЧрдЯ рддрдпрд╛рд░ рдХрд░реВ рдЬреЛ рдкреВрд░реНрд╡реА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбрд┐рд╕реНрдХ рдкреНрд░рддрд┐рдореЗрд╡рд░реВрди рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓.
рдЦрд░реЛрдЦрд░рдЪ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рд╢реЗрд╡рдЯрдЪрд╛ рд╕рдореВрд╣ рд╕реЗрдЯрдЕрдк. рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░рд╕рд╣ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рддреАрд▓ рд▓рдХреНрд╖реНрдп рдЧрдЯ рдХрд╛рд╣реА рдмрдЯрдгреЗ рдХреНрд▓рд┐рдХ рдХрд░реВрди рдпрд╛ рдЧрдЯрд╛рдЪреНрдпрд╛ рдЖрднрд╛рд╕реА рдорд╢реАрдирдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА L3 рдмреЕрд▓рдиреНрд╕рд░ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░реЗрд▓.
рдмреЕрд▓рдиреНрд╕рд░ рд╕реЗрдЯ рдХрд░рддрд╛рдирд╛, рдореА рджреЛрди рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдореБрджреНрджреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ:
- рдореА рдмреЕрд▓рдиреНрд╕рд░рд▓рд╛ рдкреЛрд░реНрдЯ 80 рд╡рд░ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЯреНрд░реЕрдлрд┐рдХ рд╕реНрд╡реАрдХрд╛рд░рд╛рдпрд▓рд╛ рд▓рд╛рд╡рд▓реЗ рдЖрдгрд┐ рддреЗ рдкреЛрд░реНрдЯ 3000 рд╡рд░ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд╡рд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХреЗрд▓реЗ, рдЬрд┐рдереЗ рдЧреНрд░рд╛рдлрд╛рдирд╛ рд░рд╛рд╣рддреЛ.
- рдореА рдкреЛрд░реНрдЯ 3000 рд╡рд░ рдкрд┐рдВрдЧ рдХрд░реВрди рдорд╢реАрдирдЪреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддрд╛ рддрдкрд╛рд╕рдгреЗ рд╕реЗрдЯ рдХреЗрд▓реЗ.
рд▓рд╣рд╛рди рд╕рд╛рд░рд╛рдВрд╢
рд╢реЗрд╡рдЯреА, рдЖрдореНрд╣реА рдЗрдЪреНрдЫрд┐рдд рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЕрдиреНрдпреБрдЕрд▓реА рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рдд рд╕рдХреНрд╖рдо рдЭрд╛рд▓реЛ рдЖрдгрд┐ рдЖрддрд╛ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЕрддреНрдпрдВрдд рд▓рд╡рдЪрд┐рдХ рдЧреНрд░рд╛рдлрдирд╛ рд╕реЗрд╡рд╛ рдЖрд╣реЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдмреЕрд▓рдиреНрд╕рд░рдЪрд╛ IP рдкрддреНрддрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪрд╛ рдПрдВрдЯреНрд░реА рдкреЙрдИрдВрдЯ рдЖрдгрд┐ рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рд╣реЛрд╕реНрдЯрдордзреНрдпреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рд╡рд┐рдЬрдпреА рд╡рд╛рдЯреЗрд▓ рдХрд╛? рд╣реЛрдп, рд╡рд┐рдЬрдп. рдкрдг рддрд░реАрд╣реА рдХрд╛рд╣реАрддрд░реА рдорд▓рд╛ рдЧреЛрдВрдзрд│рд╛рдд рдЯрд╛рдХрддреЗ. рд╡рд░реАрд▓ рд╕рдВрдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рдкреБрд╖реНрдХрд│ рдореЕрдиреНрдпреБрдЕрд▓ рдЪрд░рдгрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдЕрдЬрд┐рдмрд╛рдд рд╕реНрдХреЗрд▓реЗрдмрд▓ рдирд╛рд╣реА; рдореА рд╢рдХреНрдп рдЕрд╕рд▓реНрдпрд╛рд╕ рддреЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░реВ рдЗрдЪреНрдЫрд┐рддреЛ. рдпрд╛рд▓рд╛рдЪ рдкреБрдвреАрд▓ рднрд╛рдЧ рд╡рд╛рд╣рд┐рд▓реЗрд▓рд╛ рдЕрд╕реЗрд▓.
рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдПрдХрддреНрд░реАрдХрд░рдг
рдЖрдореНрд╣реА рдкреБрдиреНрд╣рд╛ HashiCorp рдирд╛рд╡рд╛рдЪреЗ рд╕рд╛рдзрди рд╡рд╛рдкрд░реВ
рдЯреЗрд░рд╛рдлреЙрд░реНрдорд╕рд╣ рд╕рд░реНрд╡ рдХрд╛рд░реНрдп рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдкрд░реНрдпрдВрдд рдпреЗрддреЗ (*.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 - рдХреНрд▓рд╛рдЙрдб рдЖрдпрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░ рдЬреЗрдереЗ рдЖрдореНрд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдХрд░реВ
рдлреЛрд▓реНрдбрд░_рдЖрдпрдбреА тАФ рд╡рд┐рднрд╛рдЧ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рдЬреЗрдереЗ рдЖрдореНрд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░реВ
service_account_id тАФ рдХреНрд▓рд╛рдЙрдбрдЪреНрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рднрд╛рдЧрд╛рдд рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ.
image_id - рдкреЕрдХрд░ рд╡рд╛рдкрд░реВрди рдорд┐рд│рд╡рд▓реЗрд▓реНрдпрд╛ рдбрд┐рд╕реНрдХ рдкреНрд░рддрд┐рдореЗрдЪрд╛ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ
рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдирд╛рд╡ ╨╕ рдкрд╛рд╕рд╡рд░реНрдб тАФ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдгрд┐ Grafana рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ рджреЛрдиреНрд╣реАрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдХрд░реНрддрд╛рдирд╛рд╡ рдЖрдгрд┐ рдкрд╛рд╕рд╡рд░реНрдб
dbname тАФ CH рдЖрдгрд┐ MySQL рдХреНрд▓рд╕реНрдЯрд░реНрд╕рдордзреНрдпреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╛рд╡
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ_рдХреА_рдкрде тАФ рддреБрдордЪреНрдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ 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 рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░рдЪ, рддреНрдпрд╛рдЪрд╛ ID рдЬрд╛рдгреВрди рдШреЗрдКрди, рдореА рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╣ рдбрд┐рд╕реНрдХ рдкреНрд░рддрд┐рдорд╛ рдЧреЛрд│рд╛ рдХреЗрд▓реА, рдЬрд┐рдереЗ рдореА рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓рд╛. рдкрдг рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдХреНрд▓рд╕реНрдЯрд░ рдЖрдпрдбреА рдорд╛рд╣реАрдд рдирд╛рд╣реА, рдЗрдореЗрдЬ рдмрдирд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реЗрд╕рд╣. рдореНрд╣рдгреВрди, рдорд▓рд╛ рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреАрдВрдЪрд╛ рдЕрд╡рд▓рдВрдм рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрд▓рд╛
Amazon рдЪреНрдпрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реЗрд╡реЗрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди, рдЖрдореНрд╣реА рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд▓рд╛ рдХрд╛рд╣реА рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдкрд╛рд╕ рдХрд░реВ, рдЬреЗ рддреЗ рд╕реНрд╡реАрдХрд╛рд░реЗрд▓ рдЖрдгрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрд▓. рдЖрдореНрд╣рд╛рд▓рд╛ 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
рдЗрдВрдЯреЗрдиреНрд╕ рдЧреНрд░реБрдк рдЖрдгрд┐ рдмреЕрд▓рдиреНрд╕рд░
рдирд╡реАрди рдбрд┐рд╕реНрдХ рдкреНрд░рддрд┐рдорд╛ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдЖрдореНрд╣реА рд╢реЗрд╡рдЯреА рдЖрдордЪреА рдлрд╛рдИрд▓ рдЯреЗрд░рд╛рдлреЙрд░реНрдорд╕рд╛рдареА рдЬреЛрдбреВ рд╢рдХрддреЛ.
рдЪрд▓рд╛ рд╕реВрдЪрд┐рдд рдХрд░реВрдпрд╛ рдХреА рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рджреНрдпрдорд╛рди рдбрд┐рд╕реНрдХ рдкреНрд░рддрд┐рдорд╛ рд╡рд╛рдкрд░рд╛рдпрдЪреА рдЖрд╣реЗ:
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
. рд╣реЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдЪреНрдпрд╛ рд╡реЗрд│реА рдмрд╛рд╣реЗрд░ рдХрд╛рдвреЗрд▓ рдЖрдгрд┐ рдЧреНрд░рд╛рдлрдирд╛ рдХреЙрдиреНрдлрд┐рдЧрдордзреНрдпреЗ рдареЗрд╡реЗрд▓.
рд╣реЗ рдмреЕрд▓рдиреНрд╕рд░рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ.
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 рдХреНрд▓рд╕реНрдЯрд░ (рдЬреНрдпрд╛рдЪрд╛ рдЖрдпрдбреА рдЕрджреНрдпрд╛рдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ) рдореЕрдиреНрдпреБрдЕрд▓реА рдЬреЛрдбрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рдкрдг рдЯреЗрд░рд╛рдлреЙрд░реНрдорд▓рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдЖрдпрдбреА рдорд╛рд╣реАрдд рдЖрд╣реЗ. рд╣реЗ рдкреНрд░рдХрд░рдг рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдЖрдгрдгреНрдпрд╛рдЪреА рдЬрдмрд╛рдмрджрд╛рд░реА рддреНрдпрд╛рдЪреНрдпрд╛рд╡рд░ рд╕реЛрдкрд╡реВ.
рдЪрд▓рд╛ рдПрдХ рдирд╡реАрди рдкреНрд░рджрд╛рддрд╛ рдЬреЛрдбреВ - Grafana, рдЖрдгрд┐ рддрд┐рд▓рд╛ рдпрдЬрдорд╛рди рдореНрд╣рдгреВрди рдмреЕрд▓рдиреНрд╕рд░рдЪрд╛ IP рдкрддреНрддрд╛ рджреЗрдК. рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдорд╢реАрдирд╡рд░ рдЬреЗ рдмрджрд▓ рдХрд░рддреЛ рддреЗ рд╕рд░реНрд╡ рдмрджрд▓ рдЬреЗрдереЗ рддреНрдпрд╛рдЪреЗ рдмреЕрд▓рдиреНрд╕рд░ рдард░рд╡рддреЗ рддреЗ 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"
}
рдЪрд▓рд╛ рдЖрдкрд▓реЗ рдХреЗрд╕ рдХрдВрдШреА рдХрд░реВрдпрд╛
рдмреЕрд▓рдиреНрд╕рд░ рдЖрдпрдкреА рдЕреЕрдбреНрд░реЗрд╕ рдЖрдгрд┐ рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдХреНрд▓рд╕реНрдЯрд░рдЪреЗ рд╣реЛрд╕реНрдЯ рджрд╛рдЦрд╡реВ
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"
}
рддреБрдореНрд╣реА рдзрд╛рд╡реВ рд╢рдХрддрд╛
рд╕рд░реНрд╡! рдЖрдордЪреА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗрдЯ рдХрд░реВрди, рдЖрдореНрд╣реА рд╡рд░ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреА рд╡рд╛рдврд╡рд╛рдпрд▓рд╛ рдЯреЗрд░рд╛рдлреЙрд░реНрдорд▓рд╛ рд╕рд╛рдВрдЧреВ рд╢рдХрддреЛ. рд╕рдВрдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рдорд▓рд╛ рд╕реБрдорд╛рд░реЗ 15 рдорд┐рдирд┐рдЯреЗ рд▓рд╛рдЧрд▓реА.
рд╢реЗрд╡рдЯреА рдЖрдкрдг рдПрдХ рд╕реБрдВрджрд░ рд╕рдВрджреЗрд╢ рдкрд╛рд╣реВ рд╢рдХрддрд╛:
Apply complete! Resources: 9 added, 0 changed, 0 destroyed.
Outputs:
clickhouse_cluster_host = https://c-c9q14ipa2ngadqsbp2iq.rw.mdb.yandexcloud.net:8443
grafana_balancer_ip_address = 130.193.50.25
рдЖрдгрд┐ рдореЗрдШрдордзреНрдпреЗ, рдЙрднрд╛рд░рд▓реЗрд▓реНрдпрд╛ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреЗ рдШрдЯрдХ рджреГрд╢реНрдпрдорд╛рди рдЕрд╕рддреАрд▓:
рдЪрд▓рд╛ рдкрд░рд┐рдгрд╛рдорд╛рдВрдЪреА рдмреЗрд░реАрдЬ рдХрд░реВрдпрд╛
рдЖрддрд╛, рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди Grafana рд╡рд╛рдкрд░реВрди, рддреБрдордЪреНрдпрд╛рдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХрдЬрдг Yandex.Cloud рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рд╡рд┐рд╕реНрддреГрдд рдХреНрд▓рд╛рдЙрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдХрд░реВ рд╢рдХрддреЛ. HashiCorp рдордзреАрд▓ рдЙрдкрдпреБрдХреНрдд рд╕рд╛рдзрдиреЗ рдЬрд╕реЗ рдХреА Packer рдЖрдгрд┐ Terraform рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдордзреНрдпреЗ рдорджрдд рдХрд░реВ рд╢рдХрддрд╛рдд. рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рдХреЛрдгрд╛рд▓рд╛рддрд░реА рд╣рд╛ рд▓реЗрдЦ рдЙрдкрдпреБрдХреНрдд рд╡рд╛рдЯреЗрд▓ :)
P.S. рдЦрд╛рд▓реА рдореА рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрд╢реА рдПрдХ рд▓рд┐рдВрдХ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрди рдЬрд┐рдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреЕрдХрд░ рдЖрдгрд┐ рдЯреЗрд░рд╛рдлреЙрд░реНрдорд╕рд╛рдареА рддрдпрд╛рд░ рдкрд╛рдХрдХреГрддреА рд╕рд╛рдкрдбрддреАрд▓, рдЬреНрдпрд╛рдЪреЗ рддреБрдХрдбреЗ рдореА рдпрд╛ рд▓реЗрдЦрд╛рдд рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЖрд╣реЗрдд.
рд╕реНрддреНрд░реЛрдд: www.habr.com