Ndewo, unu niile! Dịka akụkụ nke ọrụ nkuzi m, enyochara m ike nke ikpo okwu igwe ojii dị ka
Kedu ihe ị chọrọ ịnata?
Mgbe ịmalitere igwe mebere ya na sava weebụ, ị nwere ike ịga na onye ọbịa ya wee nweta UI mara mma, kọwaa ọdụ data dị ka isi mmalite maka ọrụ ọzọ, mepụta dashboards na eserese.
Ụdị nke bụ isi nwere otu ndọghachi azụ dị ịrịba ama - ọ naghị anabata mmejọ ma ọlị. Ya bụ, ọrụ niile nke ngwa ahụ dabere na ike nke otu igwe mebere. Ọ bụrụ na ọ jụrụ ma ọ bụ mmadụ 10 meghere UI n'otu oge, nsogbu ga-ebilite.
Enwere ike idozi ha n'ụzọ dị mfe: naanị ị ga-achọ ... wepụta ọtụtụ igwe mebere ya na sava weebụ wee tinye ha n'okpuru ihe nhazi L3. Mana ọ bụghị ihe niile doro anya ebe a. Grafana na-echekwa ntọala onye ọrụ (ụzọ na ọdụ data, dashboards, graphs, wdg) ozugbo na diski nke igwe mebere ya. Ya mere, ọ bụrụ na anyị agbanwee ụfọdụ ntọala na UI, mgbanwe ndị a ga-egosipụta naanị na igwe mebere ebe onye nhazi zitere anyị. Nke a ga-eduga na ntọala na-ekwekọghị ekwekọ maka ngwa anyị, na-ebute nsogbu na mwepụta na ojiji.
Ebe nchekwa data ọzọ ga-abịa napụta, dịka ọmụmaatụ, MySQL ma ọ bụ otu ya. Anyị na-agwa Grafana na ọ ga-echekwa ntọala onye ọrụ na nchekwa data "mapụtara" a. Mgbe nke ahụ gasịrị, ọ ga-ezuru ịkọwapụta ụzọ na nchekwa data a otu ugboro na igwe ọ bụla, ma dezie ntọala ndị ọrụ ndị ọzọ na igwe ọ bụla nke mebere; ha ga-agbatị ruo ndị ọzọ.
Nke a bụ eserese nke akụrụngwa ngwa ikpeazụ:
Ka anyị mụta iji aka anyị ebuli elu
MySQL na ClickHouse
Tupu itinye ngwa dị otú ahụ na ịpị bọtịnụ, ọ dị mkpa ịmụta otú e si edozi nke ọ bụla n'ime akụkụ ya ma jikọta ha na ibe ha.
Ebe a Yandex.Cloud ga-enyere anyị aka, nke na-enye L3 balancers, ClickHouse na MySQL dị ka ọrụ jikwaa. Onye ọrụ naanị kwesịrị ịkọwapụta paramita ma chere ruo mgbe ikpo okwu na-eweta ihe niile n'usoro ọrụ.
Edebanyela m aha, mepụta igwe ojii na akaụntụ ịkwụ ụgwọ. Mgbe nke ahụ gasịrị, agara m na ígwé ojii wee guzobe ụyọkọ MySQL na ClickHouse nwere obere ntọala. M chere ruo mgbe ha malitere ịrụsi ọrụ ike.
I kwesịkwara icheta ịmepụta nchekwa data na ụyọkọ ọ bụla wee hazie ohere ịnweta ya site na iji nbanye na paswọọdụ. Agaghị m abanye nkọwa ebe a - ihe niile doro anya na interface ahụ.
Nkọwa na-abụghị nke doro anya bụ na ọdụ data ndị a nwere ọtụtụ ndị ọbịa, nke na-eme ka ha nwee ndidi. Agbanyeghị, Grafana chọrọ kpọmkwem otu nnabata maka nchekwa data ọ bụla ọ na-arụ ọrụ. Ogologo ọgụgụ isi c-<cluster_id>.rw.mdb.yandexcloud.net
Edebere ya na onye nnabata nọ n'ọrụ ugbu a nke ụyọkọ nwere ID kwekọrọ. Nke a bụ ihe anyị ga-enye Grafana.
sava weebụ
Ugbu a ọ dịịrị sava weebụ. Ka anyị jiri Linux bulie igwe mebere oge niile wee jiri aka hazie Grafana na ya.
Ka anyị jikọọ site na ssh wee wụnye ngwugwu ndị dị mkpa.
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
Mgbe nke ahụ gasịrị, ka anyị mee Grafana n'okpuru systemctl wee wụnye ngwa mgbakwunye maka ịrụ ọrụ na ClickHouse (ee, enyeghị ya na ngwugwu bụ isi).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Nke ahụ bụ ya, mgbe nke ahụ gasịrị jiri iwu dị mfe
sudo service grafana-server start
anyị ga-amalite sava weebụ. Ugbu a ị nwere ike tinye adreesị IP mpụga nke igwe mebere na ihe nchọgharị ahụ, kọwaa ọdụ ụgbọ mmiri 3000 wee hụ Grafana UI mara mma.
Mana emela ngwa ngwa, tupu ịtọlite Grafana, ị ga-echeta ịgwa ya ụzọ MySQL iji chekwaa ntọala ahụ.
Nhazi niile nke sava weebụ Grafana dị na faịlụ ahụ /etc/grafana/grafana.ini
. Ahịrị achọrọ dị ka nke a:
;url =
Anyị na-edobe onye ọbịa na ụyọkọ MySQL. Otu faịlụ ahụ nwere nbanye na paswọọdụ maka ịnweta Grafana na foto dị n'elu, nke na ndabara bụ ha abụọ admin
.
Ị nwere ike iji iwu 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
Oge erugo ịmalitegharị sava weebụ!
sudo service grafana-server restart
Ugbu a na Grafana UI anyị ga-akọwapụta ClickHouse dị ka DataSource.
Enwere m ike iji ntọala ndị a nweta nhazi ọrụ:
Ekwuru m dị ka URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
All! Anyị nwere otu igwe mebere na-arụ ọrụ nwere sava weebụ ejikọrọ na CH na MySQL. Ị nwere ike bulitelarị dataset na ClickHouse wee wuo dashboards. Agbanyeghị, anyị enwetabeghị ebumnuche anyị ma ebubata akụrụngwa zuru oke.
Ihe ngwugwu
Yandex.Cloud na-enye gị ohere ịmepụta ihe oyiyi diski nke igwe mebere nke dị adị, na ndabere ya - ọnụọgụ igwe ọ bụla yiri ibe ya. Nke a bụ kpọmkwem ihe anyị ga-eji. Iji chịkọta onyonyo a nke ọma, were ngwa
Faịlụ json anyị ga-enwe ngọngọ abụọ: ndị na-ewu ụlọ na ndị na-enye ihe. Mgbochi nke mbụ na-akọwa parampat nke ihe oyiyi ahụ n'onwe ya dị ka ihe, na ngọngọ nke abụọ na-akọwa ntụziaka maka imeju ya na ọdịnaya dị mkpa.
Builders
{
"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"
}
],
...
}
Na ndebiri a, ịkwesịrị ịtọ njirimara nke ngalaba na ígwé ojii ebe ịchọrọ ịmepụta ihe oyiyi ahụ, yana ụzọ faịlụ ahụ nwere igodo sitere na akaụntụ ọrụ emebere na ngalaba a. Ị nwere ike ịgụkwu gbasara ịmepụta akaụntụ ọrụ na igodo n'ụdị faịlụ na ngalaba kwekọrọ
Nhazi a na-ekwu na a ga-ewu ihe oyiyi diski ahụ dabere na ikpo okwu ubuntu-1804-lts
, etinyere na ngalaba onye ọrụ kwesịrị ekwesị na ezinụlọ ihe oyiyi GRAFANA
n'okpuru aha grafana-{{timestamp}}
.
Ndị na-enye ihe
Ugbu a na-abịa akụkụ na-adọrọ mmasị nke nhazi ahụ. Ọ ga-akọwa usoro nke omume ga-mkpa ka e mere na mebere igwe tupu kefriza ya ala n'ime a disk oyiyi.
{
...,
"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"
]
}
]
}
Ebe a na-ekewa omume niile n'ime usoro atọ. Na ọkwa nke mbụ, a na-eme ihe odide dị mfe nke na-emepụta ndekọ aha inyeaka.
kwadebe-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
N'oge na-esote, anyị na-edobe edemede na ndekọ a, nke ga-adị mkpa ịmalite ozugbo mgbe ịmalitere igwe mebere. Edemede a ga-etinye mgbanwe ndị ọrụ chọrọ ka edebanye aha na nhazi Grafana wee malitegharịa sava weebụ.
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
Mgbe nke a gasịrị, e nwere ihe atọ fọdụrụ ime:
1) tinye ngwugwu
2) Gbaa Grafana n'okpuru systemctl wee wụnye ngwa mgbakwunye ClickHouse
3) tinye setup.sh script na ntinye kwụ n'ahịrị ozugbo agbanyechara igwe mebere.
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;
Ugbu a naanị ihe fọdụrụ bụ ịgba ọsọ Packer wee nweta onyonyo mmepụta etinye na ngalaba akọwapụtara. Mgbe ị na-eke igwe mebere, ị nwere ike họrọ ya dị ka diski buut na mgbe ebidochara ị ga-enweta sava weebụ Grafana dị njikere.
Otu atụ na balancer
Ozugbo anyị nwere onyonyo diski nke na-enye anyị ohere ịmepụta ọtụtụ sava weebụ Grafana, anyị nwere ike ịmepụta otu ihe atụ. Na ikpo okwu Yandex.Cloud, okwu a na-ezo aka na njikọ nke igwe mebere nke nwere otu njirimara. Mgbe ị na-eke otu ihe atụ, a na-ahazi ụdị nke igwe niile dị na otu a, wee mara njirimara nke otu n'onwe ya (dịka ọmụmaatụ, nke kacha nta na ọnụ ọgụgụ igwe na-arụ ọrụ). Ọ bụrụ na ọnụ ọgụgụ dị ugbu a emezughị njirisi ndị a, mgbe ahụ, otu ihe atụ n'onwe ya ga-ewepụ igwe ndị na-adịghị mkpa ma ọ bụ mepụta ndị ọhụrụ na oyiyi nke ya.
Dị ka akụkụ nke ọrụ anyị, anyị ga-emepụta otu ihe atụ nke sava weebụ nke a ga-esi na ihe oyiyi diski emepụtara na mbụ.
Ihe dị ịrịba ama bụ ntọlite otu ihe atụ ikpeazụ. Otu ebumnuche na njikọta na Load Balancer ga-enyere gị aka ịhazi ihe nkwụnye L3 n'elu igwe mebere nke otu a site na ịpị bọtịnụ ole na ole.
Mgbe m na-edozi balancer, etinyere m isi ihe abụọ dị mkpa:
- Emere m ka onye nhazi ahụ nabata okporo ụzọ onye ọrụ na ọdụ ụgbọ mmiri 80 wee bugharịa ya na ọdụ ụgbọ mmiri 3000 nke igwe mebere, kpọmkwem ebe Grafana bi.
- Etinyere m ịlele ịdị mma nke igwe site na ịpịnye ha na ọdụ ụgbọ mmiri 3000.
Obere nchịkọta
N'ikpeazụ, anyị nwere ike iji aka bufee akụrụngwa ngwa achọrọ, ma ugbu a anyị nwere ọrụ Grafana na-agbanwe agbanwe. Naanị ị ga-achọ ịma adreesị IP nke onye na-agbazinye ihe dị ka ntinye ntinye na ngwa na onye ọbịa nke ụyọkọ ClickHouse iji buo dataset n'ime ya.
Ọ ga-adị ka mmeri? Ee, mmeri. Mana o nwere ihe ka na-agbagwoju m anya. Usoro niile dị n'elu chọrọ ọtụtụ usoro ntuziaka na ọ nweghị ike ọ bụla; Ọ ga-amasị m ịmegharị ya ma ọ bụrụ na ọ ga-ekwe omume. Nke a bụ ihe a ga-etinye na ngalaba na-esote.
Ntinye terraform
Anyị ga-eji ngwa HashiCorp akpọrọ ọzọ
Ọrụ niile na Terraform na-agbadata ide faịlụ nhazi (*.tf
) na imepụta akụrụngwa dabere na ya.
Ihe dịgasị iche iche
Na mmalite nke faịlụ ahụ, anyị ga-agụnye mgbanwe ndị na-ekpebi ebe na otu a ga-esi tinye akụrụngwa n'ọdịnihu.
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>"
}
Usoro ntinye ngwa niile ga-agbadata iji wuo ihe oyiyi diski na ịtọ mgbanwe ndị a. Ka m kọwaara ha ihe kpatara ya:
oauth_token - akara maka ịnweta igwe ojii. Enwere ike nweta ya
ígwé ojii_id - njirimara igwe ojii ebe anyị ga-ebuga ngwa ahụ
folder_id - njirimara ngalaba ebe anyị ga-ebuga ngwa ahụ
service_account_id - njirimara akaụntụ ọrụ na ngalaba nke igwe ojii kwekọrọ.
image_id - njirimara nke onyonyo diski enwetara site na iji Packer
aha njirimara и password - aha njirimara na paswọọdụ iji nweta ma ọdụ data yana sava weebụ Grafana
db aha - aha nchekwa data n'ime ụyọkọ CH na MySQL
ụzọ_ igodo ọha - ụzọ faịlụ na igodo ssh ọha gị, nke ị nwere ike iji jikọọ n'okpuru aha ubuntu
ka mebere igwe nwere sava weebụ
Nhazi onye na-eweta
Ugbu a ịkwesịrị ịhazi onye na-eweta Terraform - n'ọnọdụ anyị, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Ị ga-achọpụta na ebe a anyị na-eji mgbanwe ndị akọwapụtara n'elu.
Netwọk na ụyọkọ
Ugbu a, anyị ga-emepụta netwọk nke akụkụ nke akụrụngwa anyị ga-ekwurịta okwu, subnets atọ (otu na mpaghara ọ bụla) ma bulie ụyọkọ CH na 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
}
}
Dịka ị na-ahụ, nke ọ bụla n'ime ụyọkọ abụọ a na-emepụta nke ọma na-anabataghị mmejọ site na itinye ya na mpaghara atọ dị.
Sava webụ
Ọ ga-adị ka anyị nwere ike ịnọgide n'otu mmụọ ahụ, ma enwere m ihe isi ike. Tupu nke a, m bu ụzọ bulie ụyọkọ MySQL na naanị mgbe nke ahụ gasịrị, n'ịmara ID ya, ana m achịkọta ihe oyiyi diski na nhazi achọrọ, ebe m na-akọwapụta onye ọbịa na ụyọkọ ahụ. Ma ugbu a, anyị amaghị ụyọkọ ID tupu ịmalite Terraform, gụnyere n'oge a na-ewu ihe oyiyi ahụ. Ya mere, m ga-amalite na-esonụ
Iji ọrụ metadata nke Amazon, anyị ga-ebufe ụfọdụ paramita na igwe mebere, nke ọ ga-anabata ma hazie ya. Anyị chọrọ igwe ka ọ gaa na metadata n'azụ ụyọkọ MySQL na aha njirimara-paswọọdụ, nke onye ọrụ akọwapụtara na faịlụ Terraform, mgbe ịmalitechara. Ka anyị gbanwee ọdịnaya nke faịlụ ahụ ntakịrị setup.sh
, nke na-agba ọsọ mgbe igwe mebere agbanyere.
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
Intance otu na balancer
N'ịbụ onye wughachiri ihe oyiyi diski ọhụrụ, anyị nwere ike tinye faịlụ anyị maka Terraform.
Ka anyị gosi na anyị chọrọ iji onyonyo diski dị adị:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Ugbu a, ka anyị mepụta otu ihe atụ:
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"
}
}
Ọ bara uru ịṅa ntị na otu anyị siri nyefee ya na metadata cluster_uri
, username
и password
. Ọ bụ ndị a ka igwe mebere ga-apụta na mmalite wee tinye na nhazi Grafana.
Ọ dịịrị onye nhazi.
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
}
}
}
}
Obere shuga
Ọ dị naanị ntakịrị. Mgbe ebubachara akụrụngwa, ị ga-aga na Grafana UI wee tinye aka na ụyọkọ CH (ID nke a ka kwesịrị inweta) dị ka isi mmalite data. Mana Terraform maara NJ ụyọkọ. Ka anyị nye ya ikike ime ka okwu ahụ mezuo.
Ka anyị gbakwunye onye na-eweta ọhụrụ - Grafana, ma nye ya adreesị IP onye na-eme ihe nleba anya dị ka onye ọbịa. Mgbanwe niile Terraform na-eme na igwe ebe onye nhazi ya na-ekpebi ga-eto na MySQL, ya mere na igwe ndị ọzọ niile.
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"
}
Ka anyị kpaa ntutu isi anyị
Ka anyị gosipụta adreesị IP nkwụnye ego yana onye ọbịa nke ụyọkọ 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"
}
Nwere ike ịgba ọsọ
All! Faịlụ nhazi anyị dị njikere ma anyị nwere ike, site na ịtọ mgbanwe ndị ahụ, gwa Terraform ka ọ bulie ihe niile anyị kọwara n'elu. Usoro ahụ niile were m ihe dị ka nkeji iri na ise.
Na njedebe ị nwere ike ịhụ ozi mara mma:
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 n'ígwé ojii ahụ, a ga-ahụ ihe ndị dị na akụrụngwa ewelitere:
Ka anyị chịkọta ihe ọ rụpụtara
Ugbu a, iji Grafana dị ka ọmụmaatụ, onye ọ bụla n'ime gị nwere ike ibuga ngwa nwere ihe owuwu igwe ojii na-agbasa na ikpo okwu Yandex.Cloud. Ngwa enyemaka sitere na HashiCorp dị ka Packer na Terraform nwere ike inyere gị aka na nke a. Enwere m olileanya na mmadụ ga-ahụ na akụkọ a bara uru :)
P.S. N'okpuru ebe a, m ga-etinye njikọ na ebe nchekwa ebe ị nwere ike ịchọta ntụziaka edozi maka Packer na Terraform, nke m nyere n'isiokwu a.
isi: www.habr.com