ื ืืืื ืืขืืขืจ! ืืื ืึท ืืืื ืคืื ืืืื ืงืืจืก ืึทืจืืขื, ืืื ืจืืกืขืจืืฉื ืื ืงืืืคึผืึทืืืืึทืืื ืคืื ืึทืืึท ืึท ืืื ืขืจ ืืืึธืืงื ืคึผืืึทืืคืึธืจืืข ืืื
ืืืึธืก ืืึธื ืืืจ ืืืืื ืฆื ืืึทืงืืืขื?
ื ืึธื ืืึธื ืืฉืื ื ืึท ืืืืจืืืึทื ืืึทืฉืื ืืื ืึท ืืืขื ืกืขืจืืืขืจ, ืืืจ ืงืขื ืขื ืืืื ืฆื ืืืื ืืึทืืขืืึธืก ืืื ืืึทืงืืืขื ืึท ืฉืืื ืื, ืกืคึผืขืฆืืคืืฆืืจื ืืึทืืึทืืืืกืื ืืื ืงืืืืื ืคึฟืึทืจ ืืืืึทืืขืจ ืึทืจืืขื, ืฉืึทืคึฟื ืืึทืฉืืึธืจืื ืืื ืืจืึทืคืก.
ืื ืืจืื ื ืืืขืจืกืืข ืืื ืึท ืืึทืืืืืืง ืฉืืขืจืื ื - ืขืก ืืื ืืืื ื ืืฉื ืฉืืื-ืืึธืืขืจืึทื ื. ืึทื ืืื, ืื ืืื ืฆืข ืคืึทื ืืงืฉืึทื ืึทืืืื ืคืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืขืคึผืขื ืืก ืืืืฃ ืื ืืืืืึทืืืืึทืื ืคืื ืืืื ืืืืจืืืึทื ืืึทืฉืื. ืืืื ืขืก ืึธืคึผืืึธืื ืึธืืขืจ 10 ืืขื ืืฉื ืขืคึฟืขื ืขื ืื ืื ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื, ืื ืคืจืืืืขืืขื ืืืขืื ืืืืคืฉืืืื.
ืืื ืงืขื ืขื ืืืื ืกืึทืืืื ืคืฉืื: ืืืจ ื ืึธืจ ืืึทืจืคึฟื ืฆื ... ืฆืขืืืืงืืขื ืคืืืข ืืืืขื ืืงืึทื ืืืืจืืืึทื ืืืฉืื ืขื ืืื ืึท ืืืขื ืกืขืจืืืขืจ ืืื ืฉืืขืื ืืื ืืื ืืขืจ ืึท ื 3 ืืึทืืึทื ืกืขืจ. ืืืขืจ ื ืืฉื ืืืขืก ืืื ืื ืืืื ืงืืืจ. ืืจืึทืคืึทื ืึท ืกืืึธืจื ืืึทื ืืฆืขืจ ืกืขืืืื ืืก (ืคึผืึทืืก ืฆื ืืึทืืึทืืืืกืื, ืืึทืฉืืึธืจืื, ืืจืึทืคืก, ืืื"ื ื) ืืืืึทื ืืืืฃ ืื ืืืกืง ืคืื ืืืื ืืืืจืืืึทื ืืึทืฉืื. ืืืื, ืืืื ืืืจ ืืืืฉื ืขืืืขืืข ืกืขืืืื ืืก ืืื ืื ืื, ืื ืขื ืืขืจืื ืืขื ืืืขื ืืืื ืฉืคืืืื ืืืืื ืืืืฃ ืื ืืืืจืืืึทื ืืึทืฉืื ืืื ืื ืืึทืืึทื ืกืขืจ ืืขืฉืืงื ืืื ืื. ืืึธืก ืืืขื ืคืืจื ืฆื ืกืชืืจื ืกืขืืืื ืืก ืคึฟืึทืจ ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื, ืงืึธืืื ื ืคึผืจืึธืืืขืืก ืืื ืงืึทืืขืจ ืืื ื ืืฆื.
ืืึธ ืื ืื ืืขืจ ืืึทืืึทืืืืก ืืืขื ืงืืืขื ืฆื ืจืึทืืขืืืขื, ืืืฉื, MySQL ืึธืืขืจ ืืืื ืขืงืืืืืืึทืืขื ื. ืืืจ ืืึธืื ืืจืึทืคืึทื ืึท ืึทื ืื ืืึธื ืงืจืึธื ืืึทื ืืฆืขืจ ืกืขืืืื ืืก ืืื ืืขื "ืกืคึผืขืจ" ืืึทืืึทืืืืก. ืืขืจื ืึธืืืขื, ืขืก ืืืขื ืืืื ืืขื ืื ืฆื ืกืคึผืขืฆืืคืืฆืืจื ืืขื ืืจื ืฆื ืืขื ืืึทืืึทืืืืก ืึทืืึธื ืืืืฃ ืืขืืขืจ ืืึทืฉืื, ืืื ืจืขืืึทืืืจื ืึทืืข ืื ืืขืจืข ืืึทื ืืฆืขืจ ืกืขืืืื ืืก ืืืืฃ ืงืืื ืคืื ืื ืืืืจืืืึทื ืืืฉืื ืขื; ืืื ืืืขืื ืคืึทืจืืจืืืืขืจื ืฆื ืื ืื ืืขืจืข.
ืืึธ ืืื ืึท ืืืึทืืจืึทืืข ืคืื โโืื ืืขืฆื ืึทืคึผืืึทืงืืืฉืึทื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ:
ืืืืืจ ืืื ืืขืจื ืขื ืืืืื ืืื ืื ืืขื ื
MySQL ืืื ClickHouse
ืืืืืขืจ ืืืคึผืืืืื ื ืึทืืึท ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืื ืื ืืื ืคืื ืึท ืงื ืขืคึผื, ืขืก ืืื ื ืืืืืง ืฆื ืืขืจื ืขื ืืื ืฆื ืืึทื ืืืขื ืืื ืืขืืขืจ ืคืื ืืืึทื ืงืึทืืคึผืึธืื ืึทื ืฅ ืืื ืืืกืฉืืืืขื ืืื ืืื ืืขืืขืจ ืื ืืขืจืขืจ.
ืืึธ ืืึทื ืืขืงืก.ืงืืึธืื ืืืขื ืืขืืคึฟื ืืื ืื, ืืืึธืก ืืื ื 3 ืืึทืืึทื ืกืขืจื, ืงืืืงืืึธืืกืข ืืื ืืืกืงื ืืื ืืขืจืืื ืืึทืืื ืื ืืก. ืืขืจ ืืึทื ืืฆืขืจ ื ืึธืจ ืืึทืจืฃ ืฆื ืกืคึผืขืฆืืคืืฆืืจื ืื ืคึผืึทืจืึทืืขืืขืจืก ืืื ืืืึทืจืื ืืื ืื ืคึผืืึทืืคืึธืจืืข ืืจืขื ืื ืึทืืฅ ืืื ืืจืืขืื ืกืืจ.
ืืื ืจืขืืืกืืจืืจื, ืืืฉืืคื ืึท ืืืึธืืงื ืืื ืึท ืฆืึธืืื ื ืืฉืืื. ื ืึธื ืืขื, ืืื ืืขืืื ืืขื ืฆื ืื ืืืึธืืงื ืืื ืฉืืขืื ืึทืจืืืฃ MySQL ืืื ClickHouse ืงืืึทืกืืขืจื ืืื ืืื ืืืึทื ืกืขืืืื ืืก. ืื ื ืื ื ืืขืฐืืจ ื ืื ื ื ืฒ ืฐืขืจ ื ืืขืืืง .
ืืืจ ืืืื ืืึทืจืคึฟื ืฆื ืืขืืขื ืงืขื ืฆื ืฉืึทืคึฟื ืึท ืืึทืืึทืืืืก ืืื ืืขืืขืจ ืงื ืืื ืืื ืงืึทื ืคืืืืขืจ ืึทืงืกืขืก ืฆื ืขืก ืืื ืึท ืืึธืืื ืืื ืคึผืึทืจืึธื. ืืื ืืืขื ื ืืฉื ืืืื ืืื ืืขืืึทืืืก ืืึธ - ืึทืืฅ ืืื ืืึทื ืฅ ืงืืึธืจ ืืื ืืขืจ ืืึธื ืืื ืื ืฆืืืื ื.
ืื ื ืื ืงืืึธืจ ืืื ืืขืจ ืืึธื ืืขืืึทื ืืื ืืขืืืขื ืึทื ืื ืืึทืืึทืืืืกืื ืืึธืื ืคืืืข ืืื ืืช, ืืืึธืก ืขื ืฉืืจ ืืืืขืจ ืฉืืื ืืึธืืขืจืึทื ืฅ. ืึธืืขืจ, Grafana ืจืืงืืืืืขืจื ืคึผืื ืงื ืืืื ืืึทืืขืืึธืก ืคึฟืึทืจ ืืขืืขืจ ืืึทืืึทืืืืก ืขืก ืึทืจืืขื ืืื. ืืื ื ืืืืขื ืขื c-<cluster_id>.rw.mdb.yandexcloud.net
ืืึทืคึผื ืฆื ืื ืงืจืึทื ื ืึทืงืืืื ืืขื ืืึทืืขืืึธืก ืคืื ืืขื ืงื ืืื ืืื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืฉืืึทื. ืืึธืก ืืื ืืืึธืก ืืืจ ืืืขืื ืืขืื ืฆื ืืจืึทืคืึทื ืึท.
ืืืขื ืกืขืจืืืขืจ
ืืืฆื ืขืก ืืื ืึทืจืืืฃ ืฆื ืื ืืืขื ืกืขืจืืืขืจ. ืืึธืืืจ ืืึทืคึผื ืึท ืจืขืืืืขืจ ืืืืจืืืึทื ืืึทืฉืื ืืื ืืื ืืงืก ืืื ืืึทื ืืืึทืื ืงืึทื ืคืืืืขืจ 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 ืื.
ืึธืืขืจ ืืึธื ื ืื ืงืึทืืืฉ, ืืืืืขืจ ืืึทืฉืืขืืืงื 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 ืืื ืึท ืืึทืืึทืกืึธืืจืกืข.
ืืื ืืื ืืขืืืขื ืืืืืืช ืฆื ืืขืจืืจืืืื ืึท ืืจืืขืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืื ืคืืืืขื ืืข ืกืขืืืื ืืก:
ืืื ืกืคึผืขืฆืืคืืฆืืจื ืืื ืื URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
ืึทืืข! ืืืจ ืืึธืื ืืืื ืืจืืขืื ืืืืจืืืึทื ืืึทืฉืื ืืื ืึท ืืืขื ืกืขืจืืืขืจ ืคืืจืืื ืื ืฆื CH ืืื MySQL. ืืืจ ืงืขื ื ืฉืืื ืฆืืคึฟืขืืืงืขืจ ืื ืืึทืืึทืกืขื ืฆื ClickHouse ืืื ืืืืขื ืืึทืฉืืึธืจืื. ืึธืืขืจ, ืืืจ ืืึธืื ื ืึธื ื ืืฉื ืืขืจืืจืืืื ืืื ืืืขืจ ืฆืื ืืื ืืึธืื ื ืืฉื ืืืคึผืืืื ืึท ืคืื-ืคืืขืืืฉื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ.
ืคึผืึทืงืขืจ
Yandex.Cloud ืึทืืึทืื ืืืจ ืฆื ืฉืึทืคึฟื ืึท ืืืกืง ืืืื ืคืื ืึท ืืืืืกืืื ื ืืืืจืืืึทื ืืึทืฉืื, ืืื ืืืืฃ ืืืึทื ืืงืขืจ - ืงืืื ื ืืืขืจ ืคืื ืืืฉืื ืขื ืืืืขื ืืงืึทื ืฆื ืืขืืขืจ ืื ืืขืจืขืจ. ืืึธืก ืืื ืคึผืื ืงื ืืืึธืก ืืืจ ืืืขืื ื ืืฆื. ืฆื ืงืึทื ืืืื ืืึทื ืืื ืึทืกืขืืืึทื ืื ืืืื, ื ืขืืขื ืื ืืขืฆืืึทื
ืืื ืืืขืจ ืืืฉืกืึธื ืืขืงืข ืืืขื ืฆืื ืืืคืฉืืขืื ืืื ืคืื ืฆืืืื ืืืึทืงืก: ืืืืืขืจื ืืื ืคึผืจืึทืืืืืฉืึทื ื. ืืขืจ ืขืจืฉืืขืจ ืืืึธืง ืืืฉืจืืืื ืื ืคึผืึทืจืึทืืขืืขืจืก ืคืื ืื ืืืื ืืื ืืื ืึท ืขื ืืืื, ืืื ืื ืจืืข ืืืึธืง ืืืฉืจืืืื ืื ืกืืจืึทืงืฉืึทื ื ืคึฟืึทืจ ืคืืืื ื ืขืก ืืื ืื ื ืืืืืง ืืื ืืึทืื.
ืืืืืืขืจืก
{
"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 ืคึผืืึทืืคืึธืจืืข, ืืขื ืืขืจืืื ืจืขืคืขืจืก ืฆื ืืขืจ ืคืึทืจืืึทื ื ืคืื ืืืืจืืืึทื ืืืฉืื ืขื ืืืึธืก ืืึธืื ืื ืืขืืืข ืงืขืจืึทืงืืขืจืืกืืืงืก. ืืืขื ืฉืึทืคึฟื ืึท ืืืึทืฉืคึผืื ืืจืืคึผืข, ืื ืคึผืจืึธืืืึทืืืืคึผ ืคืื ืึทืืข ืืืฉืื ืขื ืืื ืืขื ืืจืืคึผืข ืืื ืงืึทื ืคืืืืขืจื, ืืื ืืขืืึธืื ืื ืงืขืจืึทืงืืขืจืืกืืืงืก ืคืื ืื ืืจืืคึผืข ืืื (ืืืฉื, ืื ืืื ืืืื ืืื ืืึทืงืกืืืื ื ืืืขืจ ืคืื ืึทืงืืืื ืืืฉืื ืขื). ืืืื ืื ืงืจืึทื ื ื ืืืขืจ ืืื ื ืืฉื ืืจืขืคื ืื ืงืจืืืืืจืืึท, ืืขืจ ืืืึทืฉืคึผืื ืืจืืคึผืข ืืื ืืืขื ืืึทืืืึทืืืงื ืืื ืืืืืง ืืืฉืื ืขื ืึธืืขืจ ืฉืึทืคึฟื ื ืืึทืข ืืื ืืืื ืืืื.
ืืื ืึท ืืืื ืคืื ืืื ืืืขืจ ืึทืจืืขื, ืืืจ ืืืขืื ืฉืึทืคึฟื ืึท ืืืึทืฉืคึผืื ืืจืืคึผืข ืคืื โโืืืขื ืกืขืจืืืขืจืก ืืืึธืก ืืืขื ืืืื ืืืฉืขื ืขืจืืืืึทื ืคึฟืื ืื ืคืจืืขืจ ืืืฉืืคื ืืืกืง ืืืื.
ืืืึธืก ืืื ืืืืช ืืขืจืงืืืืจืืืง ืืื ืื ืกืขืืึทืคึผ ืคืื ืื ืืขืฆืืข ืืืึทืฉืคึผืื ืืจืืคึผืข. ืื ืฆืื ืืจืืคึผืข ืืื ืื ืึทืืจืืืฉืึทื ืืื ืืึธืื ืืึทืืึทื ืกืขืจ ืืืขื ืืขืืคึฟื ืืืจ ืฆื ืงืึทื ืคืืืืขืจ ืึท ื 3 ืืึทืืึทื ืกืขืจ ืืืืฃ ืฉืคึผืืฅ ืคืื ืื ืืืืจืืืึทื ืืืฉืื ืขื ืคืื ืืขื ืืจืืคึผืข ืืืจื ืืขืื ืึท ืงืืืง ืึท ืคึผืึธืจ ืคืื ืงื ืขืคึผืืขื.
ืืืขื ืืื ืฉืืขืื ืึทืจืืืฃ ืื ืืึทืืึทื ืกืขืจ, ืืื ืืืคึผืืึทืืขื ืึทื ืฆืืืื ืืืืืืืง ืคืื ืงืื:
- ืืื ืืขืืืื ืื ืืึทืืึทื ืกืขืจ ืึธื ื ืขืืขื ืืึทื ืืฆืขืจ ืคืึทืจืงืขืจ ืืืืฃ ืคึผืึธืจื 80 ืืื ืจืืืขืจืขืงื ืขืก ืฆื ืคึผืึธืจื 3000 ืคืื ืื ืืืืจืืืึทื ืืืฉืื ืขื, ืคึผืื ืงื ืืื Grafana ืืขืื.
- ืืื ืฉืืขืื ืึทืจืืืฃ ืงืึธื ืืจืึธืืืจืื ื ืื ืืืืืึทืืืืึทืื ืคืื ืืืฉืื ืขื ืืืจื ืคึผืื ื ืืื ืฆื ืคึผืึธืจื 3000.
ืืื ื ืงืืฆืขืจ
ืฆืื ืกืืฃ, ืืืจ ืืขื ืขื ืืืืืืช ืฆื ืืึทื ืืืึทืื ืฆืขืืืืงืืขื ืื ืืขืืขืื ืึทืคึผืืึทืงืืืฉืึทื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ, ืืื ืืืฆื ืืืจ ืืึธืื ืึท ืืขืืกื ืจืืืืืืึทื ื ืืจืึทืคืึทื ืึท ืืื ืกื. ืืืจ ื ืึธืจ ืืึทืจืคึฟื ืฆื ืืืืกื ืื IP ืึทืืจืขืก ืคืื ืื ืืึทืืึทื ืกืขืจ ืืื ืื ืคึผืึธืืืฆืืข ืคืื ื ืฆื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืขืจ ืืึทืืขืืึธืก ืคืื ืื ืงืืืงืืึธืืกืข ืงื ืืื ืืื ืกืืจ ืฆื ืืึทืกืข ืื ืืึทืืึทืกืขื ืืื ืขืก.
ืขืก ืืืึธืื ืืืกืงืืืขื ืืื ืึท ื ืฆืืื? ืื, ื ืฆืืื. ืึธืืขืจ ืขืคึผืขืก ืฆืขืืืืื ืืืจ ื ืึธื. ืืขืจ ืืื ืฆืขืจ ืคึผืจืึธืฆืขืก ืืืืื ืจืืงืืืืืขืจื ืึท ืคึผืืึทืฅ ืคืื ืืึทื ืืึทื ืกืืขืคึผืก ืืื ืืื ื ืืฉื ืกืงืึทืืึทืืืข ืืืึท ืึทืืข; ืืื ืืืึธืื ืืื ืฆื ืึธืืึทืืืื ืขืก ืืืื ืืขืืืขื. ืืึธืก ืืื ืืืึธืก ืืขืจ ืืืืึทืืขืจ ืึธืคึผืืืืืื ื ืืืขื ืืืื ืืขืืืืืืขื.
ืืขืจืจืึทืคืึธืจื ืื ืึทืืจืืืฉืึทื
ืืืจ ืืืขืื ืืืืืขืจ ื ืืฆื ืึท ืืขืฆืืึทื ืคืื HashiCorp ืืขืจืืคึฟื
ืึทืืข ืึทืจืืขื ืืื Terraform ืงืืื ืึทืจืึธืคึผ ืฆื ืฉืจืืืื ืึท ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข (*.tf
) ืืื ืื ืฉืึทืคืื ื ืคืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืืืืจื ืืืืฃ ืขืก.
ืืืขืจืืึทืืึทืื
ืืื ืื ืึธื ืืืื ืคืื ืืขืจ ืืขืงืข, ืืืจ ืืืขืื ืึทืจืืึทื ื ืขืืขื ืืืขืจืืึทืืึทืื ืืืึธืก ืืึทืฉืืืกื ืืื ืืื ืืื ืื ืฆืืงืื ืคึฟื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืืขื ืืืื ืืืคึผืืืื.
variable "oauth_token" {
type = string
default = "<oauth-token>"
}
variable "cloud_id" {
type = string
default = "<cloud-id>"
}
variable "folder_id" {
type = string
default = "<folder_id>"
}
variable "service_account_id" {
type = string
default = "<service_account_id>"
}
variable "image_id" {
type = string
default = "<image_id>"
}
variable "username" {
type = string
default = "<username>"
}
variable "password" {
type = string
default = "<password>"
}
variable "dbname" {
type = string
default = "<dbname>"
}
variable "public_key_path" {
type = string
default = "<path to ssh public key>"
}
ืื ืืื ืฆืข ืึทืคึผืืึทืงืืืฉืึทื ืืืคึผืืืืืึทื ื ืคึผืจืึธืฆืขืก ืืืขื ืงืืืขื ืึทืจืึธืคึผ ืฆื ืืืืขื ืึท ืืืกืง ืืืื ืืื ืืึทืฉืืขืืืงื ืื ืืืขืจืืึทืืึทืื. ืืึธืื ืืืจ ืืขืจืงืืขืจื ืืืึธืก ืืื ืืขื ืขื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ:
oauth_token - ืึท ืกืืืขื ืคึฟืึทืจ ืึทืงืกืขืก ืื ืืืึธืืงื. ืงืขื ืขื ืืืื ืืืงืืืขื ืืืจื
cloud_id - ืืืึธืืงื ืืืขื ืืืคืืขืจ ืืื ืืืจ ืืืขืื ืฆืขืืืืงืืขื ืื ืึทืคึผืืึทืงืืืฉืึทื
folder_id - ืึธืคึผืืืืืื ื ืืืขื ืืืคืืขืจ ืืื ืืืจ ืืืขืื ืฆืขืืืืงืืขื ืื ืึทืคึผืืึทืงืืืฉืึทื
service_account_id - ืกืขืจืืืืก ืืฉืืื ืืืืขื ืืืคืืฆืืจื ืืื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืึธืคึผืืืืืื ื ืคืื ืื ืืืึธืืงื.
ืืืื_ืื - ืืืืขื ืืืคึฟืืฆืืจืื ื ืคืื ืื ืืืกืง ืืืื ืืืงืืืขื ืืื ืคึผืึทืงืงืขืจ
ื ืืืขื ะธ ืคึผืึทืจืึธื - ื ืืืขื ืืื ืคึผืึทืจืึธื ืฆื ืึทืงืกืขืก ืืืืืข ืืึทืืึทืืืืกืื ืืื ืื 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
ืืื ืืื ืื ืืืึธืืงื, ืขืืขืืขื ืื ืคืื ืืขืจ ืืืืคืฉืืืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืืขื ืืืื ืงืขื ืืืง:
ืกืึทืืึทืงื ืึทืจืืืฃ
ืืืฆื, ื ืืฆื Grafana ืืื ืึท ืืืึทืฉืคึผืื, ืืขืืขืจ ืคืื ืืืจ ืงืขื ืขื ืฆืขืืืืงืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืืื ืึท ืกืคึผืจืึธืืื ื ืืืึธืืงื ืึทืจืงืึทืืขืงืืฉืขืจ ืืืืฃ ืื Yandex.Cloud ืคึผืืึทืืคืึธืจืืข. ื ืืฆืืง ืืืฉืืจืื ืคืื HashiCorp ืืื Packer ืืื Terraform ืงืขื ืขื ืืขืืคึฟื ืืืจ ืืื ืืขื. ืืื ืืึธืคึฟื ืึทื ืขืืขืฆืขืจ ืืขืคึฟืื ืขื ืืขื ืึทืจืืืงื ื ืืฆืืง :)
ืคึผืก ืื ืืขืจ ืืื ืืืขื ืฆืืืฉืขืคึผืขื ืึท ืืื ืง ืฆื ืื ืจืืคึผืึทืืึทืืึธืจื ืืื ืืืจ ืงืขื ืขื ืืขืคึฟืื ืขื ืคืึทืจืืืง ืจืขืกืึทืคึผืื ืคึฟืึทืจ ืคึผืึทืงืงืขืจ ืืื ืืขืจืจืึทืคืึธืจื, ืคืจืึทืืืึทื ืฅ ืคืื ืืืึธืก ืืื ืฆืืืขืฉืืขืื ืืื ืืขื ืึทืจืืืงื.
ืืงืืจ: www.habr.com