mirror of
https://github.com/akvorado/akvorado.git
synced 2025-12-11 22:14:02 +01:00
Alloy does not allow to turn the parsed metadata into actual metadata, without enumerating each of them. Also, Vector is far more versatile. And you can put unittests! Also, parse more logs. Everything should be there, except ClickHouse. Fix #1907
109 lines
3.0 KiB
Plaintext
109 lines
3.0 KiB
Plaintext
discovery.docker "docker" {
|
|
host = "unix:///var/run/docker.sock"
|
|
refresh_interval = "30s"
|
|
filter {
|
|
name = "label"
|
|
values = ["com.docker.compose.project=akvorado"]
|
|
}
|
|
}
|
|
|
|
prometheus.remote_write "default" {
|
|
endpoint {
|
|
url = "http://prometheus:9090/prometheus/api/v1/write"
|
|
}
|
|
}
|
|
|
|
// Docker relabeling. We match entries with metrics.port as the port (it needs to
|
|
// be exposed) and use metrics.path if defined. The job name is the service name
|
|
// minus the numbered suffix.
|
|
discovery.relabel "prometheus" {
|
|
targets = discovery.docker.docker.targets
|
|
|
|
// Normalize the case where network is host.
|
|
rule {
|
|
source_labels = ["__meta_docker_container_label_metrics_port", "__meta_docker_network_name"]
|
|
regex = `(.+);host`
|
|
target_label = "__address__"
|
|
replacement = "host.docker.internal:$1"
|
|
}
|
|
rule {
|
|
source_labels = ["__meta_docker_container_label_metrics_port", "__meta_docker_network_name"]
|
|
regex = `(.+);host`
|
|
target_label = "__meta_docker_port_private"
|
|
replacement = "$1"
|
|
}
|
|
// Then keep if we metrics.port matches private port
|
|
rule {
|
|
source_labels = ["__meta_docker_container_label_metrics_port"]
|
|
regex = `.+`
|
|
action = "keep"
|
|
}
|
|
rule {
|
|
source_labels = ["__meta_docker_container_label_metrics_port"]
|
|
target_label = "__meta_docker_port_private"
|
|
action = "keepequal"
|
|
}
|
|
|
|
// Set job and instance name
|
|
rule {
|
|
source_labels = ["__meta_docker_container_label_com_docker_compose_service"]
|
|
regex = `(.+)(?:-\d+)?`
|
|
target_label = "job"
|
|
}
|
|
rule {
|
|
source_labels = ["__address__"]
|
|
regex = `(.+):\d+`
|
|
target_label = "instance"
|
|
}
|
|
|
|
// Set metrics path from metrics.path label, default to /metrics
|
|
rule {
|
|
source_labels = ["__meta_docker_container_label_metrics_path"]
|
|
regex = `(.+)`
|
|
target_label = "__metrics_path__"
|
|
}
|
|
rule {
|
|
source_labels = ["__metrics_path__"]
|
|
regex = ""
|
|
target_label = "__metrics_path__"
|
|
replacement = "/metrics"
|
|
}
|
|
}
|
|
prometheus.scrape "docker" {
|
|
targets = discovery.relabel.prometheus.output
|
|
forward_to = [prometheus.remote_write.default.receiver]
|
|
scrape_interval = "30s"
|
|
}
|
|
|
|
prometheus.exporter.redis "docker" {
|
|
redis_addr = "redis:6379"
|
|
}
|
|
discovery.relabel "redis" {
|
|
targets = prometheus.exporter.redis.docker.targets
|
|
rule {
|
|
target_label = "job"
|
|
replacement = "redis"
|
|
}
|
|
}
|
|
prometheus.scrape "redis" {
|
|
targets = discovery.relabel.redis.output
|
|
forward_to = [prometheus.remote_write.default.receiver]
|
|
scrape_interval = "30s"
|
|
}
|
|
|
|
prometheus.exporter.kafka "docker" {
|
|
kafka_uris = ["kafka:9092"]
|
|
}
|
|
discovery.relabel "kafka" {
|
|
targets = prometheus.exporter.kafka.docker.targets
|
|
rule {
|
|
target_label = "job"
|
|
replacement = "kafka"
|
|
}
|
|
}
|
|
prometheus.scrape "kafka" {
|
|
targets = discovery.relabel.kafka.output
|
|
forward_to = [prometheus.remote_write.default.receiver]
|
|
scrape_interval = "30s"
|
|
}
|