Salaamu calaykum! Iyada oo qayb ka ah shaqada koorsada, waxaan baaray awoodaha madal daruuraha gudaha sida
Maxaad doonaysaa inaad hesho?
Ka dib markii la bilaabo mashiinka farsamada leh ee server-ka webka, waxaad aadi kartaa martigeliyaha oo aad hesho UI qurux badan, u sheeg database-yada ilaha shaqada dheeraadka ah, samee dashboards iyo garaafyo.
Nooca aasaasiga ah wuxuu leeyahay hal cillad oo muhiim ah - ma aha mid loo dulqaadan karo qaladka gabi ahaanba. Taasi waa, dhammaan shaqeynta codsigu waxay kuxirantahay suurtagalnimada hal mashiinka farsamada. Haddii ay diido ama 10 qof ay furaan UI isku mar, markaa dhibaatooyin ayaa soo bixi doona.
Si fudud ayaa loo xalin karaa: kaliya waxaad u baahan tahay inaad... geyso mashiinno badan oo isku mid ah oo la mid ah server-ka shabakadda oo aad hoos geliso dheelitirka L3. Laakin wax waliba si cad uma aha halkan. Grafana waxay si toos ah ugu kaydisaa saxanka mishiinka farsamada gacanta (dashboards, garaafyada, iwm.) Sidaa darteed, haddii aan bedelno qaar ka mid ah goobaha UI, isbeddelladani waxay ka muuqan doonaan kaliya mashiinka farsamada ee uu xisaabiyaha noo soo diray. Tani waxay u horseedi doontaa habayn iswaafaqid la'aan ah ee codsigeena, taasoo keenaysa dhibaatooyin ku saabsan bilaabista iyo isticmaalka.
Halkan xog ururin kale ayaa u iman doona samatabbixinta, tusaale ahaan, MySQL ama wax u dhigma. Waxaan u sheegaynaa Grafana in ay ku kaydiso goobaha isticmaalaha kaydkan "spare" Ka dib, way ku filnaan doontaa in lagu qeexo dariiqa xogtan hal mar mashiinka kasta, oo lagu beddelo dhammaan goobaha kale ee isticmaala mid kasta oo ka mid ah mashiinnada farsamada; waxay ku fidin doonaan kuwa kale.
Halkan waxaa ah jaantuska kaabayaasha codsiga u dambeeya:
Aan barano inaan gacmahayaga wax ku qaadno
MySQL iyo ClickHouse
Ka hor inta aan la dirin codsigan oo kale adigoo gujinaya badhanka, waxay ahayd lagama maarmaan in la barto sida loo maareeyo qayb kasta oo ka mid ah oo la isku daro midba midka kale.
Halkan Yandex.Cloud ayaa naga caawin doonta, kaas oo bixiya dheelitirayaasha L3, ClickHouse iyo MySQL sida adeegyada la maareeyay. Isticmaaluhu wuxuu kaliya u baahan yahay inuu qeexo xuduudaha oo uu sugo ilaa inta uu madalku wax walba ka keenayo nidaamka shaqada.
Waan diiwaan galiyay, waxaan sameeyay daruur iyo akoon lacag bixineed. Taas ka dib, waxaan aaday daruuraha oo aan dejiyay MySQL iyo ClickHouse rucubood oo leh goobo yar. Waxaan sugay ilaa ay noqdeen kuwo firfircoon.
Waxa kale oo aad u baahan tahay inaad xasuusato inaad ku abuurto xog ururin koox kasta oo aad habayso gelitaankeeda adigoo isticmaalaya login iyo password. Faahfaahinta halkan kuma geli doono - wax walba waa iska cad yihiin interface-ka.
Faahfaahinta aan caddayn waxay ahayd in xog-ururintani ay leeyihiin martigeliyayaal badan, kuwaas oo hubinaya dulqaadkooda khaladaadka. Si kastaba ha ahaatee, Grafana waxay u baahan tahay hal martigaliyaha xog kasta oo ay ku shaqeyso. Akhris dheer c-<cluster_id>.rw.mdb.yandexcloud.net
lagu sawiray maamulaha firfircoon ee kooxda ee hadda jira oo wata aqoonsiga u dhigma. Tani waa waxa aan siin doono Grafana.
server web
Hadda waxay ku xiran tahay server-ka shabakadda. Aynu kor u qaadno mashiinka farsamada casriga ah ee Linux oo aan gacanta ku habeyno Grafana.
Aan ku xirno ssh oo aan rakibno xirmooyinka lagama maarmaanka ah.
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
Intaa ka dib, aan ku maamulno Grafana hoosta systemctl oo aan ku rakibno plugin si aad ula shaqeyso ClickHouse (haa, laguma soo koobin xirmada aasaasiga ah).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Taasi waa, ka dib amar fudud
sudo service grafana-server start
waxaan bilaabi doonaa server-ka webka. Hadda waxaad geli kartaa cinwaanka IP-ga dibadda ee mashiinka farsamada ee browserka, sheeg dekedda 3000 oo arag Grafana UI ee quruxda badan.
Laakiin ha degdegin, ka hor inta aanad dejin Grafana, waa inaad xasuusataa inaad u sheegto dariiqa MySQL si aad u kaydiso goobta.
Isku xidhka guud ee server-ka Grafana ayaa ku jira faylka /etc/grafana/grafana.ini
. Khadka loo baahan yahay wuxuu u eg yahay sidan:
;url =
Waxaan u dejinay martigeliyaha kooxda MySQL. Fayl isku mid ah ayaa ka kooban gelitaanka iyo erayga sirta ah ee gelitaanka Grafana ee sawirka kore, kuwaas oo asal ahaan labaduba siman yihiin admin
.
Waxaad isticmaali kartaa amarrada 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
Waa waqtigii dib loo bilaabi lahaa serverka shabakada!
sudo service grafana-server restart
Hadda gudaha Grafana UI waxaan ku qeexi doonaa ClickHouse sida DataSource.
Waxa aan awooday in aan gaadho habayn shaqo oo leh goobaha soo socda:
Waxaan u cayimay URL ahaan https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Dhammaan! Waxaan haynaa hal mashiinka farsamada gacanta ah oo leh server-ka shabakad ku xiran CH iyo MySQL. Waxaad mar hore u soo rar kartaa kaydka xogta ClickHouse oo waxaad dhisi kartaa dashboards. Si kastaba ha ahaatee, weli ma aanaan gaadhin yoolkeenna, mana aynaan dhigin kaabayaal dhammaystiran.
Xirmada
Yandex.Cloud waxay kuu ogolaaneysaa inaad abuurto sawirka diskka mashiinka farsamada ee jira, iyo iyada oo ku saleysan - tiro kasta oo mashiinno ah oo isku mid ah. Tani waa dhab ahaan waxa aan isticmaali doono. Si aad si habboon u ururiso sawirka, qaado qalabka
Faylkayaga json wuxuu ka koobnaan doonaa laba baloog: wax-dhisayaasha iyo kuwa wax-dhiya. Baloogga koowaad wuxuu qeexayaa cabbirrada sawirka laftiisa inuu yahay qayb, qaybta labaadna waxay sharraxaysaa tilmaamaha buuxinta nuxurka lagama maarmaanka ah.
Dhisayaasha
{
"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"
}
],
...
}
Qaab-dhismeedkan, waxaad u baahan tahay inaad dejiso aqoonsiga qaybta daruuraha meesha aad rabto inaad ku abuurto sawirka, iyo sidoo kale dariiqa faylka oo leh furayaasha akoontada adeegga ee hore loogu abuuray qaybtan. Waxaad ka akhrisan kartaa wax badan oo ku saabsan abuurista xisaabaadka adeegga iyo furayaasha qaab fayl qaybta u dhiganta
Qaabayntan ayaa sheegaysa in sawirka diskka lagu dhisi doono iyadoo lagu saleynayo goobta ubuntu-1804-lts
, oo lagu meeleeyay qaybta isticmaale ee habboon ee qoyska sawirka GRAFANA
magaca grafana-{{timestamp}}
.
Bixiyeyaal
Hadda waxay timaaddaa qaybta xiisaha badan ee qaabeynta. Waxay sharxi doontaa isku xigxiga falalka u baahan doona in lagu sameeyo mashiinka farsamada ka hor inta aan la qaboojin xaaladdeeda sawirka diskka.
{
...,
"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"
]
}
]
}
Halkan dhammaan falalka waxa loo qaybiyaa 3 marxaladood. Marxaladda koowaad, qoraal fudud ayaa la sameeyaa kaas oo abuuraya hage caawiye ah.
diyaarin-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Marxaladda xigta, waxaan dhigeynaa qoraal tusahan, kaas oo u baahan doona in la bilaabo isla markiiba ka dib marka la bilaabo mashiinka farsamada. Qoraalkani waxa uu gelin doonaa doorsoomayaasha isticmaalaha ee u baahan in lagu diwaan galiyo qaabka Grafana oo dib u bilaabo serverka shabakada.
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
Intaa ka dib waxaa hadhay 3 shay oo la sameeyo:
1) ku rakib baakadaha
2) Ku socodsii Grafana hoosta systemctl oo ku rakib plugin ClickHouse
3) dhig qoraalka setup.sh ee safka bilawga isla markiiba ka dib markaad shido mashiinka farsamada.
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;
Hadda waxa kaliya ee hadhay waa in la socodsiiyo Packer oo la geliyo sawirka wax soo saarka ee qaybta la cayimay. Markaad abuureyso mashiinka farsamada, waxaad u dooran kartaa sidii disk boot ka dib markaad bilowdo waxaad heli doontaa server-ka Grafana oo diyaarsan.
Kooxda tusaale ahaan iyo dheellitiriyaha
Marka aan haysano sawir disk ah oo noo ogolaanaya inaan abuurno shabakado badan oo isku mid ah oo Grafana ah, waxaan abuuri karnaa koox tusaale ah. Goobta Yandex.Cloud, ereygan waxaa loola jeedaa midowga mashiinnada farsamada ee leh sifooyin isku mid ah. Marka la abuurayo koox tusaale ah, nooca dhammaan mishiinnada kooxdan ayaa la habeeyey, ka dibna sifooyinka kooxda lafteeda (tusaale ahaan, tirada ugu yar iyo ugu badan ee mashiinnada firfircoon). Haddii lambarka hadda aanu buuxin shuruudahan, markaa kooxda tusaale ahaan lafteeda ayaa ka saari doonta mashiinnada aan loo baahnayn ama waxay abuuri doonaan kuwo cusub oo muuqaalkeeda ah.
Iyada oo qayb ka ah hawshayada, waxaanu abuuri doonaa koox tusaale ahaan server-yada shabakada kuwaas oo laga soo saari doono sawirka diskka ee hore loo abuuray.
Waxa runtii cajiib ah ayaa ah habaynta kooxda tusaalaha ugu dambeeya. Kooxda bartilmaameedka ah ee ku jirta isdhexgalka Load Balancer ayaa kaa caawin doona inaad ku habayso dheelitirka L3 ee sare ee mashiinnada farsamada ee kooxdan adigoo gujinaya dhowr badhan.
Markii aan dejinayo dheelitirka, waxaan hirgeliyay laba qodob oo muhiim ah:
- Waxaan ka dhigay miisaan-hayaha inuu aqbalo taraafikada isticmaalaha dekedda 80 oo aan u wareejiyo dekedda 3000 ee mashiinnada farsamada, sida saxda ah halka ay Grafana ku nooshahay.
- Waxaan dejiyay hubinta jiritaanka mashiinnada anigoo ku dhejinaya dekedda 3000.
Koob yar
Ugu dambayntii, waxa aanu awoodnay in aanu gacanta ku dhigno kaabayaashii codsiga ee la rabnay, imikana waxa aanu haysanaa adeeg Grafana aad u adkeysi badan. Waxa kaliya oo aad u baahan tahay inaad ogaato ciwaanka IP-ga ee dheelitiriyaha oo ah meesha laga soo galo codsiga iyo martigeliyaha kooxda ClickHouse si aad ugu shubto kaydka xogta.
Waxay u egtahay guul? Haa, guul. Laakiin wali wax baa i jahawareersan. Habka kor ku xusan oo dhan wuxuu u baahan yahay tallaabooyin badan oo gacanta ah mana aha mid la miisaami karo gabi ahaanba; Waxaan jeclaan lahaa inaan si otomaatig ah u sameeyo haddii ay suurtagal tahay. Tani waa waxa qaybta xigta lagu go'aamin doono.
Isdhexgalka Terraform
Waxaan mar labaad isticmaali doonaa qalab ka socda HashiCorp oo la yiraahdo
Dhammaan shaqada Terraform waxay ku timaadaa qorista faylka qaabeynta (*.tf
) iyo abuurista kaabayaasha dhaqaalaha oo ku salaysan.
Kala duwanaansho
Bilawga faylka, waxaanu ku dari doonaa doorsoomayaasha go'aaminaya halka iyo sida kaabayaasha mustaqbalka la geyn doono.
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>"
}
Habka geynta codsiga oo dhan ayaa hoos ugu soo degi doona si loo dhiso sawirka diskka iyo dejinta doorsoomayaashan. Aan sharaxo waxa ay masuul ka yihiin:
outh_calaamad - calaamad u ah gelitaanka daruuraha. Waxaa lagu heli karaa
daruur_id - Aqoonsiga daruuraha halkaasoo aan geyn doono codsiga
folder_id - aqoonsiga qaybta halka aanu geyn doono codsiga
adeegga_account_id - aqoonsiga koontada adeegga ee qaybta u dhiganta ee daruuraha.
sawirka_id - aqoonsiga sawirka saxanka ee la helay iyadoo la isticmaalayo Packer
username ΠΈ password - Magaca isticmaale iyo erayga sirta ah si aad u gasho labada xog ururin iyo server-ka Grafana
dbname - Magaca xogta ee gudaha CH iyo MySQL
Dariiqa_guud_furaha - Jidka faylka oo wata furahaaga dadweynaha ee ssh, kaas oo aad isticmaali karto si aad ugu xidhid magaca ubuntu
mashiinada farsamada gacanta ee leh server-yada webka
Dejinta bixiyaha
Hadda waxaad u baahan tahay inaad dejiso bixiyaha Terraform - kiiskeena, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Waxaad ogaan doontaa in halkan aan isticmaaleyno doorsoomayaasha kor lagu qeexay.
Shabakadda iyo kooxaha
Hadda waxaan abuuri doonaa shabakad ay xubno ka mid ah kaabayaashayagu ku wada xidhiidhi doonaan, saddex subnets (mid gobol kasta ah) oo kor u qaadaya CH iyo 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
}
}
Sida aad arki karto, mid kasta oo ka mid ah labada kooxoodba waxa loo abuuray si khalad ah oo loo dulqaadan karo iyadoo la dhigayo saddex aag oo la heli karo.
Mareegaha shabakadda
Waxay u egtahay inaan ku sii socon karno isla ruuxa, laakiin waxaan la kulmay dhibaato. Intaa ka hor, waxaan markii hore kiciyay kooxda MySQL oo kaliya ka dib, aniga oo garanaya aqoonsigiisa, waxaan soo ururiyay sawirka diskka oo leh qaabeynta loo baahan yahay, halkaas oo aan ku tilmaamay kooxda martida loo yahay. Laakiin hadda ma naqaano aqoonsiga kooxda ka hor inta aan la bilaabin Terraform, oo ay ku jirto wakhtiga sawirka la dhisayo. Sidaa darteed, waxaan ku qasbanaaday in aan isticmaalo waxyaabaha soo socda
Isticmaalka adeega xogta badan ee Amazon, waxaan u gudbin doonaa qaar ka mid ah xuduudaha mishiinka farsamada, kaas oo uu aqbali doono oo ka shaqeyn doono. Waxaan u baahanahay mashiinka si uu u aado xogta badan ee ka dambeysa kooxda MySQL martigeliyaha iyo erayga sirta ah ee isticmaalaha, kaas oo isticmaaluhu uu ku qeexay faylka Terraform, ka dib marka uu bilaabo. Aynu wax yar ka beddelno waxa ku jira faylka setup.sh
, kaas oo shaqeeya marka mishiinka farsamada la shido.
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
Kooxda qaddarinta iyo dheelli-tirka
Markaan dib u dhisnay sawir disk cusub, waxaan ugu dambeyntii ku dari karnaa faylkayaga Terraform.
Aynu tilmaanno inaan rabno inaan isticmaalno sawirka diskka jira:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Hadda aynu abuurno koox tusaale:
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"
}
}
Waxaa habboon in fiiro gaar ah loo yeesho sida aan ugu gudbinay xogta badan cluster_uri
, username
ΠΈ password
. Waa kuwan in mashiinka farsamada uu ka soo bixi doono bilowga oo uu gelin doono qaabka Grafana.
Waxay ku xiran tahay xisaabiyaha.
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
}
}
}
}
In yar oo sonkor ah
Wax yar baa hadhay. Ka dib marka kaabayaasha la geeyo, waa inaad tagtaa Grafana UI oo aad gacanta ku darto kooxda CH (aqoonsiga kaas oo wali u baahan in la helo) ilo Xogeed ahaan. Laakin Terraform wuu garanayaa aqoonsiga kooxda Aan ku aamino inuu arrinka ka midho dhaliyo.
Aan ku darno bixiye cusub - Grafana, oo aan siino dheelitiriyaha cinwaanka IP-ga martigeliyaha ahaan. Dhammaan isbeddelada uu Terraform ku sameeyo mishiinka halka dheellitirkiisu go'aamiyo waxay ku kori doonaan MySQL, sidaas darteedna dhammaan mishiinnada kale.
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"
}
Aynu timaha u shanleyno
Aan soo bandhigno dheelitiriyaha IP-ga iyo martigeliyaha kooxda 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"
}
ordi kara
Dhammaan! Faylka qaabeyntayadu waa diyaar waxaanan awoodnaa, annagoo dejinaya doorsoomayaasha, u sheeg Terraform inay kor u qaadaan wax kasta oo aan kor ku sharaxnay. Hawsha oo dhami waxay igu qaadatay ilaa 15 daqiiqo.
Dhamaadka waxaad arki kartaa fariin qurux badan:
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
Iyo daruuraha, qaybaha kaabayaasha kor loo qaaday ayaa muuqan doona:
Aynu soo koobno ββnatiijooyinka
Hadda, adoo isticmaalaya Grafana tusaale ahaan, mid kasta oo idinka mid ah wuxuu geyn karaa codsiyo leh qaab dhismeedka daruuraha fidsan ee goobta Yandex.Cloud. Qalab waxtar leh oo ka socda HashiCorp sida Packer iyo Terraform ayaa kaa caawin kara tan. Waxaan rajeynayaa in qof u helo maqaalkan mid faa'iido leh :)
PS Hoosta waxaan ku soo lifaaqi doonaa isku xirka kaydka halkaas oo aad ka heli karto cuntooyinka diyaarsan ee Packer iyo Terraform, jajabyada aan ku bixiyay maqaalkan.
Source: www.habr.com