Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Kia ora katoa! Hei wahanga o aku mahi akoranga, i rangahau au i nga kaha o te papaa kapua o-whare penei Yandex.Cloud. He maha nga ratonga ka tukuna e te papaaho mo te whakaoti rapanga mahi. Heoi, i etahi wa ka hiahia koe ki te whakarite i to ake tono kapua me te hanganga tino whanui i runga i enei ratonga. I roto i tenei tuhinga e hiahia ana ahau ki te whakapuaki i aku wheako ki te whakamahi i taua tono.

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

He aha taau e hiahia ana kia whiwhi?

Karepe — he taputapu kaha mo te whakaoti rapanga tātari me te aro turuki i nga raru o tetahi punaha. I roto i tana whirihoranga taketake, he miihini mariko tenei me te tūmau tukutuku a Grafana, me te pātengi raraunga (ClickHouse, InfluxDB, me etahi atu) me te huinga raraunga ka whakatauhia.

I muri i te whakarewatanga o te miihini mariko me te tūmau tukutuku, ka taea e koe te haere ki tana kaihautu me te tiki i tetahi UI ataahua, tohua nga papaarangi hei puna mo etahi atu mahi, hanga papatohu me nga kauwhata.

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Ko te putanga taketake kotahi te raru nui - kaore rawa i te he. Arā, ko te mahinga katoa o te tono ka whakawhirinaki ki te oranga o tetahi miihini mariko. Ki te kore e whakaae, 10 ranei nga tangata e whakatuwhera ana i te UI i te wa ano, ka puta nga raru.

Ka taea te whakatau ngawari: me ... toha i te maha o nga miihini mariko e rite ana ki tetahi tūmau tukutuku ka waiho ki raro i te taurite L3. Engari kaore nga mea katoa e tino marama ana i konei. Ka penapena a Grafana i nga tautuhinga kaiwhakamahi (nga ara ki nga papaarangi, papatohu, kauwhata, me etahi atu) tika ki te kōpae o tana miihini mariko. No reira, ki te huri tatou i etahi tautuhinga i roto i te UI, ka kitea enei huringa ki runga i te miihini mariko i tukuna mai ai e te taurite. Ma tenei ka arai ki nga tautuhinga koretake mo ta maatau tono, ka raru te whakarewatanga me te whakamahi.

I konei ka tae mai tetahi atu papaa raraunga hei whakaora, hei tauira, MySQL, tona rite ranei. Ka kii atu matou ki a Grafana me pupuri e ia nga tautuhinga kaiwhakamahi ki roto i tenei putunga raraunga "waahi". Muri iho, ka nui ki te tautuhi i te ara ki tenei putunga raraunga kotahi i runga i ia miihini, me te whakatika i era atu tautuhinga kaiwhakamahi i runga i tetahi o nga miihini mariko; ka toro atu ki etahi atu.

Anei he hoahoa o te hanganga tono whakamutunga:

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Kia ako tatou ki te hiki i o ringaringa

MySQL me ClickHouse

I mua i te tuku tono pera me te paato i te paatene, me ako me pehea te hapai i ia waahanga me te whakauru ki a raatau ano.

I konei ka awhina a Yandex.Cloud ki a maatau, e whakarato ana i nga pauna L3, ClickHouse me MySQL hei ratonga whakahaere. Ko te kaiwhakamahi anake me tohu nga tawhā me te tatari kia kawea mai e te papanga nga mea katoa ki te raupapa mahi.

I rehita ahau, i hanga he kapua me tetahi kaute utu. I muri i tera, ka haere ahau ki te kapua me te whakarite i nga huinga MySQL me ClickHouse me nga tautuhinga iti. I tatari ahau kia kaha ratou.

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauiraTe tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Me mahara ano koe ki te hanga i tetahi putunga korero ki ia huinga me te whirihora i te uru ki reira ma te whakamahi i te takiuru me te kupuhipa. Kaore au e korero ki konei - he tino kitea nga mea katoa i roto i te atanga.

Ko nga korero kaore i tino kitea he maha nga kaihautu o enei putunga korero, e whakapumau ana i o raatau he. Heoi, me kii a Grafana kia kotahi te kaihautu mo ia putunga korero e mahi ana. Pānui roa tuhinga Na nga kapua i whakatau i ahau. Ka puta ko te ope o te momo c-<cluster_id>.rw.mdb.yandexcloud.net kua mapi ki te kaihautu matua kaha o naianei o te tautau me te ID e rite ana. Ko tenei ka hoatu e matou ki a Grafana.

Tūmau tukutuku

Inaianei kei runga i te tūmau tukutuku. Me whakaara ake he miihini mariko me te Linux me te whirihora a Grafana ki runga.

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Me hono ma te ssh me te whakauru i nga kohinga e tika ana.

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 

I muri i tera, me whakahaere a Grafana i raro i te systemctl me te whakauru i te mono mo te mahi tahi me ClickHouse (ae, kaore i te tukuna i roto i te putea taketake).

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

Koia, i muri i tera me te whakahau ngawari

sudo service grafana-server start

ka timata tatou i te tūmau tukutuku. Na ka taea e koe te whakauru i te wahitau IP o waho o te miihini mariko i roto i te kaitirotiro, tohua te tauranga 3000 ka kite i te ataahua o Grafana UI.
Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Engari kaua e tere, i mua i te whakatuu i a Grafana, me mahara koe ki te korero i te huarahi ki MySQL hei penapena i nga tautuhinga ki reira.

Ko te whirihoranga katoa o te tūmau tukutuku a Grafana kei roto i te konae /etc/grafana/grafana.ini. He penei te ahua o te raina e hiahiatia ana:

;url =

I whakaturia e matou te kaihautu ki te roopu MySQL. Kei roto i taua konae te takiuru me te kupuhipa mo te uru atu ki a Grafana i te pikitia o runga ake nei, he rite tonu nga mea e rua admin.

Ka taea e koe te whakamahi i nga whakahau 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

Kua tae ki te wa ki te whakaara ano i te tūmau tukutuku!

sudo service grafana-server restart

Inaianei kei te Grafana UI ka tohua e matou a ClickHouse hei Raraunga Raraunga.

I taea e au te whakatutuki i tetahi whirihoranga mahi me nga tautuhinga e whai ake nei:

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

I tohua e ahau hei URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443

Katoa! Kei a matou tetahi miihini mariko e mahi ana me tetahi tūmau tukutuku e hono ana ki a CH me MySQL. Ka taea e koe te tuku ake i te huingararaunga ki ClickHouse me te hanga papatohu. Heoi ano, kare ano kia tutuki i a matou ta matou whainga, kaore ano kia horahia he hanganga tino pai.

Pūpūraka

Ko te Yandex.Cloud ka taea e koe te hanga i tetahi whakaahua kōpae o te miihini mariko o mua, a i runga i tana kaupapa - he maha nga miihini e rite ana ki a raatau ano. Koinei tonu te mea ka whakamahia e matou. Kia pai te whakahiato i te ahua, tangohia te taputapu Pūpūraka na HashiCorp. Ka whakauruhia he konae json me nga tohutohu mo te whakahiato i te ahua.

E rua nga poraka kei roto i ta maatau konae json: nga kaihanga me nga kaiwhakarato. Ko te poraka tuatahi e whakaatu ana i nga tawhā o te ahua ano he hinonga, ko te poraka tuarua e whakaatu ana i nga tohutohu mo te whakakii i nga mea e tika ana.

Kaihanga

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

I roto i tenei tauira, me tautuhi koe i te tohu tohu o te waahanga i roto i te kapua e hiahia ana koe ki te hanga i te ahua, me te huarahi ki te konae me nga taviri mai i te kaute ratonga i hangaia i mua i tenei waahanga. Ka taea e koe te panui atu mo te hanga i nga kaute ratonga me nga taviri i te ahua o te konae kei te waahanga e pa ana tuhinga.

Ko tenei whirihoranga e kii ana ka hangaia te ahua o te kōpae i runga i te turanga ubuntu-1804-lts, ka whakanohoia ki te waahanga kaiwhakamahi e tika ana i roto i te whanau whakaahua GRAFANA i raro i te ingoa grafana-{{timestamp}}.

Kaituku

Inaianei kua tae mai te waahanga whakamere o te whirihoranga. Ka whakaahuahia te raupapa o nga mahi e tika ana kia mahia i runga i te miihini mariko i mua i te whakatio tona ahua ki te ahua kōpae.

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

I konei ka wehewehea nga mahi katoa kia 3 nga wahanga. I te waahi tuatahi, ka mahia he tuhinga ngawari ka hangaia he raarangi awhina.

prepare-ctg.sh:

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

I te waahanga e whai ake nei, ka tuuhia he tuhinga ki roto i tenei raarangi, ka tika kia whakarewahia i muri tonu i te tiimata o te miihini mariko. Ma tenei tuhinga ka whakauru i nga taurangi kaiwhakamahi e tika ana kia rehitatia ki te whirihora o Grafana me te whakaara ano i te tūmau tukutuku.

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

I muri i tenei, e toru nga mea hei mahi:
1) tāuta pōkai
2) rere Grafana i raro i te systemctl me te whakauru i te mono ClickHouse
3) hoatu te tuhinga setup.sh ki te rarangi whakarewatanga i muri tonu i te hurihanga o te miihini mariko.

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;

Ko nga mea katoa e toe ana ko te whakahaere i te Packer me te whakanoho i te ahua whakaputa ki te waahanga kua tohua. I te wa e hanga ana i tetahi miihini mariko, ka taea e koe te kowhiri hei kopae putunga, a, i muri i te whakarewatanga ka whiwhi koe i tetahi tūmau tukutuku Grafana kua rite.

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira
Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Rōpū tauira me te taurite

Ina whiwhi tatou i te ahua kōpae e taea ai e tatou te hanga i te maha o nga tūmau tukutuku Grafana rite, ka taea e tatou te hanga i tetahi roopu tauira. I runga i te papaarangi Yandex.Cloud, ko tenei kupu e pa ana ki te whakakotahitanga o nga miihini mariko he rite nga ahuatanga. I te wa e hanga ana i te roopu tauira, ka whirihorahia te tauira o nga miihini katoa i roto i tenei roopu, katahi ko nga ahuatanga o te roopu ake (hei tauira, te iti me te morahi o nga miihini kaha). Ki te kore e eke te nama o naianei ki enei paearu, ka tangohia e te roopu tauira ake nga miihini koretake, ka hanga ranei i nga mea hou i runga i tana ake ahua.

Hei waahanga o ta maatau mahi, ka hangahia e matou he roopu tauira o nga tūmau tukutuku ka puta mai i te ahua kōpae i hangaia i mua.

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Ko te mea tino whakamiharo ko te tatūnga roopu tauira whakamutunga. Ko te roopu whainga i roto i te whakaurunga me te Load Balancer ka awhina koe ki te whirihora i tetahi taurite L3 ki runga ake o nga miihini mariko o tenei roopu ma te paatene i nga paatene e rua.

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

I te wa e whakarite ana i te taurite, i whakatinanahia e ahau nga waahanga nui e rua:

  1. Naku i whakaae te taurite ki nga waka a nga kaiwhakamahi i runga i te tauranga 80 ka anga ki te tauranga 3000 o nga miihini mariko, kei te waahi tonu o Grafana.
  2. I whakarite ahau ki te tirotiro i te oranga o nga miihini ma te ping ki te tauranga 3000.

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Whakarāpopototanga paku

Ka mutu, i taea e matou te toha-a-ringa i nga hanganga tono e hiahiatia ana, a inaianei kei a matou he ratonga Grafana tino kaha. Me mohio noa koe ki te wahitau IP o te taurite hei urunga ki te tono me te kaihautu o te roopu ClickHouse kia utaina ai te huingararaunga ki roto.

Ko te ahua he wikitoria? Ae, wikitoria. Engari kei te rangirua tonu tetahi mea i ahau. Ko te mahi katoa i runga ake nei he maha nga hikoi a-ringa, kaore e taea te tauine; Kei te pirangi au ki te whakaaunoa mena ka taea. Koinei te waahanga e whai ake nei ka whakatapua.

Te whakakotahitanga o te whenua

Ka whakamahi ano matou i tetahi taputapu mai i te HashiCorp e kiia ana Terraform. Ka awhina koe ki te tuku i nga hanganga tono katoa ma te paatene o te paatene, i runga i te maha o nga taurangi kua paahitia e te kaiwhakamahi. Me tuhi he tunu ka taea te whakahaere i nga wa maha i nga waahanga rereke o nga kaiwhakamahi rereke.

Ko nga mahi katoa me Terraform ka heke ki te tuhi i tetahi konae whirihoranga (*.tf) me te hanga hanganga i runga i taua mea.

Ngā rerekētanga

I te timatanga o te konae, ka whakauruhia e matou nga taurangi e whakatau ana ki hea me pehea te whakatakotoranga o nga hanganga a meake nei.

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

Ko te tukanga tuku tono katoa ka heke iho ki te hanga whakaahua kōpae me te whakarite i enei taurangi. Me whakamarama au he aha ta ratou kawenga:

oauth_token — he tohu mo te uru ki te kapua. Ka taea te tiki e hono.
cloud_id — te tohu kapua kei hea ka tukuna e matou te tono
kōpaki_id - tohu tohu waahanga ka tukuna e matou te tono
service_account_id — kaitautuhi pūkete ratonga i te waahanga o te kapua.
image_id — te tautohu o te ahua kōpae i whiwhi ma te whakamahi i te Packer
ingoa kaiwhakamahi и kupuhipa — ingoa kaiwhakamahi me te kupuhipa kia uru atu ki nga papaunga raraunga me te tūmau tukutuku a Grafana
ingoa db — ingoa pātengi raraunga kei roto CH me MySQL tautau
ara_matua_iwi — ara ki te konae me to taviri ssh tūmatanui, ka taea e koe te hono ki raro i te ingoa ubuntu ki nga miihini mariko me nga tūmau tukutuku

Whakaritenga kaiwhakarato

Inaianei me whirihora e koe te kaiwhakarato Terraform - i to maatau, Yandex:

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

Ka kite koe kei te whakamahi matou i nga taurangi kua tautuhia i runga ake nei.

Whatunga me nga tautau

Inaianei ka hanga e matou he kupenga e korero ai nga huānga o a matou hanganga, e toru nga kupenga-roto (kotahi i ia rohe) me te whakaara i nga kohinga CH me 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
  }
}

Kei te kite koe, ko ia o nga tautau e rua he mea hanga he-kore ma te noho ki nga waahi e toru e waatea ana.

Tūmau tukutuku

Ko te ahua nei ka taea e maua te haere tonu i runga i te wairua kotahi, engari i raru ahau. I mua i tenei, i te tuatahi i whakaarahia e ahau he huinga MySQL me muri noa iho, ma te mohio ki tana ID, i kohia e ahau he ahua kōpae me te whirihoranga e hiahiatia ana, i tohua e ahau te kaihautu ki te roopu. Engari inaianei kaore matou e mohio ki te ID tautau i mua i te whakarewatanga o Terraform, tae atu ki te wa i hangaia ai te ahua. Na reira, me tahuri ahau ki nga mea e whai ake nei tinihanga.

Ma te whakamahi i te ratonga metadata a Amazon, ka tukuna e matou etahi tawhā ki te miihini mariko, ka whakaaehia, ka tukatukahia. Me haere te miihini ki te metadata kei muri i te kaihautu roopu MySQL me te ingoa-kupuhipa, i tohua e te kaiwhakamahi ki te konae Terraform, i muri i te tiimata. Me huri paku nga ihirangi o te konae setup.sh, ka rere i te wa e ka ana te miihini mariko.

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

Rōpū intance me te taurite

I te hanga ano i tetahi ahua kōpae hou, ka taea te taapiri i ta maatau konae mo Terraform.

Me tohu kei te pirangi tatou ki te whakamahi i tetahi ahua kōpae o mua:

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

Inaianei me hanga he roopu tauira:

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

He pai ki te aro ki te pehea i tukuna ai e matou ki te metadata cluster_uri, username и password. Ko enei ka tangohia e te miihini mariko i te tiimata ka tuu ki te whirihora a Grafana.

Kei te taurite.

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

He huka iti

He iti noa te toe. I muri i te tohatoha o nga hanganga, me haere koe ki te Grafana UI me te taapiri a-ringa i te kohinga CH (ko te ID me whiwhi tonu) hei Puna Raraunga. Engari e mohio ana a Terraform ki te ID tautau. Ma tatou e tuku ki a ia kia tutuki te kaupapa.

Me taapiri he kaiwhakarato hou - Grafana, ka hoatu ki a ia te wahitau IP o te kaiwawao hei kaihautu. Ko nga huringa katoa ka mahia e Terraform i runga i te miihini e whakatauhia ana e tana taurite ka tipu ki MySQL, na reira i runga i era atu miihini katoa.

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

Kia heru o tatou makawe

Me whakaatu te wahitau IP taurite me te kaihautu o te roopu 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"
}

Ka taea e koe te oma

Katoa! Kua reri ta matou konae whirihoranga, a ka taea e matou, ma te whakarite i nga taurangi, kii atu ki a Terraform ki te whakaara i nga mea katoa i whakaahuatia e matou i runga ake nei. Ko te tukanga katoa i mau ahau mo te 15 meneti.
I te mutunga ka kite koe i tetahi panui ataahua:

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

Na i roto i te kapua, ka kitea nga waahanga o te hanganga teitei:

Te tohatoha o nga ratonga tohatoha i Yandex.Cloud ma te whakamahi i a Grafana hei tauira

Me whakariterite nga hua

Inaianei, ma te whakamahi i a Grafana hei tauira, ka taea e ia o koutou te tuku tono me te hoahoanga kapua whanui i runga i te papaaho Yandex.Cloud. Ko nga taputapu awhina mai i HashiCorp penei i a Packer me Terraform ka awhina koe ki tenei. Ko te tumanako ka kitea e tetahi he whai hua tenei tuhinga :)

P.S. Kei raro nei ka taapirihia e ahau he hononga ki te putunga ka kitea e koe nga tohutao kua rite mo te Packer me te Terraform, nga kongakonga i hoatu e au ki tenei tuhinga.

putunga

Source: will.com

Tāpiri i te kōrero