reNixos/viola/services/alloy.nix
s0me1newithhand7s 793b14918a viola: upstream
Signed-off-by: s0me1newithhand7s <git+me@hand7s.org>
2026-03-25 18:48:47 +03:00

93 lines
2.4 KiB
Nix

{pkgs, ...}: {
services = {
alloy = {
enable = true;
configPath = pkgs.writeText "alloy-config.alloy" ''
loki.source.journal "system" {
forward_to = [loki.process.production.receiver]
relabel_rules = loki.relabel.journal.rules
labels = {
host = "viola",
job = "systemd",
}
}
loki.relabel "journal" {
forward_to = []
rule {
source_labels = ["__journal__systemd_unit"]
target_label = "unit"
}
}
loki.write "local" {
endpoint {
url = "http://127.0.0.1:3100/loki/api/v1/push"
}
}
loki.process "production" {
forward_to = [loki.write.local.receiver]
stage.match {
selector = `{service_name=~"(alloy|forgejo|grafana|loki|microbin|mimir|stalwart|postgresql|redis|stalwart|static-web-server|tempo|traefik|vaultwarden|woodpecker|zitadel)\\.service"}`
action = "keep"
}
}
prometheus.exporter.unix "node" {
enable_collectors = [
"cpu", "diskstats", "filesystem",
"loadavg", "meminfo", "netdev",
"systemd", "time", "uname",
]
}
prometheus.scrape "node" {
targets = prometheus.exporter.unix.node.targets
forward_to = [prometheus.remote_write.mimir.receiver]
scrape_interval = "30s"
job_name = "node"
}
prometheus.scrape "alloy" {
targets = [{"__address__" = "127.0.0.1:12345"}]
forward_to = [prometheus.remote_write.mimir.receiver]
job_name = "alloy"
}
prometheus.remote_write "mimir" {
endpoint {
url = "http://127.0.0.1:9009/api/v1/push"
}
}
otelcol.receiver.otlp "default" {
grpc {
endpoint = "0.0.0.0:4317"
}
http {
endpoint = "0.0.0.0:4318"
}
output {
traces = [otelcol.exporter.otlp.tempo.input]
logs = [otelcol.exporter.loki.local.input]
}
}
otelcol.exporter.otlp "tempo" {
client {
endpoint = "http://127.0.0.1:4317"
}
}
otelcol.exporter.loki "local" {
forward_to = [loki.write.local.receiver]
}
'';
};
};
}