57 lines
1.8 KiB
Plaintext
57 lines
1.8 KiB
Plaintext
// پیکربندیِ حداقلیِ Grafana Alloy — جایگزینِ Promtail (که EOL شده،
|
||
// مارچ ۲۰۲۶). دقیقاً همون کاری که promtail-config.yml قبلی میکرد:
|
||
// فایلِ لاگِ JSON اپِ Django رو tail میکنه، level/logger رو بهعنوانِ
|
||
// لیبل استخراج میکنه، و به Loki push میکنه. هیچ لاگِ جدیدی تولید
|
||
// نمیکنه و پیامِ لاگها دستنخورده میمونه.
|
||
|
||
// مرحلهی ۱: پیدا کردنِ فایلهای لاگ روی ولومِ مشترک (django_logs)
|
||
local.file_match "django_logs" {
|
||
path_targets = [{
|
||
__path__ = "/var/log/django/*.log",
|
||
job = "django",
|
||
app = "tadrisino",
|
||
}]
|
||
}
|
||
|
||
// مرحلهی ۲: خوندنِ همون فایلها
|
||
loki.source.file "django_logs" {
|
||
targets = local.file_match.django_logs.targets
|
||
forward_to = [loki.process.django_logs.receiver]
|
||
}
|
||
|
||
// مرحلهی ۳: پردازش — استخراجِ level/logger/timestamp از JSONِ هر خط
|
||
// (فرمتِ config.log_formatters.JSONLogFormatter) و ستکردنِ اونا بهعنوانِ
|
||
// لیبل، دقیقاً همارزِ stage.json + stage.labels + stage.timestamp در
|
||
// promtail-config.yml قبلی.
|
||
loki.process "django_logs" {
|
||
stage.json {
|
||
expressions = {
|
||
level = "",
|
||
logger = "",
|
||
timestamp = "",
|
||
}
|
||
}
|
||
|
||
stage.labels {
|
||
values = {
|
||
level = "",
|
||
logger = "",
|
||
}
|
||
}
|
||
|
||
// استفاده از timestampِ خودِ لاگ (نه زمانِ رسیدنِ خط به Alloy)
|
||
stage.timestamp {
|
||
source = "timestamp"
|
||
format = "RFC3339"
|
||
}
|
||
|
||
forward_to = [loki.write.local.receiver]
|
||
}
|
||
|
||
// مرحلهی ۴: ارسال به Loki
|
||
loki.write "local" {
|
||
endpoint {
|
||
url = "http://loki:3100/loki/api/v1/push"
|
||
}
|
||
}
|