Files
proxmox-ha-setup/vm2/alloy-config.alloy

94 lines
2.0 KiB
Plaintext

// Grafana Alloy configuration for VM2
// Replaces Promtail for log collection and forwarding to Loki
// Discover Docker containers with the logging=promtail label
discovery.docker "containers" {
host = "unix:///var/run/docker.sock"
refresh_interval = "5s"
filter {
name = "label"
values = ["logging=alloy"]
}
}
// Scrape logs from discovered containers
loki.source.docker "docker_logs" {
host = "unix:///var/run/docker.sock"
targets = discovery.docker.containers.targets
forward_to = [loki.write.loki.receiver]
relabel_rules = loki.relabel.docker.rules
}
// Relabel configuration to extract useful labels from Docker metadata
loki.relabel "docker" {
forward_to = []
rule {
source_labels = ["__meta_docker_container_name"]
regex = "/(.*)"
target_label = "container"
}
rule {
source_labels = ["__meta_docker_container_label_logging_jobname"]
target_label = "job"
}
// Add external labels
rule {
target_label = "environment"
replacement = "production"
}
rule {
target_label = "cluster"
replacement = "myapp-cluster"
}
}
// Write logs to Loki
loki.write "loki" {
endpoint {
url = "http://192.168.1.200:3100/loki/api/v1/push"
}
}
// Collect system metrics
prometheus.exporter.unix "host" {
procfs_path = "/host/proc"
sysfs_path = "/host/sys"
rootfs_path = "/host/root"
}
// Relabel configuration for Prometheus metrics
prometheus.relabel "host_metrics" {
forward_to = [prometheus.remote_write.mimir.receiver]
rule {
source_labels = ["__address__"]
target_label = "instance"
replacement = "vm2"
}
rule {
target_label = "hostname"
replacement = "vm2"
}
}
// Scrape metrics from the unix exporter
prometheus.scrape "host" {
targets = prometheus.exporter.unix.host.targets
forward_to = [prometheus.relabel.host_metrics.receiver]
}
// Write metrics to Mimir/Prometheus
prometheus.remote_write "mimir" {
endpoint {
url = "http://192.168.1.200:9090/api/v1/write"
}
}