Sanibonani nonke! Njengengxenye yomsebenzi wami wesifundo, ngacwaninga amakhono enkundla yamafu yasekhaya njenge
Yini ofuna ukuyithola?
Ngemva kokwethula umshini obonakalayo oneseva yewebhu, ungaya kumsingathi wawo futhi uthole i-UI enhle, ucacise imininingwane yolwazi njengemithombo yomsebenzi owengeziwe, udale amadeshibhodi namagrafu.
Inguqulo eyisisekelo ine-drawback eyodwa ebalulekile - ayiwabekezeli nhlobo amaphutha. Okusho ukuthi, konke ukusebenza kohlelo lokusebenza kuncike ekusebenzeni komshini owodwa we-virtual. Uma yenqaba noma abantu abangu-10 bavula i-UI ngesikhathi esifanayo, kuzovela izinkinga.
Angaxazululwa kalula: udinga nje... ukhiphe imishini eminingi efana neseva yewebhu futhi uyibeke ngaphansi kwesilinganisi se-L3. Kodwa akuzona zonke izinto ezicacile lapha. I-Grafana igcina izilungiselelo zabasebenzisi (izindlela eziya kusizindalwazi, amadeshibhodi, amagrafu, njll.) ngokuqondile kudiski yomshini wayo obonakalayo. Ngakho, uma sishintsha ezinye izilungiselelo ku-UI, lezi zinguquko zizobonakala kuphela emshinini obonakalayo lapho ubhalansi esithumele khona. Lokhu kuzoholela kuzilungiselelo ezingahambisani zohlelo lwethu lokusebenza, okubangela izinkinga ngokuqaliswa nokusetshenziswa.
Lapha enye i-database izosiza, isibonelo, i-MySQL noma okufana nayo. Sitshela u-Grafana ukuthi kufanele agcine izilungiselelo zabasebenzisi kulesi sizindalwazi "esisele". Ngemva kwalokho, kuyokwanela ukucacisa indlela eya kulesi sizindalwazi kanye emshinini ngamunye, futhi uhlele zonke ezinye izilungiselelo zabasebenzisi kunoma yimuphi umshini we-virtual; zizodlulela kweminye.
Nawu umdwebo wengqalasizinda yokugcina yesicelo:
Masifunde ukuphakamisa ngezandla zethu
I-MySQL ne-ClickHouse
Ngaphambi kokufaka isicelo esinjalo ngokuchofoza inkinobho, kwakudingeka ufunde ukuthi ungayiphatha kanjani ingxenye yayo ngayinye futhi uyihlanganise nomunye nomunye.
Lapha i-Yandex.Cloud izosisiza, ehlinzeka ngezilinganiso ze-L3, i-ClickHouse ne-MySQL njengezinsizakalo eziphethwe. Umsebenzisi udinga kuphela ukucacisa amapharamitha futhi alinde kuze kube yilapho inkundla iletha yonke into ngohlelo lokusebenza.
Ngibhalisile, ngakha ifu kanye ne-akhawunti yokukhokha. Ngemuva kwalokho, ngaya efwini futhi ngamisa amaqoqo e-MySQL kanye ne-ClickHouse anezilungiselelo ezincane. Ngalinda baze baqala ukusebenza.
Udinga futhi ukukhumbula ukwakha isizindalwazi kuqoqo ngalinye futhi ulungiselele ukufinyelela kuso usebenzisa ukungena ngemvume nephasiwedi. Ngeke ngingene emininingwaneni lapha - yonke into isobala esibonakalayo.
Imininingwane engacacile ukuthi lezi zingosi zolwazi zinabasingathi abaningi, okuqinisekisa ukubekezelelana kwabo kwamaphutha. Nokho, i-Grafana idinga umsingathi oyedwa ncamashi kusizindalwazi ngasinye esebenza ngaso. Ukufunda isikhathi eside c-<cluster_id>.rw.mdb.yandexcloud.net
imephuzwe kumsingathi oyinhloko osebenzayo weqoqo nge-ID ehambisanayo. Yilokhu esizokunikeza uGrafana.
iseva yewebhu
Manje kukuseva yewebhu. Masiphakamise umshini ojwayelekile obonakalayo nge-Linux futhi silungiselele i-Grafana kuwo.
Masixhume nge-ssh futhi sifake amaphakheji adingekayo.
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
Ngemuva kwalokho, masisebenzise i-Grafana ngaphansi kwe-systemctl bese sifaka i-plugin yokusebenza nge-ClickHouse (yebo, ayinikeziwe kuphakheji eyisisekelo).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Yilokho, ngemva kwalokho ngomyalo olula
sudo service grafana-server start
sizoqala iseva yewebhu. Manje usungakwazi ukufaka ikheli le-IP langaphandle lomshini we-virtual esipheqululini, ucacise i-port 3000 futhi ubone i-Grafana UI enhle.
Kodwa ungajahi, ngaphambi kokusetha i-Grafana, kufanele ukhumbule ukuyitshela indlela eya ku-MySQL ukuze ugcine izilungiselelo lapho.
Konke ukucushwa kweseva yewebhu ye-Grafana kufayela /etc/grafana/grafana.ini
. Umugqa odingekayo ubukeka kanje:
;url =
Setha umsingathi kuqoqo le-MySQL. Ifayela elifanayo liqukethe ukungena ngemvume nephasiwedi yokufinyelela i-Grafana esithombeni esingenhla, okuthi ngokuzenzakalelayo kokubili kuyalingana admin
.
Ungasebenzisa imiyalo ye-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
Isikhathi sokuqala kabusha iseva yewebhu!
sudo service grafana-server restart
Manje ku-UI ye-Grafana sizocacisa i-ClickHouse njenge-DataSource.
Ngikwazile ukufeza ukucushwa kokusebenza ngezilungiselelo ezilandelayo:
Ngicacise njenge-URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Konke! Sinomshini owodwa osebenzayo oneseva yewebhu exhunywe ku-CH kanye ne-MySQL. Ungakwazi kakade ukulayisha idathasethi ku-ClickHouse futhi wakhe amadeshibhodi. Nokho, asikayifezi inhloso yethu futhi asikazifaki ingqalasizinda ephelele.
I-Packer
I-Yandex.Cloud ikuvumela ukuthi udale isithombe sediski somshini okhona, futhi ngesisekelo sawo - noma iyiphi inombolo yemishini efanayo komunye nomunye. Yilokhu kanye esizokusebenzisa. Ukuze uhlanganise kahle isithombe, thatha ithuluzi
Ifayela lethu le-json lizoba namabhulokhi amabili: abakhi nabahlinzeki. Ibhulokhi yokuqala ichaza imingcele yesithombe ngokwaso njengebhizinisi, futhi ibhulokhi yesibili ichaza imiyalelo yokuyigcwalisa ngokuqukethwe okudingekayo.
Abakhi
{
"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"
}
],
...
}
Kulesi sifanekiso, udinga ukusetha isihlonzi sesigaba efwini lapho ufuna ukudala khona isithombe, kanye nendlela eya efayelini enokhiye abavela ku-akhawunti yesevisi eyakhiwe ngaphambilini kulesi sigaba. Ungafunda kabanzi mayelana nokudala ama-akhawunti wesevisi nokhiye ngendlela yefayela esigabeni esihambisanayo
Lokhu kulungiselelwa kuthi isithombe sediski sizokwakhiwa ngokusekelwe endaweni yesikhulumi ubuntu-1804-lts
, ibekwe esigabeni esifanelekile somsebenzisi emndenini wesithombe GRAFANA
ngaphansi kwegama grafana-{{timestamp}}
.
Abahlinzeki
Manje kufika ingxenye ethakazelisa kakhulu yokucushwa. Izochaza ukulandelana kwezenzo okuzodingeka zenziwe emshinini obonakalayo ngaphambi kokuqandisa isimo sawo kusithombe sediski.
{
...,
"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"
]
}
]
}
Lapha zonke izenzo zihlukaniswe ngezigaba ezi-3. Esigabeni sokuqala, iskripthi esilula senziwa esidala uhla lwemibhalo olusizayo.
prepare-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Esigabeni esilandelayo, sibeka umbhalo kulolu hlu lwemibhalo, oluzodinga ukwethulwa ngokushesha ngemva kokuqala umshini obonakalayo. Lesi script sizobeka okuguquguqukayo komsebenzisi okudingeka ukuthi kubhaliswe ku-Grafana config futhi siqale kabusha iseva yewebhu.
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
Ngemva kwalokhu kunezinto ezi-3 ezisele okufanele zenziwe:
1) faka amaphakheji
2) sebenzisa i-Grafana ngaphansi kwe-systemctl bese ufaka i-plugin ye-ClickHouse
3) faka umbhalo we-setup.sh emgqeni wokuqalisa ngokushesha ngemva kokuvula umshini obonakalayo.
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;
Manje okusele ukusebenzisa i-Packer futhi uthole isithombe esiphumayo sibekwe esigabeni esishiwo. Lapho udala umshini obonakalayo, ungawukhetha njengediski yokuqalisa futhi ngemva kokwethulwa uzothola iseva yewebhu ye-Grafana esenziwe ngomumo.
Iqembu lesibonelo nebhalansi
Uma sinesithombe sediski esisivumela ukuthi sakhe amaseva amaningi ewebhu e-Grafana, singakha iqembu lesibonelo. Kuplathifomu ye-Yandex.Cloud, leli gama lisho inyunyana yemishini ebonakalayo enezici ezifanayo. Lapho udala iqembu lesibonelo, i-prototype yayo yonke imishini kuleli qembu iyalungiswa, bese kuba izici zeqembu ngokwalo (isibonelo, inani elincane neliphezulu lemishini esebenzayo). Uma inombolo yamanje ingahlangabezani nalezi zindlela zokunquma, iqembu lesibonelo ngokwalo lizosusa imishini engadingekile noma lidale emisha ngomfanekiso walo.
Njengengxenye yomsebenzi wethu, sizodala iqembu lesibonelo lamaseva ewebhu azokhiqizwa kusukela kusithombe sediski esakhiwe ngaphambilini.
Okuphawuleka ngempela ukusethwa kweqembu okuyisibonelo sokugcina. Iqembu eliqondiwe ekuhlanganisweni ne-Load Balancer lizokusiza ukuthi ulungiselele isilinganisi se-L3 phezu kwemishini ebonakalayo yaleli qembu ngokuchofoza izinkinobho ezimbalwa.
Lapho ngimisa i-balancer, ngisebenzise amaphuzu amabili abalulekile:
- Ngenze ibhalansi yamukele ithrafikhi yomsebenzisi ku-port 80 futhi ngiyiqondise kabusha ku-port 3000 yemishini ebonakalayo, lapho u-Grafana ehlala khona.
- Ngimise ukuhlola ukusebenza kwemishini ngokuyifakela ku-port 3000.
Isifinyezo esincane
Ekugcineni, sikwazile ukusebenzisa ingqalasizinda yesicelo esiyifunayo, futhi manje sinesevisi yase-Grafana ekwazi ukumelana nokuqina. Udinga kuphela ukwazi ikheli le-IP lebhalansi njengendawo yokungena kuhlelo lokusebenza kanye nomsingathi weqoqo le-ClickHouse ukuze ulayishe idathasethi kulo.
Kungabonakala njengokunqoba? Yebo, ukunqoba. Kodwa kukhona okusangididayo. Yonke le nqubo engenhla idinga izinyathelo eziningi ezenziwa ngesandla futhi ayinabungozi nakancane; ngingathanda ukuyenza ngokuzenzakalelayo uma kungenzeka. Yilokhu okuzonikezwa isigaba esilandelayo.
Ukuhlanganiswa kwe-Terraform
Sizophinda sisebenzise ithuluzi elivela ku-HashiCorp elibizwa
Wonke umsebenzi ngeTerraform wehlela ekubhaleni ifayela lokucushwa (*.tf
) kanye nokwakhiwa kwengqalasizinda okusekelwe kuyo.
Okuguquguqukayo
Ekuqaleni kwefayela, sizofaka okuguquguqukayo okunquma ukuthi ingqalasizinda yesikhathi esizayo izosetshenziswa kuphi futhi kanjani.
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>"
}
Yonke inqubo yokuphakelwa kwesicelo izokwehla ekwakheni isithombe sediski kanye nokusetha lokhu okuguquguqukayo. Ake ngichaze ukuthi banesibopho ngani:
uphawu_lwesifungo — uphawu lokufinyelela efwini. Ingatholwa ngu
cloud_id - isihlonzi samafu lapho sizothumela khona uhlelo lokusebenza
ifolda_id - isihlonzi sesigaba lapho sizothumela khona isicelo
service_account_id — Inkomba ye-akhawunti yesevisi engxenyeni ehambisanayo yefu.
image_id — inkomba yesithombe sediski etholwe kusetshenziswa iPacker
igama lomsebenzisi и iphasiwedi — igama lomsebenzisi nephasiwedi ukufinyelela kuzo zombili izingosi zolwazi kanye neseva yewebhu ye-Grafana
dbname - Igama lesizindalwazi ngaphakathi kwamaqoqo e-CH kanye ne-MySQL
indlela_yokhiye_womphakathi — indlela eya efayelini ngokhiye wakho we-ssh womphakathi, ongawusebenzisa ukuxhuma ngaphansi kwegama ubuntu
emishinini ebonakalayo enamaseva ewebhu
Ukusethwa komhlinzeki
Manje udinga ukumisa umhlinzeki we-Terraform - kithi, i-Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Uzoqaphela ukuthi lapha sisebenzisa okuguquguqukayo okuchazwe ngenhla.
Inethiwekhi namaqoqo
Manje sizokwakha inethiwekhi lapho izici zengqalasizinda yethu zizoxhumana khona, ama-subnets amathathu (elilodwa esifundeni ngasinye) futhi sikhulise amaqoqo e-CH kanye ne-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
}
}
Njengoba ubona, iqoqo ngalinye kulawa amabili lidalwe likwazi ukubekezelela iphutha ngokutholakala ezindaweni ezintathu ezitholakalayo.
Amaseva ewebhu
Kubukeka sengathi singaqhubeka ngomoya ofanayo, kodwa ngangena ebunzimeni. Ngaphambi kwalokhu, ngiqale ngaphakamisa iqoqo le-MySQL futhi ngemva kwalokho kuphela, ngokwazi i-ID yayo, ngaqoqa isithombe sediski ngokucushwa okudingekayo, lapho ngachaza khona umsingathi kuqoqo. Kodwa manje asiyazi i-ID yeqoqo ngaphambi kokwethula i-Terraform, kuhlanganise nesikhathi sokwakha isithombe. Ngakho-ke, kwadingeka ngisebenzise okulandelayo
Ngokusebenzisa isevisi yemethadatha ye-Amazon, sizodlulisela imingcele ethile emshinini owubonayo, ozowamukela futhi uwacubungule. Sidinga umshini ukuze uye kumethadatha engemuva komsingathi weqoqo le-MySQL kanye negama lomsebenzisi-iphasiwedi, leyo umsebenzisi ayicacisile kufayela le-Terraform, ngemva kokuqala. Ake siguqule okuqukethwe kwefayela kancane setup.sh
, esebenza lapho umshini obonakalayo uvuliwe.
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
Iqembu le-Intance kanye ne-balancer
Ngemva kokwakha kabusha isithombe sediski esisha, ekugcineni singangeza ifayela lethu le-Terraform.
Ake sikhombise ukuthi sifuna ukusebenzisa isithombe sediski esikhona:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Manje ake sakhe iqembu lesibonelo:
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"
}
}
Kuhle ukunaka ukuthi siyidlulisele kanjani kumethadatha cluster_uri
, username
и password
. Yilezi umshini obonakalayo ozozikhipha ekuqaleni bese uzifaka ku-Grafana config.
Sekuya kubalancer.
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
}
}
}
}
Ushukela omncane
Sekusele kancane. Ngemva kokuba ingqalasizinda isisetshenzisiwe, kuzodingeka uye ku-Grafana UI futhi wengeze ngokwakho iqoqo le-CH (i-ID yayo esadinga ukutholwa) njengomthombo wedatha. Kepha iTerraform iyayazi i-ID yeqoqo. Asimphathise ukuthi afeze lolu daba.
Ake sengeze umhlinzeki omusha - u-Grafana, futhi simnikeze ikheli le-IP lobhalansi njengomsingathi. Zonke izinguquko ezenziwa yi-Terraform emshinini lapho ibhalansi yayo inquma ukuthi izokhula ku-MySQL, ngakho-ke kuyo yonke eminye imishini.
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"
}
Masikama izinwele zethu
Masibonise ikheli le-IP elibhalansi kanye nomsingathi weqoqo le-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"
}
Ungagijima
Konke! Ifayela lethu lokumisa selilungile futhi singakwazi, ngokusetha okuguquguqukayo, sitshele i-Terraform ukuthi iphakamise konke esikuchaze ngenhla. Lonke lolu hlelo lwangithatha cishe imizuzu eyi-15.
Ekugcineni ungabona umlayezo omuhle:
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
Futhi emafini, izici zengqalasizinda ephakanyisiwe zizobonakala:
Ake sibambe imiphumela
Manje, kusetshenziswa i-Grafana njengesibonelo, ngamunye wenu angasebenzisa izinhlelo zokusebenza ezinokwakheka kwamafu okunwebekayo kuplathifomu ye-Yandex.Cloud. Amathuluzi awusizo avela ku-HashiCorp njenge-Packer ne-Terraform angakusiza ngalokhu. Ngethemba ukuthi othile uzothola lesi sihloko siwusizo :)
PS Ngezansi ngizonamathisela isixhumanisi endaweni yokugcina lapho ungathola khona izindlela zokupheka esenziwe ngomumo zePacker neTerraform, izingcezu engizinikeze kulesi sihloko.
Source: www.habr.com