207 lines
4.6 KiB
Django/Jinja
207 lines
4.6 KiB
Django/Jinja
// Managed by Ansible (roles/alloy). Do not edit by hand.
|
|
// host label = inventory hostname: {{ inventory_hostname }}
|
|
|
|
// =====================================================================
|
|
// LOGS
|
|
// =====================================================================
|
|
|
|
loki.source.journal "system" {
|
|
forward_to = [loki.process.journal_labels.receiver]
|
|
relabel_rules = discovery.relabel.journal.rules
|
|
labels = {
|
|
job = "systemd",
|
|
host = "{{ inventory_hostname }}",
|
|
}
|
|
}
|
|
|
|
discovery.relabel "journal" {
|
|
targets = []
|
|
|
|
rule {
|
|
source_labels = ["__journal__systemd_unit"]
|
|
target_label = "unit"
|
|
}
|
|
}
|
|
|
|
loki.process "journal_labels" {
|
|
forward_to = [loki.write.default.receiver]
|
|
|
|
stage.static_labels {
|
|
values = {
|
|
env = "host",
|
|
app = "system",
|
|
}
|
|
}
|
|
}
|
|
|
|
discovery.docker "containers" {
|
|
host = "unix:///var/run/docker.sock"
|
|
}
|
|
|
|
discovery.relabel "docker" {
|
|
targets = discovery.docker.containers.targets
|
|
|
|
rule {
|
|
source_labels = ["__meta_docker_container_name"]
|
|
regex = "/(.*)"
|
|
target_label = "container"
|
|
}
|
|
|
|
rule {
|
|
source_labels = ["__meta_docker_container_label_com_docker_compose_project"]
|
|
target_label = "compose_project"
|
|
}
|
|
|
|
rule {
|
|
source_labels = ["__meta_docker_container_label_com_docker_compose_service"]
|
|
target_label = "compose_service"
|
|
}
|
|
}
|
|
|
|
loki.source.docker "containers" {
|
|
host = "unix:///var/run/docker.sock"
|
|
targets = discovery.relabel.docker.output
|
|
forward_to = [loki.process.docker_labels.receiver]
|
|
labels = {
|
|
job = "docker",
|
|
host = "{{ inventory_hostname }}",
|
|
}
|
|
}
|
|
|
|
loki.process "docker_labels" {
|
|
forward_to = [loki.write.default.receiver]
|
|
|
|
stage.regex {
|
|
source = "compose_project"
|
|
expression = "^(?P<app>[a-z0-9_]+)_(?P<env>beta|prod)$"
|
|
}
|
|
|
|
stage.labels {
|
|
values = {
|
|
app = "",
|
|
env = "",
|
|
}
|
|
}
|
|
|
|
{% raw %}
|
|
stage.template {
|
|
source = "env"
|
|
template = `{{ if .env }}{{ .env }}{{ else }}infra{{ end }}`
|
|
}
|
|
|
|
stage.template {
|
|
source = "app"
|
|
template = `{{ if .app }}{{ .app }}{{ else }}{{ .compose_project }}{{ end }}`
|
|
}
|
|
{% endraw %}
|
|
|
|
stage.labels {
|
|
values = {
|
|
app = "",
|
|
env = "",
|
|
}
|
|
}
|
|
}
|
|
|
|
loki.write "default" {
|
|
endpoint {
|
|
url = "{{ alloy_loki_push_url }}"
|
|
}
|
|
}
|
|
|
|
// =====================================================================
|
|
// METRICS — host (CPU / RAM / disk / load / network)
|
|
// =====================================================================
|
|
|
|
prometheus.exporter.unix "node" {
|
|
procfs_path = "/host/proc"
|
|
sysfs_path = "/host/sys"
|
|
rootfs_path = "/host/root"
|
|
}
|
|
|
|
prometheus.scrape "node" {
|
|
targets = prometheus.exporter.unix.node.targets
|
|
forward_to = [prometheus.relabel.add_host.receiver]
|
|
scrape_interval = "15s"
|
|
job_name = "node"
|
|
}
|
|
|
|
// =====================================================================
|
|
// METRICS — Docker containers (cAdvisor)
|
|
// =====================================================================
|
|
|
|
prometheus.exporter.cadvisor "docker" {
|
|
docker_host = "unix:///var/run/docker.sock"
|
|
docker_only = true
|
|
storage_duration = "5m"
|
|
store_container_labels = false
|
|
allowlisted_container_labels = [
|
|
"com.docker.compose.project",
|
|
"com.docker.compose.service",
|
|
]
|
|
}
|
|
|
|
prometheus.scrape "cadvisor" {
|
|
targets = prometheus.exporter.cadvisor.docker.targets
|
|
forward_to = [prometheus.relabel.cadvisor_labels.receiver]
|
|
scrape_interval = "15s"
|
|
job_name = "cadvisor"
|
|
}
|
|
|
|
prometheus.relabel "cadvisor_labels" {
|
|
forward_to = [prometheus.remote_write.default.receiver]
|
|
|
|
rule {
|
|
target_label = "host"
|
|
replacement = "{{ inventory_hostname }}"
|
|
}
|
|
|
|
rule {
|
|
source_labels = ["container_label_com_docker_compose_project"]
|
|
target_label = "compose_project"
|
|
}
|
|
|
|
rule {
|
|
source_labels = ["compose_project"]
|
|
regex = "^([a-z0-9_]+)_(beta|prod)$"
|
|
target_label = "app"
|
|
replacement = "${1}"
|
|
}
|
|
|
|
rule {
|
|
source_labels = ["compose_project"]
|
|
regex = "^([a-z0-9_]+)_(beta|prod)$"
|
|
target_label = "env"
|
|
replacement = "${2}"
|
|
}
|
|
|
|
rule {
|
|
source_labels = ["env"]
|
|
regex = "^$"
|
|
target_label = "env"
|
|
replacement = "infra"
|
|
}
|
|
|
|
rule {
|
|
source_labels = ["app"]
|
|
regex = "^$"
|
|
target_label = "app"
|
|
replacement = "infra"
|
|
}
|
|
}
|
|
|
|
prometheus.relabel "add_host" {
|
|
forward_to = [prometheus.remote_write.default.receiver]
|
|
|
|
rule {
|
|
target_label = "host"
|
|
replacement = "{{ inventory_hostname }}"
|
|
}
|
|
}
|
|
|
|
prometheus.remote_write "default" {
|
|
endpoint {
|
|
url = "{{ alloy_prometheus_remote_write_url }}"
|
|
}
|
|
}
|