Initial commit: Terraform проект для развертывания Grafana Loki на Proxmox

This commit is contained in:
Terraform Bot
2025-11-11 08:03:55 +00:00
commit 15deba2e9b
7 changed files with 641 additions and 0 deletions

243
README.md Normal file
View File

@@ -0,0 +1,243 @@
# Terraform: Grafana Loki на Proxmox
Этот проект Terraform автоматизирует развертывание виртуальной машины на Proxmox с установленными и настроенными **Grafana Loki** и **Promtail**.
## 📋 Описание
Проект создает полностью настроенную VM с:
- **Loki** - система агрегации логов (порт 3100)
- **Promtail** - агент для сбора логов (порт 9080)
- Автоматическая установка и настройка systemd сервисов
- Сбор системных логов из `/var/log/*.log`
## 🔧 Требования
### Локальные требования
- [Terraform](https://www.terraform.io/downloads.html) >= 1.0
- SSH ключ для доступа к VM (`~/.ssh/id_rsa` по умолчанию)
- Доступ к Proxmox API
### Требования к Proxmox
- Proxmox VE 6.x или 7.x
- API токен с правами для создания VM
- Ubuntu 20.04 шаблон с поддержкой cloud-init и DHCP
- Настроенное хранилище (по умолчанию `local-lvm`)
- Сетевой мост (по умолчанию `vmbr0`)
## 🚀 Быстрый старт
### 1. Клонируйте репозиторий
```bash
git clone https://git.mscsrv.ru/your-username/terraform-grafana-loki.git
cd terraform-grafana-loki
```
### 2. Настройте переменные
Создайте файл `terraform.tfvars` на основе примера:
```bash
cp terraform.tfvars.example terraform.tfvars
```
Отредактируйте `terraform.tfvars` и заполните необходимые значения:
```hcl
proxmox_api_url = "https://your-proxmox-host:8006/api2/json"
proxmox_api_token_id = "terraform-user@pve!token-id"
proxmox_api_token_secret = "your-secret-token"
target_node = "pve"
vm_template = "ubuntu-20.04-template"
```
### 3. Инициализируйте Terraform
```bash
terraform init
```
### 4. Проверьте план развертывания
```bash
terraform plan
```
### 5. Примените конфигурацию
```bash
terraform apply
```
Подтвердите создание ресурсов, введя `yes`.
### 6. Получите информацию о созданной VM
После успешного развертывания Terraform выведет:
- IP адрес VM
- URL для доступа к Loki
- URL для доступа к Promtail
- Команду для SSH подключения
```bash
terraform output
```
## 📁 Структура проекта
```
terraform-grafana-loki/
├── providers.tf # Конфигурация провайдеров Terraform
├── variables.tf # Определение переменных
├── main.tf # Основной код: ресурс VM и provisioners
├── outputs.tf # Выходные данные (IP, URLs)
├── terraform.tfvars.example # Пример файла с переменными
├── .gitignore # Исключения для Git
└── README.md # Документация проекта
```
## ⚙️ Переменные
### Обязательные переменные
| Переменная | Описание |
|-----------|----------|
| `proxmox_api_url` | URL адрес Proxmox API |
| `proxmox_api_token_id` | ID токена для API |
| `proxmox_api_token_secret` | Секретный токен |
### Опциональные переменные
| Переменная | Значение по умолчанию | Описание |
|-----------|----------------------|----------|
| `target_node` | `pve` | Имя узла Proxmox |
| `vm_name` | `grafana-loki` | Имя VM |
| `vm_template` | `ubuntu-20.04-template` | Шаблон для клонирования |
| `vm_cores` | `2` | Количество CPU ядер |
| `vm_memory` | `4096` | Память в MB |
| `vm_disk_size` | `40G` | Размер диска |
| `loki_version` | `2.9.1` | Версия Loki |
| `loki_port` | `3100` | HTTP порт Loki |
| `promtail_port` | `9080` | HTTP порт Promtail |
## 🔐 Настройка Proxmox API токена
1. Войдите в веб-интерфейс Proxmox
2. Перейдите в **Datacenter****Permissions****API Tokens**
3. Создайте новый токен для пользователя (например, `terraform-user@pve`)
4. Сохраните Token ID и Secret
5. Убедитесь, что у пользователя есть необходимые права (PVEVMAdmin или Administrator)
## 🖥️ Подготовка Ubuntu шаблона
Шаблон VM должен соответствовать следующим требованиям:
1. Ubuntu 20.04 LTS (или новее)
2. Установлен и настроен cloud-init
3. Настроено получение IP через DHCP
4. Включен qemu-guest-agent
5. Добавлен ваш публичный SSH ключ
## 📊 Проверка работы сервисов
После развертывания подключитесь к VM:
```bash
ssh ubuntu@<VM_IP>
```
Проверьте статус сервисов:
```bash
# Статус Loki
sudo systemctl status loki
# Статус Promtail
sudo systemctl status promtail
# Логи Loki
sudo journalctl -u loki -f
# Логи Promtail
sudo journalctl -u promtail -f
```
Проверьте доступность Loki API:
```bash
curl http://localhost:3100/ready
curl http://localhost:3100/metrics
```
## 🔍 Интеграция с Grafana
Для визуализации логов в Grafana:
1. Установите Grafana (отдельно или на той же VM)
2. Добавьте Loki как Data Source:
- URL: `http://<VM_IP>:3100`
- Access: Server (по умолчанию)
3. Создайте дашборды для визуализации логов
## 🗑️ Удаление ресурсов
Для удаления созданной VM:
```bash
terraform destroy
```
## 📝 Примечания
- VM создается с использованием DHCP, IP адрес назначается автоматически
- Loki хранит данные локально в `/var/loki/`
- Promtail собирает логи из `/var/log/*.log`
- Оба сервиса настроены на автоматический запуск при старте системы
## 🐛 Устранение неполадок
### Ошибка подключения SSH
Убедитесь, что:
- SSH ключ правильно настроен в шаблоне VM
- Путь к приватному ключу корректен (`ssh_private_key_path`)
- VM получила IP адрес (проверьте в Proxmox)
### Loki не запускается
Проверьте логи:
```bash
sudo journalctl -u loki -n 100
```
Проверьте конфигурацию:
```bash
cat /etc/loki-config.yaml
```
### Promtail не отправляет логи
Проверьте подключение к Loki:
```bash
curl http://localhost:3100/ready
```
Проверьте конфигурацию Promtail:
```bash
cat /etc/promtail-config.yaml
```
## 📚 Дополнительные ресурсы
- [Документация Grafana Loki](https://grafana.com/docs/loki/latest/)
- [Документация Promtail](https://grafana.com/docs/loki/latest/clients/promtail/)
- [Terraform Proxmox Provider](https://registry.terraform.io/providers/Telmate/proxmox/latest/docs)
## 📄 Лицензия
Этот проект распространяется свободно для использования и модификации.
## 🤝 Вклад
Предложения и улучшения приветствуются! Создавайте Issue или Pull Request.