182 lines
5.4 KiB
HCL
182 lines
5.4 KiB
HCL
|
|
resource "proxmox_vm_qemu" "grafana_loki" {
|
|
name = var.vm_name
|
|
target_node = var.target_node
|
|
clone = var.vm_template
|
|
cores = var.vm_cores
|
|
memory = var.vm_memory
|
|
sockets = 1
|
|
onboot = true
|
|
scsihw = "virtio-scsi-pci"
|
|
bootdisk = "scsi0"
|
|
boot = "order=scsi0"
|
|
agent = 1
|
|
|
|
network {
|
|
model = "virtio"
|
|
bridge = var.vm_network_bridge
|
|
}
|
|
|
|
disk {
|
|
size = var.vm_disk_size
|
|
type = "scsi"
|
|
storage = var.vm_storage
|
|
storage_type = "lvm"
|
|
iothread = 1
|
|
discard = "on"
|
|
}
|
|
|
|
ciuser = var.vm_user
|
|
ipconfig0 = "ip=dhcp"
|
|
|
|
lifecycle {
|
|
ignore_changes = [ipconfig0]
|
|
}
|
|
|
|
provisioner "remote-exec" {
|
|
connection {
|
|
type = "ssh"
|
|
host = self.default_ipv4_address
|
|
user = var.vm_user
|
|
private_key = file(var.ssh_private_key_path)
|
|
timeout = "5m"
|
|
}
|
|
|
|
inline = [
|
|
# Обновление системы и установка необходимых пакетов
|
|
"sudo apt-get update",
|
|
"sudo apt-get install -y wget curl apt-transport-https software-properties-common unzip",
|
|
|
|
# Установка Grafana Loki
|
|
"wget https://github.com/grafana/loki/releases/download/v${var.loki_version}/loki-linux-amd64.zip -O /tmp/loki.zip",
|
|
"unzip /tmp/loki.zip -d /tmp/",
|
|
"sudo mv /tmp/loki-linux-amd64 /usr/local/bin/loki",
|
|
"sudo chmod +x /usr/local/bin/loki",
|
|
|
|
# Создание директорий для Loki
|
|
"sudo mkdir -p /var/loki/index /var/loki/cache /var/loki/chunks",
|
|
"sudo chown -R ${var.vm_user}:${var.vm_user} /var/loki",
|
|
|
|
# Создание конфигурации Loki
|
|
"cat <<'LOKIEOF' | sudo tee /etc/loki-config.yaml",
|
|
"auth_enabled: false",
|
|
"",
|
|
"server:",
|
|
" http_listen_port: ${var.loki_port}",
|
|
"",
|
|
"ingester:",
|
|
" lifecycler:",
|
|
" ring:",
|
|
" kvstore:",
|
|
" store: inmemory",
|
|
" replication_factor: 1",
|
|
" chunk_idle_period: 5m",
|
|
" max_chunk_age: 1h",
|
|
" chunk_target_size: 1048576",
|
|
" max_transfer_retries: 0",
|
|
"",
|
|
"schema_config:",
|
|
" configs:",
|
|
" - from: 2020-10-24",
|
|
" store: boltdb-shipper",
|
|
" object_store: filesystem",
|
|
" schema: v11",
|
|
" index:",
|
|
" prefix: index_",
|
|
" period: 24h",
|
|
"",
|
|
"storage_config:",
|
|
" boltdb_shipper:",
|
|
" active_index_directory: /var/loki/index",
|
|
" cache_location: /var/loki/cache",
|
|
" shared_store: filesystem",
|
|
" filesystem:",
|
|
" directory: /var/loki/chunks",
|
|
"",
|
|
"limits_config:",
|
|
" enforce_metric_name: false",
|
|
" reject_old_samples: true",
|
|
" reject_old_samples_max_age: 168h",
|
|
"LOKIEOF",
|
|
|
|
# Создание systemd сервиса для Loki
|
|
"cat <<'LOKISVCEOF' | sudo tee /etc/systemd/system/loki.service",
|
|
"[Unit]",
|
|
"Description=Loki Log Aggregation System",
|
|
"After=network.target",
|
|
"",
|
|
"[Service]",
|
|
"Type=simple",
|
|
"User=${var.vm_user}",
|
|
"ExecStart=/usr/local/bin/loki -config.file=/etc/loki-config.yaml",
|
|
"Restart=on-failure",
|
|
"RestartSec=5s",
|
|
"",
|
|
"[Install]",
|
|
"WantedBy=multi-user.target",
|
|
"LOKISVCEOF",
|
|
|
|
# Запуск Loki
|
|
"sudo systemctl daemon-reload",
|
|
"sudo systemctl enable loki",
|
|
"sudo systemctl start loki",
|
|
|
|
# Установка Promtail
|
|
"wget https://github.com/grafana/loki/releases/download/v${var.loki_version}/promtail-linux-amd64.zip -O /tmp/promtail.zip",
|
|
"unzip /tmp/promtail.zip -d /tmp/",
|
|
"sudo mv /tmp/promtail-linux-amd64 /usr/local/bin/promtail",
|
|
"sudo chmod +x /usr/local/bin/promtail",
|
|
|
|
# Создание конфигурации Promtail
|
|
"cat <<'PROMTAILEOF' | sudo tee /etc/promtail-config.yaml",
|
|
"server:",
|
|
" http_listen_port: ${var.promtail_port}",
|
|
" grpc_listen_port: 0",
|
|
"",
|
|
"positions:",
|
|
" filename: /var/log/promtail-positions.yaml",
|
|
"",
|
|
"clients:",
|
|
" - url: http://localhost:${var.loki_port}/loki/api/v1/push",
|
|
"",
|
|
"scrape_configs:",
|
|
" - job_name: system",
|
|
" static_configs:",
|
|
" - targets:",
|
|
" - localhost",
|
|
" labels:",
|
|
" job: varlogs",
|
|
" __path__: /var/log/*.log",
|
|
"PROMTAILEOF",
|
|
|
|
# Создание systemd сервиса для Promtail
|
|
"cat <<'PROMTAILSVCEOF' | sudo tee /etc/systemd/system/promtail.service",
|
|
"[Unit]",
|
|
"Description=Promtail Log Collector",
|
|
"After=network.target loki.service",
|
|
"",
|
|
"[Service]",
|
|
"Type=simple",
|
|
"User=${var.vm_user}",
|
|
"ExecStart=/usr/local/bin/promtail -config.file=/etc/promtail-config.yaml",
|
|
"Restart=on-failure",
|
|
"RestartSec=5s",
|
|
"",
|
|
"[Install]",
|
|
"WantedBy=multi-user.target",
|
|
"PROMTAILSVCEOF",
|
|
|
|
# Запуск Promtail
|
|
"sudo systemctl daemon-reload",
|
|
"sudo systemctl enable promtail",
|
|
"sudo systemctl start promtail",
|
|
|
|
# Проверка статуса сервисов
|
|
"echo '=== Loki Status ==='",
|
|
"sudo systemctl status loki --no-pager",
|
|
"echo '=== Promtail Status ==='",
|
|
"sudo systemctl status promtail --no-pager"
|
|
]
|
|
}
|
|
}
|