Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Moni nonse! Monga gawo la maphunziro anga, ndinafufuza luso la nsanja yamtambo yapakhomo monga Yandex.Cloud. Pulatifomu imapereka ntchito zosiyanasiyana zothetsera mavuto othandiza. Komabe, nthawi zina mumayenera kukhazikitsa pulogalamu yanu yamtambo yokhala ndi zida zokwanira zotengera ntchitozi. M'nkhaniyi ndikufuna kugawana zomwe ndakumana nazo potumiza pulogalamuyi.

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Kodi mukufuna kulandira chiyani?

grafana - chida champhamvu chothetsera zovuta zowunikira kapena kuyang'anira zovuta zamakina aliwonse. Pamakonzedwe ake oyambirira, awa ndi makina enieni omwe ali ndi seva yapaintaneti ya Grafana, komanso database (ClickHouse, InfluxDB, etc.) ndi deta yomwe ma analytics adzakhazikitsidwa.

Pambuyo poyambitsa makina enieni omwe ali ndi seva yapaintaneti, mukhoza kupita kwa omwe ali nawo ndikupeza UI wokongola, tchulani nkhokwe monga magwero a ntchito zina, pangani ma dashboards ndi ma graph.

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Mtundu woyambira uli ndi drawback imodzi yofunika - silolera zolakwa konse. Ndiye kuti, magwiridwe antchito onse a pulogalamuyi amadalira kuthekera kwa makina amodzi. Ngati ikana kapena anthu 10 atsegula UI nthawi yomweyo, ndiye kuti mavuto adzabuka.

Zitha kuthetsedwa mosavuta: mukungofunika ... tumizani makina ambiri ofanana omwe ali ndi seva yapaintaneti ndikuwayika pansi pa balancer ya L3. Koma sikuti zonse ndizosavuta pano. Grafana amasunga zoikamo za ogwiritsa ntchito (njira zopita ku database, ma dashboards, ma graph, ndi zina zotero) mwachindunji pa disk ya makina ake enieni. Chifukwa chake, ngati tisintha zosintha zina mu UI, zosinthazi ziziwoneka pamakina omwe owerengera adatitumizira. Izi zipangitsa makonda osagwirizana ndi pulogalamu yathu, kubweretsa zovuta pakuyambitsa ndi kugwiritsa ntchito.

Apanso database ina idzapulumutsa, mwachitsanzo, MySQL kapena zofanana zake. Timauza Grafana kuti asunge zokonda za ogwiritsa ntchito mu "database" iyi. Pambuyo pake, zidzakhala zokwanira kufotokoza njira yopita ku databaseyi kamodzi pamakina aliwonse, ndikusintha makonda ena onse pamakina aliwonse; iwo adzafikira enawo.

Nachi chithunzi cha zomangira zomaliza zogwiritsira ntchito:

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Tiyeni tiphunzire kukweza ndi manja athu

MySQL ndi ClickHouse

Musanatumize pulogalamu yotere ndikudina batani, kunali koyenera kuphunzira momwe mungagwirire zigawo zake zonse ndikuziphatikiza wina ndi mzake.

Pano Yandex.Cloud itithandiza, yomwe imapereka ma balance a L3, ClickHouse ndi MySQL monga mautumiki oyendetsedwa. Wogwiritsa amangofunika kufotokoza magawo ndikudikirira mpaka nsanja itabweretsa zonse kuti zigwire ntchito.

Ndinalembetsa, ndinapanga mtambo ndi akaunti yolipira. Pambuyo pake, ndinapita kumtambo ndikukhazikitsa magulu a MySQL ndi ClickHouse okhala ndi zoikamo zochepa. Ndinadikirira mpaka atakhala achangu.

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzoKutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Muyeneranso kukumbukira kupanga nkhokwe mu gulu lirilonse ndikukhazikitsa mwayi wofikirako pogwiritsa ntchito malowedwe ndi mawu achinsinsi. Sindingafotokoze mwatsatanetsatane apa - zonse zikuwonekeratu pamawonekedwe.

Tsatanetsatane wosadziwikiratu ndikuti ma databasewa ali ndi makamu ambiri, omwe amatsimikizira kulekerera kwawo zolakwika. Komabe, Grafana imafuna munthu m'modzi yekha pa database iliyonse yomwe imagwira ntchito. Kuwerenga kwanthawi yayitali zolemba Antu amavulu amwekeshaΓ±a nsaΓ±u yayiwahi. Iwo likukhalira kuti khamu la mitundu c-<cluster_id>.rw.mdb.yandexcloud.net kujambulidwa ku gulu lomwe likugwira ntchito pagululi lomwe lili ndi ID yofananira. Izi ndi zomwe tipereka kwa Grafana.

Seva yapaintaneti

Tsopano zili pa seva yapaintaneti. Tiyeni tikweze makina okhazikika omwe ali ndi Linux ndikukonza pamanja Grafana pamenepo.

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Tiyeni tigwirizane kudzera pa ssh ndikuyika mapepala ofunikira.

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 

Pambuyo pake, tiyeni tithamangitse Grafana pansi pa systemctl ndikuyika pulogalamu yowonjezera yogwira ntchito ndi ClickHouse (inde, siyikuperekedwa mu phukusi loyambira).

sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource

Ndi zimenezo, pambuyo pake ndi lamulo losavuta

sudo service grafana-server start

tidzayambitsa seva yapaintaneti. Tsopano mutha kulowa adilesi yakunja ya IP yamakina osatsegula, tchulani doko 3000 ndikuwona UI yokongola ya Grafana.
Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Koma musafulumire, musanakhazikitse Grafana, muyenera kukumbukira kuwuza njira yopita ku MySQL kuti musunge zoikamo pamenepo.

Kukonzekera konse kwa seva yapaintaneti ya Grafana kuli mufayilo /etc/grafana/grafana.ini. Mzere wofunikira umawoneka motere:

;url =

Timayika gululo ku gulu la MySQL. Fayilo yomweyi ili ndi malowedwe ndi mawu achinsinsi olowera ku Grafana pachithunzi pamwambapa, zomwe mwachisawawa zonse ndizofanana admin.

Mukhoza kugwiritsa ntchito malamulo a 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

Yakwana nthawi yoti muyambitsenso seva yapaintaneti!

sudo service grafana-server restart

Tsopano mu Grafana UI tidzatchula ClickHouse ngati DataSource.

Ndinatha kukwaniritsa kasinthidwe ka ntchito ndi zoikamo zotsatirazi:

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Ndatchula ngati URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443

Zonse! Tili ndi makina amodzi ogwira ntchito omwe ali ndi seva yapaintaneti yolumikizidwa ndi CH ndi MySQL. Mutha kukweza kale dataset ku ClickHouse ndikupanga ma dashboard. Komabe, sitinakwanitse cholinga chathu ndipo sitinagwiritse ntchito zipangizo zamakono.

Chonyamula

Yandex.Cloud imakulolani kuti mupange chithunzi cha disk cha makina omwe alipo, ndipo pamaziko ake - chiwerengero chilichonse cha makina ofanana. Izi ndi zomwe tidzagwiritse ntchito. Kuti musonkhanitse chithunzicho mosavuta, tengani chidacho Chonyamula kuchokera ku HashiCorp. Zimatengera kuyika fayilo ya json yokhala ndi malangizo osonkhanitsira chithunzicho.

Fayilo yathu ya json idzakhala ndi midadada iwiri: omanga ndi othandizira. Chida choyamba chimafotokoza magawo a chithunzicho ngati chinthu, ndipo chipika chachiwiri chimafotokoza malangizo oti mudzaze ndi zofunikira.

Kumathandiza

{
"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"
    }
  ],
...
}

Mu template iyi, muyenera kukhazikitsa chizindikiritso cha gawo mumtambo momwe mukufuna kupanga chithunzicho, komanso njira yopita ku fayilo yokhala ndi makiyi ochokera kuakaunti yautumiki yomwe idapangidwa kale mgawoli. Mutha kuwerenga zambiri za kupanga maakaunti autumiki ndi makiyi mu mawonekedwe a fayilo mugawo lolingana zolemba.

Kukonzekera uku kumanena kuti chithunzi cha disk chidzamangidwa kutengera nsanja ubuntu-1804-lts, yoyikidwa mu gawo loyenera la ogwiritsa ntchito m'banja la fano GRAFANA pansi pa dzina grafana-{{timestamp}}.

Othandizira

Tsopano pakubwera gawo losangalatsa kwambiri la kasinthidwe. Idzalongosola ndondomeko ya zochitika zomwe zidzafunikire kuchitidwa pa makina enieni asanazimitse chikhalidwe chake kukhala chithunzi cha disk.

{
...,
"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"
        ]
        }
  ]
}

Apa zochita zonse zagawidwa m'magawo atatu. Pa gawo loyamba, script yosavuta imachitidwa yomwe imapanga chikwatu chothandizira.

ready-ctg.sh:

#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana

Pa gawo lotsatira, timayika script mu bukhuli, lomwe liyenera kukhazikitsidwa mwamsanga mutangoyamba makina enieni. Zolemba izi zidzayika zosintha za ogwiritsa ntchito zomwe ziyenera kulembetsedwa mu Grafana config ndikuyambitsanso seva yapaintaneti.

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

Pambuyo pake, pali zinthu zitatu zomwe zatsala kuti zichitike:
1) kukhazikitsa phukusi
2) thamangitsani Grafana pansi pa systemctl ndikuyika pulogalamu yowonjezera ya ClickHouse
3) ikani setup.sh script pamzere wotsegulira mutangoyatsa makina enieni.

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;

Tsopano chomwe chatsala ndikuthamangitsa Packer ndikupeza chithunzi chomwe chili mugawo lomwe latchulidwa. Mukapanga makina enieni, mutha kuyisankha ngati diski yoyambira ndipo mukakhazikitsa mudzalandira seva yapaintaneti ya Grafana.

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo
Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Gulu lachitsanzo ndi balancer

Tikakhala ndi chithunzi cha disk chomwe chimatilola kupanga ma seva ambiri ofanana a Grafana, titha kupanga gulu lachitsanzo. Pa nsanja ya Yandex.Cloud, mawuwa amatanthauza mgwirizano wa makina enieni omwe ali ndi makhalidwe omwewo. Popanga gulu lachitsanzo, mawonekedwe a makina onse omwe ali mgululi amapangidwa, kenako mawonekedwe a gululo (mwachitsanzo, makina ochepera komanso opitilira muyeso). Ngati chiwerengero chamakono sichikukwaniritsa izi, ndiye kuti gululo lidzachotsa makina osafunikira kapena kupanga zatsopano mu fano lake.

Monga gawo la ntchito yathu, tipanga gulu lachitsanzo la ma seva omwe adzapangidwa kuchokera ku chithunzi cha disk chomwe chinapangidwa kale.

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Chodabwitsa kwambiri ndikukhazikitsa gulu lomaliza. Gulu lomwe mukufuna kuphatikiza ndi Load Balancer likuthandizani kuti musinthe chowerengera cha L3 pamwamba pa makina enieni a gululi podina mabatani angapo.

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Pokhazikitsa balancer, ndinatsatira mfundo ziwiri zofunika:

  1. Ndidapangitsa owerengerawo kuvomereza kuchuluka kwa ogwiritsa ntchito padoko 80 ndikuwongoleranso ku doko 3000 la makina enieni, komwe Grafana amakhala.
  2. Ndidakhazikitsa kuwunika momwe makinawo amagwirira ntchito powayika ku doko 3000.

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Chidule chachidule

Pomaliza, tinatha kuyika pamanja zopangira zomwe tikufuna, ndipo tsopano tili ndi ntchito yokhazikika ya Grafana. Mungofunika kudziwa adilesi ya IP ya balancer monga polowera ku pulogalamuyo komanso gulu la ClickHouse cluster kuti mulowetse dataset mmenemo.

Zingawoneke ngati kupambana? Inde, kupambana. Koma chinachake chikundisokonezabe. Njira yonse yomwe ili pamwambapa imafuna masitepe ambiri apamanja ndipo sizowopsa konse; Ndikufuna kuyisintha ngati nkotheka. Izi ndi zomwe gawo lotsatira lidzaperekedwa.

Kuphatikiza kwa Terraform

Tidzagwiritsanso ntchito chida chochokera ku HashiCorp chotchedwa Terraform. Zikuthandizani kuti mutumize zida zonse zogwiritsira ntchito ndikudina batani, kutengera masinthidwe angapo omwe wogwiritsa ntchito amadutsa. Tiyeni tilembe maphikidwe omwe amatha kuyendetsedwa kangapo m'magawo osiyanasiyana a ogwiritsa ntchito osiyanasiyana.

Ntchito zonse ndi Terraform zimatsikira polemba fayilo yosinthira (*.tf) ndi kukhazikitsidwa kwa zomangamanga potengera izo.

Zosintha

Kumayambiriro kwenikweni kwa fayilo, tidzaphatikiza zosintha zomwe zimatsimikizira komwe komanso momwe maziko amtsogolo adzagwiritsidwira ntchito.

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>"
}

Njira yonse yotumizira ntchito idzatsikira pakupanga chithunzi cha disk ndikukhazikitsa izi. Ndiroleni ndifotokoze chomwe iwo ali ndi udindo:

oauth_token - chizindikiro chofikira pamtambo. Atha kupezeka ndi kugwirizana.
Cloud_id - chozindikiritsa chamtambo komwe tidzatumizira pulogalamuyi
foda_id - chizindikiritso cha gawo komwe titumizire ntchito
service_account_id - chizindikiritso cha akaunti yautumiki mu gawo lolingana la mtambo.
chithunzi_id - chizindikiritso cha chithunzi cha disk chopezedwa pogwiritsa ntchito Packer
lolowera ΠΈ achinsinsi - dzina lolowera ndi mawu achinsinsi kuti mupeze ma database ndi seva yapaintaneti ya Grafana
db dzina - Dzina la database mkati mwa magulu a CH ndi MySQL
public_key_njira - njira yopita ku fayilo ndi kiyi yanu ya ssh, yomwe mungagwiritse ntchito kulumikiza pansi pa dzina ubuntu ku makina enieni okhala ndi ma seva apaintaneti

Kupanga kwa wopereka

Tsopano muyenera kukonza wopereka Terraform - kwa ife, Yandex:

provider "yandex" {
  token     = var.oauth_token
  cloud_id  = var.cloud_id
  folder_id = var.folder_id
  zone      = "ru-central1-a"
}

Mudzawona kuti apa tikugwiritsa ntchito zosinthika zomwe zafotokozedwa pamwambapa.

Network ndi masango

Tsopano tipanga maukonde omwe zida zathu zimalumikizana, ma subnets atatu (imodzi m'chigawo chilichonse) ndikukweza magulu a CH ndi 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
  }
}

Monga mukuonera, magulu awiriwa amapangidwa kuti asalole zolakwika poyikidwa m'magawo atatu opezeka.

Ma seva apaintaneti

Zingawoneke kuti titha kupitiriza ndi mzimu womwewo, koma ndinakumana ndi zovuta. Izi zisanachitike, ndinayamba kukweza gulu la MySQL ndipo pambuyo pake, podziwa ID yake, ndinasonkhanitsa chithunzi cha disk ndi kasinthidwe kofunikira, komwe ndidafotokozera wolandirayo ku gululo. Koma tsopano sitikudziwa ID yamagulu tisanayambitse Terraform, kuphatikiza pa nthawi yomanga chithunzicho. Choncho, ndinayenera kuchita zotsatirazi chinyengo.

Pogwiritsa ntchito ntchito ya metadata ya Amazon, tidzadutsa magawo ena kumakina enieni, omwe amavomereza ndikukonza. Timafunikira makinawo kuti apite ku metadata kuseri kwa gulu la MySQL cluster host ndi username-password, yomwe wogwiritsa ntchitoyo adafotokoza mu fayilo ya Terraform, atangoyamba. Tiyeni tisinthe zomwe zili mufayiloyo pang'ono setup.sh, yomwe imayenda pamene makina enieni atsegulidwa.

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

Gulu la intance ndi balancer

Popeza tamanganso chithunzi chatsopano cha disk, titha kuwonjezera fayilo yathu ya Terraform.

Tiyeni tiwone kuti tikufuna kugwiritsa ntchito chithunzi cha disk chomwe chilipo:

data "yandex_compute_image" "grafana_image" {
  image_id = var.image_id
}

Tsopano tiyeni tipange gulu lachitsanzo:

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"
  }
}

Ndikoyenera kusamala momwe tidapititsira mu metadata cluster_uri, username ΠΈ password. Ndi izi zomwe makina enieni azitulutsa poyambira ndikuyika Grafana config.

Zili kwa balancer.

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
      }
    }
  }
}

Shuga pang'ono

Kwatsala pang'ono chabe. Zomangamanga zitatumizidwa, muyenera kupita ku Grafana UI ndikuwonjezera pamanja gulu la CH (ID yomwe ikufunikabe kupezeka) ngati Gwero la Data. Koma Terraform amadziwa cluster ID. Tiyeni timudalire kuti akwaniritse nkhaniyi.

Tiyeni tiwonjeze wothandizira watsopano - Grafana, ndikumupatsa adilesi ya IP ya balancer ngati wolandira. Zosintha zonse zomwe Terraform imapanga pamakina omwe owerengera ake amatsimikiza kuti adzakula mu MySQL, motero pamakina ena onse.

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"
}

Tiyeni tipesa tsitsi lathu

Tiyeni tiwonetse adilesi ya IP ya balancer ndi gulu la ClickHouse cluster

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"
}

Mutha kuthamanga

Zonse! Fayilo yathu yosinthira ndiyokonzeka ndipo titha, pokhazikitsa zosintha, kuuza Terraform kuti ikweze zonse zomwe tafotokozazi. Zonsezi zinanditengera pafupifupi mphindi 15.
Pamapeto pake mutha kuwona uthenga wabwino:

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

Ndipo mumtambo, zinthu zomwe zidakwezedwa zidzawoneka:

Kutumiza kwa ntchito zogawidwa ku Yandex.Cloud pogwiritsa ntchito Grafana mwachitsanzo

Tiyeni tiwone zotsatira

Tsopano, pogwiritsa ntchito Grafana mwachitsanzo, aliyense wa inu atha kuyika mapulogalamu ndi mapangidwe amtambo owoneka bwino papulatifomu ya Yandex.Cloud. Zida zothandiza kuchokera ku HashiCorp monga Packer ndi Terraform zingakuthandizeni ndi izi. Ndikukhulupirira kuti wina awona kuti nkhaniyi ndi yothandiza :)

PS Pansipa ndikulumikiza ulalo kunkhokwe komwe mungapeze maphikidwe okonzeka a Packer ndi Terraform, zidutswa zomwe ndidapereka m'nkhaniyi.

posungira

Source: www.habr.com

Kuwonjezera ndemanga