Updates for grafana stack
This commit is contained in:
@@ -0,0 +1,206 @@
|
||||
// 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 }}"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user