á¡á¬ážáá¯á¶ážáááºá¹ááá¬áá«! áá»áœááºá¯ááºááááºáááºážá¡áá¯ááºááá
áºá
áááºáá
áºááá¯ááºážá¡áá±ááŒáá·áºá á€áá²á·ááá¯á·áá±á¬ááŒááºááœááºáž cloud platform áá
áœááºážáááºáá»á¬ážááᯠáá¯áá±ááááŒá¯áá²á·áá«áááºá
áá¬ááᯠááá¯áá»ááºáá¬áá²á
áááºáá¬áá¬ááŒáá·áº virtual machine áá áºáá¯ááᯠá áááºááŒá®ážáá±á¬ááºá áááºááẠáááºážá host ááá¯á·ááœá¬ážáᬠááŸááá±á¬ UI ááᯠááá°ááá¯ááºááŒá®ážá áá±á¬ááºááẠá¡áá¯ááºá¡ááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážá¡ááŒá Ạáá±áá¬áá±á·á áºáá»á¬ážááᯠáááºááŸááºááŒááºážá áááºááŸáºáá¯ááºáá»á¬ážááŸáá·áº ááááºáá»á¬ážááᯠáááºáá®ážááá¯ááºáááºá
á¡ááŒá±áá¶áá¬ážááŸááºážááœáẠáááá¬áááºááŸá¬ážáá±á¬ á¡á¬ážáááºážáá»ááºáá áºáá¯ááŸáááẠ- áááºážááẠá¡ááŸá¬ážáá¶ááá¯ááºáááºáá¯á¶ážááááŸááá«á ááá¯ááá¯áááºááŸá¬á á¡ááá®áá±ážááŸááºážááá¯ááºáá±á¬ááºááá¯ááºá áœááºážáá áºáá¯áá¯á¶ážááẠvirtual machine áá áºáá¯áááŸááºáááºááá¯ááºá áœááºážáá±á«áºááœááºáá°áááºáááºá UI ááᯠáá áºáá»áááºáááºážááœáẠáá° 10 áá±á¬ááºá ááŒááºážááá¯áá«á ááá¯á·ááá¯áẠááŒá¿áá¬áá»á¬áž áá±á«áºáá±á«ááºáá¬áááºááŒá áºáááºá
áááºážááá¯á·ááᯠááá¯ážááŸááºážá áœá¬ááŒá±ááŸááºážááá¯ááºáááº- áááºááá¯á¡ááºáááºááŸá¬... áááºáá¬áá¬áá áºáá¯ááŒáá·áº áááºáá°áááºáá»áŸáá±á¬ virtual machines á¡áá»á¬ážá¡ááŒá¬ážááᯠááŒáá·áºáá»ááºááŒá®áž L3 balancer á¡á±á¬ááºááœáẠáá¬ážááá¯ááºáá«á áá«áá±ááá·áº áá®ááŸá¬ á¡á¬ážáá¯á¶ážá áá®áá±á¬ááºááŸááºážáá±áᬠááá¯ááºáá°ážá Grafana ááẠá¡áá¯á¶ážááŒá¯áá°áááºáááºáá»á¬áž (áá±áá¬áá±á·á áºáá»á¬ážá áááºááŸáºáá¯ááºáá»á¬ážá ááááºáá»á¬ážá áááºááŒáá·áº) ááᯠáááºážá virtual machine áá áºáá±á«áºááœáẠááá¯ááºááá¯ááºááááºážáááºážáááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠUI ááŸá áááºáááºá¡áá»áá¯á·ááᯠááŒá±á¬ááºážáá²áá«áá á€ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááẠáá»áœááºá¯ááºááá¯á·ááᯠáá»áááºááœááºáá»áŸá¬áá±ážááá¯á·ááá·áº virtual machine áá±á«áºááœááºáᬠáááºáááºá á±áááºááŒá áºáááºá áááºážááẠáá»áœááºá¯ááºááá¯á·á á¡ááá®áá±ážááŸááºážá¡ááœáẠáááá¯ááºáá®áá±á¬ áááºáááºáá»á¬ážááᯠááŒá áºáá±á«áºá á±ááŒá®áž á áááºá¡áá¯á¶ážááŒá¯ááŒááºážááŸáá·áº á¡áá¯á¶ážááŒá¯ááŒááºážááœáẠááŒá¿áá¬áá»á¬ážááŒá áºá á±áááºá
á€áá±áá¬ááœáẠá¡ááŒá¬ážáá±á¬ áá±áá¬áá±á·á áºááẠá¥ááá¬á MySQL ááá¯á·ááá¯áẠáááºážá áá®áá»áŸááŒááºážááá¯á·ááᯠáááºáááºááá¯ááºáááºááŒá áºáááºá áá°ááẠဠ"á¡ááá¯áá á¹á ááºáž" áá±áá¬áá±á·á áºááœáẠá¡áá¯á¶ážááŒá¯áá°áááºáááºáá»á¬ážááᯠááááºážáááºážááá·áºáááºáᯠGrafana á¡á¬áž áá»áœááºá¯ááºááá¯á·ááŒá±á¬áá¬ážáááºá ááá¯á·áá±á¬ááºá á ááºáá áºáá¯á á®ááœááºáá áºááŒááẠá€áá±áá¬áá±á·á áºááá¯á· áááºážááŒá±á¬ááºážááᯠáááºááŸááºáááºááŸáá·áº virtual machines áá áºáá¯áá¯ááŸá á¡ááŒá¬ážá¡áá¯á¶ážááŒá¯áá°áááºáááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáááºážááŒááºáááºá áááºážááá¯á·ááẠá¡ááŒá¬ážáá°áá»á¬ážáᶠááá¯ážáá»á²á·áááºááŒá áºáááºá
á€áááºááŸá¬ áá±á¬ááºáá¯á¶ážá¡ááá®áá±ážááŸááºážá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á áá¯á¶ááŒááºážááŒá áºáááº-
áááºááŒáá·áºááŒáŸá±á¬ááºááẠáááºáá°ááŒáá«á áá¯á·
MySQL ááŸáá·áº ClickHouse
ááá¯ááºáá áºáá»ááºááŸáááºáá¯á¶ááŒáá·áº ááá¯áá²á·ááá¯á·áá±á¬ á¡ááá®áá±ážááŸááºážááᯠá¡áá¯á¶ážáááŒá¯áá®á áááºážáá¡á áááºá¡ááá¯ááºážáá áºáá¯á á®ááᯠáááºááá¯á·ááá¯ááºááœááºááááºááᯠáá±á·áá¬ááŒá®áž áááºážááá¯á·ááᯠáá áºáá¯ááŸáá·áºáá áºáᯠáá±á«ááºážá ááºážááẠááá¯á¡ááºáááºá
á€áá±áá¬ááœáẠYandex.Cloud ááẠL3 balancersá ClickHouse ááŸáá·áº MySQL ááᯠá á®áá¶ááá·áºááœá²ááá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááŒá Ạáá¶á·ááá¯ážáá±ážáá«áááºá á¡áá¯á¶ážááŒá¯áá°ááẠááá·áºáááºáá»ááºáá»á¬ážááᯠáááºááŸááºáááºáᬠááá¯á¡ááºááŒá®áž ááááºáá±á¬ááºážááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡áá¯ááºá¡ááŒá áºááá¯á· áá±á¬ááºáááºá¡áá á á±á¬áá·áºáá«á
á á¬áááºážááœááºážááŒá®áž cloud áá áºáá¯ááŸáá·áº ááœá±áá±ážáá»á±ááŸá¯á¡áá±á¬áá·áºáá áºáᯠáááºáá®ážáá²á·áááºá ááá¯á·áá±á¬ááºá áá»áœááºá¯ááºááẠcloud ááá¯á·ááœá¬ážá á¡áááºážáááºáá»áŸáá±á¬ áááºáááºáá»á¬ážááŒáá·áº MySQL ááŸáá·áº ClickHouse á¡á á¯á¡áá±ážáá»á¬ážááᯠá áá áºááá·áºááœááºážáá«á áá°ááá¯á· ááŸá¯ááºááŸá¯ááºááŸá¬ážááŸá¬ážááŒá áºáá¬áá²á·á¡áá áá«á á±á¬áá·áºáá²á·áááºá
á¡á á¯á¡áá±ážáá áºáá¯á á®ááœáẠáá±áá¬áá±á·á áºáá áºáá¯áááºáá®ážáááºááŸáá·áº áá±á¬á·ááºá¡ááºááŸáá·áº á áá¬ážááŸááºááᯠá¡áá¯á¶ážááŒá¯á áááºážáá¶ááá¯á· áááºáá±á¬ááºááœáá·áºááᯠá á®á ááºáááºááŸááºáááºáááºáž ááááááẠááá¯á¡ááºáá«áááºá á€áá±áá¬ááœáẠá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠáá»áœááºá¯ááºááá±á¬áºááŒáá¬ážáá« - á¡áá¬á¡á¬ážáá¯á¶ážááẠá¡ááºáá¬áá±á·á áºááœáẠáááá¬áááºááŸá¬ážáá«áááºá
ááŸááºážááŸááºážáááºážáááºážááá¯ááºáá±á¬á¡áá±ážá
áááºá¡áá»ááºááŸá¬ á€áá±áá¬áá±á·á
áºáá»á¬ážááœáẠáááºážááá¯á·áá¡ááŸá¬ážááᯠáá¶ááá¯ááºáááºááŸáá
á±ááẠáá±áá»á¬á
á±áá±á¬ host á¡áá»á¬ážá¡ááŒá¬ážááŸááááºá ááá¯á·áá±á¬áºá Grafana ááẠáááºážááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬áá±áá¬áá±á·á
áºáá
áºáá¯á
á®á¡ááœáẠhost áá
áºáá¯á¡ááá¡áá»ááá¯á¡ááºáááºá á¡ááŒá¬ááŒá®ážáááºáááºá c-<cluster_id>.rw.mdb.yandexcloud.net
áááºááá¯ááºáᬠID ááŒáá·áº á¡á
á¯á¡áá±ážá áááºááŸáá¡áá¯á¶ážááŒá¯áá±áá±á¬ áá¬á
áá¬á¡áááºááŸááºáá¶ááá¯á· ááŒá±áá¯á¶ááœá²áá¬ážáááºá áá«á Grafana ááá¯áá±ážáááºá
áááºáá¬áá¬
ááá¯á¡áá« áááºážááẠáááºáá¬áá¬ááá¯á· áá±á¬ááºááŸááá±ááŒá®ááŒá áºáááºá Linux ááŒáá·áº áá¯á¶ááŸáẠvirtual machine áá áºáá¯ááᯠááŒáŸáá·áºáááºááŒá®áž áááºážááœáẠGrafana ááᯠááá¯ááºááá¯ááºááŒááºáááºááŒáá«á áá¯á·á
ssh ááŸáááá·áºáá»áááºáááºááŒá®áž ááá¯á¡ááºáá±á¬ packages áá»á¬ážááᯠááá·áºááœááºážááŒáá«á áá¯á·á
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
ááá¯á·áá±á¬áẠsystemctl á¡á±á¬ááºááœáẠGrafana ááᯠrun ááŒá®áž ClickHouse ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡ááœáẠplugin ááá¯ááá·áºááœááºážááŒáá«á áá¯á· (áá¯ááºáá²á·á áááºážááá¯á¡ááŒá±áá¶á¡áá¯ááºááœááºáááá·áºááœááºážáá«) á
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
áá«áá«áá²á ááá¯ážááŸááºážáá²á· command áá²á· ááŒá®ážááœá¬ážáá«ááŒá®á
sudo service grafana-server start
áááºáá¬áá¬ááᯠá
áááºáá«áááºá ááᯠáááºááẠááá±á¬ááºáá¬ááŸá virtual machine á ááŒááºá IP ááááºá
á¬ááᯠááá¯ááºááá·áºááá¯ááºááŒá®áž port 3000 ááᯠáááºááŸááºááŒá®áž ááŸááá±á¬ Grafana UI ááᯠááŒáá·áºááŸá¯ááá¯ááºáá«áááºá
ááá¯á·áá±á¬áº Grafana ááá¯ááááºááŸááºáá®á áááºáááºáá»á¬ážááá¯ááá¯áá±áá¬ááœááºááááºážáááºážáááºá¡ááœáẠMySQL ááá¯á·áááºážááŒá±á¬ááºážááá¯ááŒá±á¬ááŒáááºááá±á·áá«ááŸáá·áºá
Grafana áááºáá¬áá¬áááœá²á·á
ááºážáá¯á¶áá
áºáá¯áá¯á¶ážááẠááá¯ááºááœááºááŸááááºá /etc/grafana/grafana.ini
. ááá¯á¡ááºáá±á¬á
á¬ááŒá±á¬ááºážááẠá€áá²á·ááá¯á·ááŒá
áºáááº-
;url =
áá»áœááºá¯ááºááá¯á·ááẠhost ááᯠ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 á¡ááŒá ẠáááºááŸááºáá«áááºá
á¡á±á¬ááºáá«áááºáááºáá»á¬ážááŒáá·áº á¡áá¯ááºááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠáá»áœááºá¯ááºá¡á±á¬ááºááŒááºááá¯ááºáááº-
áá« URL á¡ááŒá
áºáááºááŸááºáá¬ážáááºá https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
á¡á¬ážáá¯á¶áž! áá»áœááºá¯ááºááá¯á·ááœáẠCH ááŸáá·áº MySQL ááŸáá·áº áá»áááºáááºáá¬ážáá±á¬ áááºáá¬áá¬áá áºáá¯ááŒáá·áº á¡áá¯ááºáá¯ááºáá±á¬ virtual machine áá áºáá¯ááŸááááºá áááºááẠáá±áá¬á¡á á¯á¶ááᯠClickHouse ááá¯á· á¡ááºáá¯ááºáá¯ááºááŒá®áž áááºááŸáºáá¯ááºáá»á¬áž áááºáá±á¬ááºááá¯ááºáá«ááŒá®á ááá¯á·áá±á¬áºáááºáž áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á áááºááŸááºážáá»ááºááᯠáá¡á±á¬ááºááŒááºáá±ážáá² ááŒáá·áºá á¯á¶áá±á¬ á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠááᯠá¡áá¯á¶ážáááŒá¯ááá±ážáá«á
Packer áá«
Yandex.Cloud ááẠááá·áºá¡á¬áž ááŸáááŒá®ážáá¬áž virtual machine áá
áºáá¯á áá
áºáá¯á¶áá
áºáá¯á¶ááᯠáááºáá®ážááá¯ááºá
á±ááŒá®áž áááºážáá¡ááŒá±áá¶áá±á«áºááœáẠ- áá
áºáá¯ááŸáá·áºáá
áºáᯠáá°áá®ááá·áº áááºááá·áºá
ááºá¡áá±á¡ááœááºááá¯áááᯠááŒá¯áá¯ááºááá¯ááºáááºá á€áááºááŸá¬ áá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯ááá·áºá¡áá¬ááŒá
áºáááºá áá¯á¶á¡á¬áž á¡áááºááŒá±á
áœá¬ á
á¯á
ááºážááẠáááááá¬ááᯠáá°áá«á
áá»áœááºá¯ááºááá¯á·á 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"
}
],
...
}
á€áá¯á¶á
á¶áááááºááœááºá áááºááẠáá¯ááºáá¯á¶áááºáá®ážááá¯ááá·áº cloud ááŸá ááá¹áá identifier ááᯠáááºááŸááºáááºááŸáá·áº á€ááá¹áááœáẠááááºá áááºáá®ážáá¬ážááá·áº áááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºá០áá±á¬á·áá»á¬ážááŒáá·áº ááá¯ááºáá®ááá¯á· áááºážááŒá±á¬ááºážááᯠáááºááŸááºááẠááá¯á¡ááºáááºá áááºááá¯ááºáá¬ááá¹áááŸá ááá¯ááºáá
áºáá¯áá¯á¶á
á¶ááŒáá·áº áááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºáá»á¬ážááŸáá·áº áá±á¬á·áá»á¬ážáááºáá®ážááŒááºážá¡ááŒá±á¬ááºáž ááá¯ááá¯áááºááŸá¯ááá¯ááºáá«áááºá
á€ááœá²á·á
ááºážáá¯á¶ááẠááááºáá±á¬ááºážáá±á«áºááœáẠá¡ááŒá±áá¶á áá
áºááºáá¯ááºáá¯á¶áááºáá±á¬ááºáááºáᯠááá¯áááºá ubuntu-1804-lts
áá¯á¶áááá¬ážá
á¯ááŸá ááá·áºáá»á±á¬áºáá±á¬ á¡áá¯á¶ážááŒá¯áá°ááá¹áááœáẠááá·áºááœááºážáá«á GRAFANA
áá¬áááºá¡á±á¬ááºááŸá¬ grafana-{{timestamp}}
.
á á®áá¶áá±ážáááºá
ááᯠconfiguration á ááá¯á áááºáááºá á¬ážá áá¬áá±á¬ááºážááá·áº á¡ááá¯ááºážááᯠáá¬áá«ááŒá®á áááºážááẠáááºážáá¡ááŒá±á¡áá±ááᯠáá áºááºáá¯ááºáá¯á¶á¡ááŒá Ạá¡á±ážáá²ááŒááºážáááŒá¯áá® virtual machine ááœáẠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºááá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á¡á á®á¡áá®ááᯠáá±á¬áºááŒáá«áááºá
{
...,
"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"
]
}
]
}
á€áá±áá¬ááœáẠáá¯ááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážááᯠá¡ááá·áº á ááá·áºááœá²áá¬ážáááºá áááá¡ááá·áºááœááºá auxiliary directory ááá¯áááºáá®ážáá±ážááá·áº ááá¯ážááŸááºážáá±á¬ script ááᯠexecute áá¯ááºáá«áááºá
ááŒááºáááº-ctg.sh-
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
áá±á¬ááºá¡ááá·áºááœááºá áá»áœááºá¯ááºááá¯á·ááẠvirtual machine ááá¯á áááºááŒá®ážáá±á¬ááºáá»ááºáá»ááºážá áááºáááºááá¯á¡ááºááá·áºá€áááºážááœáŸááºááœáẠscript áá áºáá¯áá¬ážááŸááá«áááºá ဠscript ááẠGrafana config ááœááºááŸááºáá¯á¶áááºáááºááá¯á¡ááºáá±á¬á¡áá¯á¶ážááŒá¯áá° variable áá»á¬ážááá¯ááá·áºááœááºážááŒá®ážáááºáá¬áá¬ááá¯ááŒááºáááºá áááºáááºááŒá áºáááºá
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
áá«ááŒá®ážááẠáá¯ááºá
áᬠá áá¯áá»ááºáá±ážáááº-
1) á¡áá¯ááºáá»á¬ážááᯠinstall áá¯ááºáá«á
2) systemctl á¡á±á¬ááºááœáẠGrafana ááᯠrun ááŒá®áž ClickHouse plugin ááᯠááá·áºááœááºážáá«á
3) virtual machine ááá¯ááœáá·áºááŒá®ážáá±á¬áẠsetup.sh script ááᯠlaunch áááºážá
á®ááœááºááá·áºáá«á
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 ááá¯áááºáááºáááºááŸáá·áºáááºááŸááºáá¬ážáá±á¬á¡ááá¯ááºážááœááºááá·áºáá¬ážáá±á¬ output image ááá¯ááá°áááºááŒá áºáááºá virtual machine áá áºáá¯ááᯠáááºáá®ážáá±á¬á¡áá«á áááºááẠáááºážááᯠboot disk á¡ááŒá Ạááœá±ážáá»ááºááá¯ááºááŒá®áž á áááºááŒá®ážáá±á¬ááºááœáẠá¡ááá·áºáá¯ááºáá¬ážáá±á¬ Grafana áááºáá¬áá¬ááᯠáááŸááááºááŒá áºáááºá
á¥ááᬠá¡á¯ááºá á¯ááŸáá·áº áá»áááºááœááºáá»áŸá¬
áá»áœááºá¯ááºááá¯á·ááœáẠá¡áá¬ážáá° Grafana áááºáá¬áá¬áá»á¬ážá áœá¬ááᯠáááºáá®ážááá¯ááºá á±ááá·áº áá áºáá¯á¶áá áºáá¯á¶ááŸááááºááŸáá·áºáá áºááŒáá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠá¥ááá¬á¡á¯ááºá á¯áá áºáá¯ááᯠáááºáá®ážááá¯ááºáááºá Yandex.Cloud ááááºáá±á¬ááºážááœááºá á€á¡áá¯á¶ážá¡ááŸá¯ááºážááẠáá°áá®áá±á¬áááá±áááá¹ááá¬áá»á¬ážááŸááá±á¬ virtual machines áá»á¬ážáááá¹áááᯠáááºááœáŸááºážáááºá áá¬ááá¡ááœá²á·ááᯠáááºáá®ážáá±á¬á¡áá«á á€á¡á¯ááºá á¯ááŸá á ááºá¡á¬ážáá¯á¶ážá ááŸá±á·ááŒá±ážáá¯á¶á á¶ááᯠá á®á ááºáááºááŸááºáá¬ážááŒá®ážá ááá¯á·áá±á¬áẠá¡á¯ááºá á¯ááá¯ááºááá¯ááºá áááá±áááá¹ááá¬áá»á¬áž (á¥ááá¬á á¡áááá·áºáá¯á¶ážááŸáá·áº á¡áá»á¬ážáá¯á¶áž áááºááŒáœááá·áº á ááºá¡áá±á¡ááœááº)á áááºááŸááá¶áá«ááºááẠá€áááºááŸááºáá»ááºáá»á¬ážááŸáá·áº áááá¯ááºáá®áá«áá á¥ááá¬á¡ááœá²á·ááá¯ááºááá¯ááºá áááá¯á¡ááºáá±á¬ á ááºáá»á¬ážááᯠáááºááŸá¬ážááẠááá¯á·ááá¯áẠáááºážáááá¯ááºááá¯ááºáá¯á¶ááœáẠá¡áá áºáá»á¬ážááᯠáááºáá®ážáááºááŒá áºáááºá
áá»áœááºá¯ááºááá¯á·ááá¯ááºáááºážáá¬áááºáá áºá áááºáá áºááá¯ááºážá¡áá±ááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠááááºáááºáá®ážáá¬ážáá±á¬ áá áºááºáá¯á¶á០áá¯ááºáá±ážááá·áº áááºáá¬áá¬áá»á¬ážá instance á¡á¯ááºá á¯áá áºáá¯ááᯠáááºáá®ážáá«áááºá
á¡ááŸááºáááẠááŸááºáá¬ážá áá¬ááŸá¬ áá±á¬ááºáá¯á¶áž áá¬áá á¡á¯ááºá ᯠáááºáááºááŒááºáž ááŒá áºáááºá Load Balancer ááŸáá·áº áá±á«ááºážá ááºážáá¬ážáá±á¬ áá áºááŸááºá¡á¯ááºá á¯ááẠááá¯ááºá¡áá»áá¯á·ááᯠááŸáááºááŒááºážááŒáá·áº á€á¡ááœá²á·á virtual machines áá»á¬ážááááºááŸá L3 balancer ááᯠá á®á ááºáááºááŸááºááẠááá·áºá¡á¬áž áá°áá®áá±ážáá«áááºá
áá»áááºááœááºáá»áŸá¬ááᯠá áá áºááá·áºááœááºážáá±á¬á¡áá«ááœááºá áá»áœááºá¯ááºááẠá¡áá±ážááŒá®ážáá±á¬ á¡áá»ááºááŸá áºáá»ááºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááº-
- áá»áœááºá¯ááºááẠáá»áááºááœááºáá»áŸá¬á¡á¬áž port 80 ááœáẠá¡áá¯á¶ážááŒá¯áá°á¡ááœá¬ážá¡áá¬ááá¯áááºáá¶ááŒá®áž Grafana áá±ááá¯ááºááá·áºáá±áá¬á¡ááá¡áá»ááŒá áºáá±á¬ virtual machines á port 3000 ááá¯á· ááŒááºááœáŸááºážáá¬ážáá«áááºá
- áá»áœááºá¯ááºááẠáááºážááá¯á·á¡á¬áž port 3000 ááá¯á· ping áá¯ááºááŒááºážááŒáá·áº á ááºáá»á¬ážá ááŸááºáááºááá¯ááºá áœááºážááᯠá á áºáá±ážááŒááºážá¡á¬áž á áá áºááá·áºááœááºážáá«áááºá
á¡áá»ááºážáá»á¯ááº
áá±á¬ááºáá¯á¶ážááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááá¯ááŸááá±á¬ á¡ááá®áá±ážááŸááºážá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠááá¯ááºááá¯ááºá¡áá¯á¶ážáá»ááá¯ááºáá²á·ááŒá®áž ááá¯á¡áá«ááœáẠáá»áœááºá¯ááºááá¯á·ááœáẠá¡ááœááºáá¶ááá¯ááºáááºááŸááá±á¬ Grafana áááºáá±á¬ááºááŸá¯áá áºáá¯ááŸááááºá áá±áá¬á¡á á¯á¶ááᯠáááºážááá¯á·áááºáááºá¡ááœáẠá¡ááá®áá±ážááŸááºážááŸáá·áº ClickHouse á¡á á¯á¡áá±ážá host ááá¯áááºáá±á¬ááºááá·áºá¡áá»ááºá¡áá±ááŒáá·áº Balancer á IP ááááºá á¬ááᯠáááááºááá¯á¡ááºáá«áááºá
á¡á±á¬ááºááœá²ááá¯á·áááºáááá¬áž? áá¯ááºáááºá á¡á±á¬ááºááœá²á áá«áá±ááá·áº áá áºáá¯áá¯áá±á¬á· ááŸá¯ááºáá±áá¯ááºážáá²á á¡áááºáá±á¬áºááŒáá« áá¯ááºáááºážá ááºáá áºáá¯áá¯á¶ážááẠááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºáááá·áº á¡ááá·áºáá»á¬ážá áœá¬ ááá¯á¡ááºááŒá®áž á¡ááá¯ááºážá¡áá¬áá áºáá¯á¡áááá±á¬á· ááááá¯ááºáá«á ááŒá áºááá¯ááºáá«á áááºážááᯠá¡ááá¯á¡áá»á±á¬ááºááŒá¯áá¯ááºááá¯áá«áááºá áá«á áá±á¬ááºá¡ááá¯ááºážááᯠáááºááŸááºážááœá¬ážáááºá
Terraform áá±á«ááºážá ááºááŸá¯
HashiCorp áá¯áá±á«áºáá±á¬ áááááá¬ááᯠáááºáá¶á¡áá¯á¶ážááŒá¯áá«áááºá
Terraform ááŸáá·áºáá¯ááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážááẠconfiguration file ááá¯áá±ážáá¬ážááŒááºážááŸáááºážáááºáá¬ááẠ(*.tf
) á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá»á¬áž áááºáá®ážáá±ážááŒááºážá
ááááºážááŸááºáá»á¬áž
ááá¯ááºáá¡á ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá¬áááºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáááºááá·áºáá±áá¬ááŸáá·áº áááºááá¯á·á¡áá¯á¶ážááŒá¯áááºááᯠáá¯á¶ážááŒááºááá·áº variable áá»á¬ážáá«ááŸááááºá
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>"
}
á¡ááá®áá±ážááŸááºáž ááŒáá·áºáá»ááºááŒááºáž áá¯ááºáááºážá ááºáá áºáá¯áá¯á¶ážááẠáá áºááºáá¯ááºáá¯á¶áááºáá±á¬ááºááŒááºážááŸáá·áº á€ááááºážááŸááºáá»á¬ážááᯠáááºááŸááºááŒááºážáá®ááá¯á· áááºážáááºáá¬áááºááŒá áºáááºá áá°ááá¯á·ááŸá¬ áá¬áááºááŸááááºááá¯áá¬ááᯠááŸááºážááŒáá«áá á±á
outh_token - cloud ááá¯á·áááºáá±á¬ááºááẠáááºá¹áá±ááá
áºáá¯á ááŒáá·áºááŸá¬áá°ááá¯ááºáá«áááºá
cloud_id â áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážááᯠá¡áá¯á¶ážááŒá¯ááá·áºáá±áá¬ááœáẠcloud identifier ááŒá
áºáááºá
folder_id â á¡ááá®áá±ážááŸááºážááᯠááŒáá·áºáá»ááºááá·áºáá±áᬠá¡ááá¯ááºáž á¡ááŸááºá¡áá¬áž
áááºáá±á¬ááºááŸá¯_á¡áá±á¬áá·áº_id â cloud ááááºááá¯ááºáá¬ááá¹áááŸááááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºá¡ááŸááºá¡áá¬ážá
image_id â Packer ááᯠá¡áá¯á¶ážááŒá¯á áááŸááá±á¬ áá
áºááºáá¯ááºáá¯á¶á á¡áá±á¬ááºá¡áá¬áž
á¡áá¯á¶ážááŒá¯áá°á¡ááẠО á
áá¬ážááŸááºááᯠâ áá±áá¬áá±á·á
áºáá»á¬ážááŸáá·áº Grafana áááºáá¬áá¬ááŸá
áºáá¯áá¯á¶ážááá¯áááºáá±á¬ááºááẠá¡áá¯á¶ážááŒá¯áá°á¡áááºááŸáá·áº á
áá¬ážááŸááº
dbname â CH ááŸáá·áº MySQL á¡á
á¯á¡áá±ážá¡ááœááºáž áá±áá¬áá±á·á
áºá¡áááº
public_key_path â á¡áááºá¡á±á¬ááºááœáẠáá»áááºáááºá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº áááºá á¡áá»á¬ážáá°ááŸá¬ ssh áá±á¬á·ááŒáá·áº ááá¯ááºáá®ááá¯á· áááºážááŒá±á¬ááºáž ubuntu
áááºáá¬áá¬áá»á¬ážáá«ááŸááá±á¬ virtual machines áá»á¬ážááá¯á·
áá¶á·ááá¯ážáá° á áá áºááá·áºááœááºážááŒááºážá
ááá¯ááẠTerraform áá¶á·ááá¯ážáá±ážáá°ááᯠconfigure áá¯ááºáááºááá¯á¡ááºááẠ- áá»áœááºá¯ááºááá¯á·áááá á¹á ááœááºá 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 ááá¯ááá ááá¯á¡ááºáá±á¬ááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶ááŒáá·áº áá
áºááºáá¯ááºáá¯á¶áá
áºáá¯á¶ááᯠá
á¯áá±á¬ááºážáá²á·ááŒá®ážá á¡á
á¯á¡áá±ážááá¯á· áááºáá¶áááºááŸááºáá±ážáá²á·áááºá ááá¯á·áá±á¬áº ááᯠáá¯á¶áááºáá±á¬ááºáá»áááºááœáẠá¡áá«á¡ááẠTerraform áá
áááºáá® á¡á
á¯ááá¯áẠID ááᯠáá»áœááºá¯ááºááá¯á· ááááá«á ááá¯á·ááŒá±á¬áá·áº á¡á±á¬ááºáá«ááá¯á·ááᯠá¡á¬ážááá¯ážááá·áºáá«áááºá
Amazon á áááºáá¬áá±áá¬áááºáá±á¬ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠáááºáá¶ááŒá®áž áá¯ááºáá±á¬ááºáá±ážááá·áº virtual machine ááá¯á· ááá·áºáááºáá»ááºá¡áá»áá¯á·ááᯠáá±ážááá¯á·áá«áááºá á
áááºááŒá®ážáá±á¬áẠTerraform ááá¯ááºááœáẠá¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážááá·áº MySQL á¡á
á¯á¡áá±ážááŸáá·áº á¡áá¯á¶ážááŒá¯áá°á¡áááº-á
áá¬ážááŸááºáá±á¬ááºááœááºááŸá áááºáá¬áá±áá¬ááá¯á· ááœá¬ážáááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠá
ááºááᯠááá¯á¡ááºáá«áááºá ááá¯ááºáá²á· á¡ááŒá±á¬ááºážá¡áá¬ááœá±ááᯠáááºážáááºážááŒá±á¬ááºážááŒáá·áºáá¡á±á¬áẠsetup.sh
virtual machine ááá¯ááœáá·áºáá±á¬á¡áá«ááœááºá¡áá¯ááºáá¯ááºáááºá
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"
}
}
áááºážááᯠáááºáá¬áá±áá¬ááá¯á· áá»áœááºá¯ááºááá¯á· áááºááá¯á·áá±ážááá¯á·áááºááᯠááá¯ááŒá¯ááá¯ááºáááºá cluster_uri
, username
О password
. áááºážááẠá
áááºáá»áááºááœáẠvirtual machine ááŸáá¯ááºáá°ááŒá®áž Grafana config ááœááºááá·áºááœááºážáááºááŒá
áºáááºá
áá»áááºááœááºáá»áŸá¬áá±á«áº áá°áááºáá«áááºá
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 ááᯠááá°ááẠááá¯á¡ááºáá±áá±ážáá±á¬ ID) ááᯠááá¯ááºááá¯ááºááá·áºááœááºážááááºááŒá áºáááºá ááá¯á·áá±á¬áº Terraform ááẠcluster ID ááá¯áááááºá áá®ááá á¹á ááᯠá¡áá±á¬áẠá¡áááºáá±á¬áºááá¯á· áá°á·ááᯠá¡ááºááŸá¶ááŒáá«á áá¯á·á
áááºáá±á¬ááºááŸá¯áá±ážáá°á¡áá áºááᯠáá±á«ááºážááá·áºááŒáá«á áá¯á· - Grafana ááŸáá·áº áááºáá»ááºáá®áá°á IP ááááºá á¬ááᯠáááºáá¶áá±á¬ááºááœááºáá±ážáá°á¡ááŒá Ạáá±ážááá¯ááºáá«á Terraform ááẠáááºážá Balancer ááŸáá¯á¶ážááŒááºááá·áºá ááºááœáẠMySQL ááœááºááŒá®ážááœá¬ážáááºááŒá áºááŒá®ážá ááá¯á·ááŒá±á¬áá·áºá¡ááŒá¬ážá ááºáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠTerraform ááŸááŒá¯áá¯ááºáá±á¬ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážá
provider "grafana" {
url = "http://${[for s in yandex_lb_network_load_balancer.grafana_balancer.listener: s.external_address_spec.0.address].0}"
auth = "${var.username}:${var.password}"
}
resource "grafana_data_source" "ch_data_source" {
type = "vertamedia-clickhouse-datasource"
name = "grafana"
url = "https://c-${yandex_mdb_clickhouse_cluster.ch_cluster.id}.rw.mdb.yandexcloud.net:8443"
basic_auth_enabled = "true"
basic_auth_username = var.username
basic_auth_password = var.password
is_default = "true"
access_mode = "proxy"
}
áá«ááá¯á·áá¶áááºááᯠááŒá®ážááŒáá¡á±á¬ááº
áááºáá»ááºáá®áá±á¬ IP ááááºá á¬ááŸáá·áº ClickHouse á¡á á¯á¡áá±ážá á¡áááºááŸááºááᯠááŒáááŒáá«á áá¯á·
output "grafana_balancer_ip_address" {
value = [for s in yandex_lb_network_load_balancer.grafana_balancer.listener: s.external_address_spec.0.address].0
}
output "clickhouse_cluster_host" {
value = "https://c-${yandex_mdb_clickhouse_cluster.ch_cluster.id}.rw.mdb.yandexcloud.net:8443"
}
ááŒá±ážááá¯ááºáááºá
á¡á¬ážáá¯á¶áž! áá»áœááºá¯ááºááá¯á·áááœá²á·á
ááºážáá¯á¶á
áá
áºááá¯ááºááẠá¡áááºááá·áºááŒá
áºáá±ááŒá®ááŒá
áºááŒá®áž áá»áœááºá¯ááºááá¯á·ááẠá¡áááºáá±á¬áºááŒáá«á¡áá¬á¡á¬ážáá¯á¶ážááᯠááŒáŸáá·áºáááºááẠTerraform á¡á¬áž ááááºážááŸááºáá»á¬ážááᯠáááºááŸááºááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·áá¯ááºááá¯ááºááẠá áá¯ááºáááºážá
ááºáá
áºáá¯áá¯á¶ážááẠáá»áœááºá¯ááºá¡á¬áž áá
áááá
áºááá·áº ááŒá¬áá«áááºá
á¡áá¯á¶ážááœáẠááŸááá±á¬ áááºáá±á·áá»áºááᯠáááºááœá±á·ááá¯ááºáááº-
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
ááŒá®ážáá±á¬á· cloud áá²ááŸá¬á ááŒáŸáá·áºáááºáá¬ážáá²á· á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá²á· á¡á áááºá¡ááá¯ááºážááœá±ááᯠááŒááºááá¯ááºáá«áááá·áºáááº-
á¡ááŸá áºáá»á¯ááºáááº
ááᯠGrafana ááᯠááá°áá¬á¡ááŒá Ạá¡áá¯á¶ážááŒá¯áá¬á áááºáá áºáŠážá á®ááẠYandex.Cloud ááááºáá±á¬ááºážáá±á«áºááœáẠáá»ááºáááºážáá±á¬ cloud áááºáá±á¬ááºááŸá¯ááŒáá·áº á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠá¡áá¯á¶ážáá»ááá¯ááºáááºá Packer ááŸáá·áº Terraform áá²á·ááá¯á·áá±á¬ HashiCorp á០á¡áá±á¬ááºá¡áá°ááŒá áºá á±áá±á¬ áááááá¬áá»á¬ážá ááá·áºá¡á¬áž á€á¡áá¬ááᯠáá°áá®áá±ážááá¯ááºáááºá áá®áá±á¬ááºážáá«ážáá±áž á¡áá¯á¶ážáááºáááºááá¯á· áá»áŸá±á¬áºááá·áºáá«ááẠ:)
PS á¡á±á¬ááºááœááºáá»áœááºá¯ááºáááºá€áá±á¬ááºážáá«ážááœááºáá»áœááºá¯ááºáá±ážáá¬ážáá±á¬á¡ááá¯ááºážá¡á áá»á¬ážá Packer ááŸáá·áº Terraform á¡ááœááºá¡áááºááá·áºáá¯ááºáá¬ážáá±á¬áá»ááºááŒá¯ááºáááºážáá»á¬ážááá¯áááºááŸá¬ááœá±á·ááá¯ááºááá·áº repository áááá·áºááºááᯠáá°ážááœá²áááºááŒáá«áááºá
source: www.habr.com