diff --git a/docker-compose/prometheus/alloy/config/config.alloy b/docker-compose/prometheus/alloy/config/config.alloy new file mode 100644 index 0000000..9014b00 --- /dev/null +++ b/docker-compose/prometheus/alloy/config/config.alloy @@ -0,0 +1,79 @@ + // ############################### +// #### Metrics Configuration #### +// ############################### + +// Host Cadvisor on the Docker socket to expose container metrics. +prometheus.exporter.cadvisor "example" { + docker_only = true +} + +discovery.relabel "example" { + targets = prometheus.exporter.cadvisor.example.targets + + rule { + target_label = "job" + replacement = "integrations/docker" + } + + rule { + target_label = "instance" + replacement = constants.hostname + } +} + +// Configure a prometheus.scrape component to collect cadvisor metrics. +prometheus.scrape "scraper" { + targets = discovery.relabel.example.output + forward_to = [ prometheus.remote_write.demo.receiver ] + + + scrape_interval = "10s" +} + +// Configure a prometheus.remote_write component to send metrics to a Prometheus server. +prometheus.remote_write "demo" { + endpoint { + url = "http://prometheus:9090/api/v1/write" + } +} + +// ############################### +// #### Logging Configuration #### +// ############################### + +// Discover Docker containers and extract metadata. +discovery.docker "linux" { + host = "unix:///var/run/docker.sock" +} + +// Define a relabeling rule to create a service name from the container name. +discovery.relabel "logs_integrations_docker" { + targets = [] + + rule { + source_labels = ["__meta_docker_container_name"] + regex = "/(.*)" + target_label = "container_name" + } + + rule { + target_label = "instance" + replacement = constants.hostname + } + + } + + +// Configure a loki.source.docker component to collect logs from Docker containers. +loki.source.docker "default" { + host = "unix:///var/run/docker.sock" + targets = discovery.docker.linux.targets + relabel_rules = discovery.relabel.logs_integrations_docker.rules + forward_to = [loki.write.local.receiver] +} + +loki.write "local" { + endpoint { + url = "http://10.0.141.200:3100/loki/api/v1/push" + } +} \ No newline at end of file