Migrasi ke Grafana Alloy dari Promtail dan Agent

Foto oleh Sm faysal via Wikimedia Commons (CC BY-SA 4.0)
Ya. Promtail memasuki dukungan jangka panjang pada Februari 2025 dan mencapai akhir masa pakai pada 2 Maret 2026. Setelah tanggal itu ia tidak menerima perbaikan bug atau patch keamanan. Pengganti yang direkomendasikan Grafana adalah Grafana Alloy, dan ia menyediakan jalur konversi otomatis melalui perintah alloy convert.
Grafana Alloy adalah penerus Grafana Agent dan merupakan distribusi lengkap OpenTelemetry Collector, 100% kompatibel dengan OTLP. Grafana Agent (Static, Flow, dan Operator) mencapai akhir masa pakai pada 1 November 2025, dan semua pengembangan fitur baru kini hanya terjadi di Alloy. Alloy mempertahankan model komponen dan sintaks konfigurasi Agent Flow, sehingga migrasi dari Flow sebagian besar hanya penggantian nama.
Gunakan subperintah convert bawaan: jalankan alloy convert dengan --source-format=promtail dan path --output yang mengarah ke file konfigurasi target Anda. Konverter menargetkan skema Promtail v2.8.x dan bekerja secara best-effort, mencetak diagnostik untuk apa pun yang tidak bisa dipetakan dengan bersih. Tinjau outputnya dan selesaikan diagnostik itu secara manual sebelum memulai ulang layanan.
Alloy menggunakan sintaks konfigurasi berbasis komponen yang berasal dari nama River, bahasa mirip HCL. Alih-alih blok pipeline YAML, Anda mendeklarasikan komponen bernama dan menyambungkannya dengan argumen forward_to, yang mengarahkan output satu komponen ke receiver komponen lain. Graf referensi yang dihasilkan adalah pipeline itu sendiri.
Ya. Karena Alloy adalah distribusi OpenTelemetry Collector, satu proses menangani log, metrik, trace, dan profil. Namespace komponen otelcol.* mencakup receiver, processor, dan exporter OTLP, dan berinteroperasi dengan komponen Loki dan Prometheus native dalam file konfigurasi yang sama, sehingga Anda dapat mengonsolidasikan beberapa agent menjadi satu.

Foto oleh Sm faysal via Wikimedia Commons (CC BY-SA 4.0)
Ringkasan Utama
Grafana Alloy adalah distribusi OpenTelemetry Collector milik Grafana dan satu-satunya penerus yang didukung: Grafana Agent mencapai akhir masa pakai pada 1 November 2025 dan Promtail pada 2 Maret 2026. Migrasikan dengan perintah bawaan alloy convert, lalu tulis ulang pipeline sebagai komponen yang saling terhubung menggunakan sintaks konfigurasi Alloy.
Saya menjalankan sekumpulan kecil layanan di VPS yang saya-hosting sendiri, dan selama bertahun-tahun solusi logging-nya adalah Promtail yang membaca file Docker dan mengirimkannya ke Loki. Cerita itu sudah berakhir. Grafana menggabungkan Promtail, Grafana Agent Static, dan Grafana Agent Flow menjadi satu collector bernama Alloy, lalu menetapkan tanggal akhir masa pakai untuk semua yang digantikannya. Jika Anda masih di Promtail atau Agent, Anda menjalankan perangkat lunak tanpa dukungan yang waktunya terbatas.
Kabar baiknya: Alloy bukan penulisan ulang dari nol. Ini adalah distribusi OpenTelemetry Collector sungguhan yang sepenuhnya kompatibel dengan OTLP, sehingga biner yang sama kini menangani log, metrik, trace, dan profil melalui satu konfigurasi. Tulisan ini adalah migrasi yang benar-benar saya lakukan — perkakasnya, komponennya, dan di mana konverter otomatis meninggalkan Anda untuk menyelesaikan pekerjaan secara manual.
Tenggat waktu adalah pemaksanya. Grafana Agent (Static, Flow, dan Operator) mencapai akhir masa pakai pada 1 November 2025, artinya tidak ada lagi patch keamanan atau perbaikan bug. Promtail memasuki dukungan jangka panjang pada Februari 2025 dan mencapai akhir masa pakai pada 2 Maret 2026. Semua pengembangan fitur baru hanya terjadi di Alloy. Di luar tenggat waktu, keuntungan sebenarnya adalah konsolidasi: alih-alih Promtail untuk log ditambah Collector terpisah untuk trace OTLP, satu proses Alloy menjalankan seluruh pipeline telemetri dengan satu bahasa konfigurasi.
Jangan anggap ini sebagai pemeliharaan opsional. Setelah sebuah komponen mencapai akhir masa pakai, satu CVE dari hulu pada dependensi Go tidak akan mendapat patch. Menjalankan Promtail setelah Maret 2026 adalah keputusan keamanan, bukan kenyamanan.
Promtail adalah YAML deklaratif. Alloy menggunakan sintaks konfigurasi yang awalnya bernama River — bahasa mirip HCL yang dibangun di sekitar komponen. Sebuah komponen adalah blok bernama yang melakukan satu tugas: membaca file, relabel, batch, menulis ke backend. Setiap komponen mengekspos argumen yang Anda atur dan nilai ekspor yang dikonsumsi komponen lain. Anda menyambungkannya menjadi pipeline dengan argumen forward_to, yang mengarahkan output satu komponen ke receiver komponen berikutnya. Graf referensi itulah pipeline-nya; tidak ada bagian pipelines terpisah seperti pada YAML Collector hulu.
// alloy: a minimal Loki logging pipeline
// discover local files, process, then write to Loki
local.file_match "applogs" {
path_targets = [{"__path__" = "/var/log/app/*.log", "job" = "app"}]
}
loki.source.file "applogs" {
targets = local.file_match.applogs.targets
forward_to = [loki.process.parse.receiver]
}
loki.process "parse" {
stage.json {
expressions = { level = "level", ts = "timestamp" }
}
stage.labels {
values = { level = "" }
}
forward_to = [loki.write.default.receiver]
}
loki.write "default" {
endpoint {
url = "http://loki:3100/loki/api/v1/push"
}
}Jangan menerjemahkan konfigurasi lama Anda secara manual. Alloy menyertakan subperintah convert yang membaca file Promtail, Agent Static, atau Agent Flow lama Anda dan menghasilkan sintaks Alloy yang setara. Untuk Promtail, ia menargetkan skema v2.8.x. Konverter bersifat best-effort: ia mencetak diagnostik untuk apa pun yang tidak bisa dipetakan dengan bersih, dan Anda menyelesaikannya secara manual. Saya selalu mengonversi ke file terlebih dahulu agar bisa membaca diff sebelum menjalankan apa pun.
# Promtail -> Alloy (write to a file, review the diagnostics)
alloy convert \
--source-format=promtail \
--output=/etc/alloy/config.alloy \
/etc/promtail/config.yaml
# Grafana Agent Flow -> Alloy
alloy convert --source-format=flow \
--output=/etc/alloy/config.alloy /etc/agent/config.river
# OpenTelemetry Collector -> Alloy
alloy convert --source-format=otelcol \
--output=/etc/alloy/config.alloy /etc/otelcol/config.yaml
# validate before restarting the service
alloy fmt /etc/alloy/config.alloyDi sinilah Alloy membuktikan deskripsinya. Komponen Prometheus dan Loki native (keluarga loki.* dan prometheus.*) hidup berdampingan dengan set komponen OTLP lengkap di bawah namespace otelcol.*. Jika Anda menerima OTLP dari layanan NestJS yang terinstrumentasi, otelcol.receiver.otlp menerimanya, otelcol.processor.batch mengelompokkannya, dan otelcol.exporter.otlphttp mengirimkannya lebih lanjut. Penjembatanan adalah kelas satu: otelcol.exporter.loki mengonversi log OTLP menjadi entri Loki, dan otelcol.receiver.loki melakukan sebaliknya, sehingga Anda bisa mencampur jalur push Loki lama dengan jalur OTLP modern dalam satu file.
// alloy: receive OTLP over gRPC, batch, export to an OTLP/HTTP backend
otelcol.receiver.otlp "default" {
grpc { endpoint = "0.0.0.0:4317" }
http { endpoint = "0.0.0.0:4318" }
output {
metrics = [otelcol.processor.batch.default.input]
logs = [otelcol.processor.batch.default.input]
traces = [otelcol.processor.batch.default.input]
}
}
otelcol.processor.batch "default" {
output {
metrics = [otelcol.exporter.otlphttp.backend.input]
logs = [otelcol.exporter.otlphttp.backend.input]
traces = [otelcol.exporter.otlphttp.backend.input]
}
}
otelcol.exporter.otlphttp "backend" {
client { endpoint = "https://otlp.example.com" }
}Sebagian besar migrasi adalah mempelajari komponen Alloy mana yang menggantikan setiap konsep lama. Ini adalah contekan yang saya buka sepanjang waktu.
| Konsep lama | Komponen Alloy | Peran |
|---|---|---|
| Promtail scrape_configs (file) | loki.source.file | Membaca file log berdasarkan path |
| Promtail pipeline_stages | loki.process | Parse, relabel, ekstrak field |
| Promtail clients | loki.write | Push entri ke Loki |
| Receiver otlp Collector | otelcol.receiver.otlp | Menerima OTLP via gRPC atau HTTP |
| Processor batch Collector | otelcol.processor.batch | Mengelompokkan telemetri sebelum ekspor |
| Scrape metrik Agent | prometheus.scrape | Menarik metrik Prometheus |
Jalankan collector lama dan baru berdampingan ke Loki yang sama, ditandai dengan label job berbeda, selama beberapa hari. Bandingkan jumlah baris sebelum Anda menonaktifkan Promtail. Konverter salah memetakan label secara halus, dan celah log tidak terlihat sampai Anda membutuhkan log itu.
Di VPS saya semuanya adalah Docker Compose, jadi Alloy hanyalah layanan lain. Mount konfigurasi, ekspos UI debug secara lokal, dan arahkan ke volume log yang sama yang digunakan Promtail. Flag run penting: --stability.level untuk komponen non-stabil, dan path konfigurasi di akhir.
# docker-compose.yml (excerpt)
services:
alloy:
image: grafana/alloy:latest
command:
- run
- --server.http.listen-addr=0.0.0.0:12345
- --storage.path=/var/lib/alloy/data
- /etc/alloy/config.alloy
ports:
- "127.0.0.1:12345:12345" # debug UI, localhost only
volumes:
- ./config.alloy:/etc/alloy/config.alloy:ro
- /var/log:/var/log:ro
- alloy-data:/var/lib/alloy/data
volumes:
alloy-data: {}Itulah keseluruhan bentuk migrasinya: konversi secara mekanis, pelajari graf komponen, verifikasi label terhadap trafik nyata, lalu beralih. Imbalannya adalah satu agent alih-alih tiga, satu bahasa konfigurasi untuk log dan trace dan metrik, serta perangkat lunak yang masih akan menerima patch kuartal depan.