infrastructure/playbooks/roles/lgtm_stack/templates/config.alloy.j2

124 lines
3.2 KiB
Django/Jinja

logging {
level = "info"
write_to = [loki.relabel.alloy_logs.receiver]
}
prometheus.remote_write "mimir" {
endpoint {
url = "https://{{ lgtm_stack_mimir_domain }}/api/v1/push"
}
}
prometheus.exporter.self "alloy" {}
prometheus.scrape "alloy" {
targets = prometheus.exporter.self.alloy.targets
forward_to = [prometheus.remote_write.mimir.receiver]
}
prometheus.exporter.postgres "default" {
data_source_names = ["postgresql://{{ svc.postgresql_collector.user }}:{{ svc.postgresql_collector.pass }}@{{ svc.postgresql_collector.host }}:{{ svc.postgresql_collector.port }}/{{ svc.postgresql_collector.database }}?sslmode=verify-full"]
autodiscovery {
enabled = true
}
}
prometheus.scrape "postgres" {
targets = prometheus.exporter.postgres.default.targets
forward_to = [prometheus.remote_write.mimir.receiver]
}
prometheus.scrape "node_exporter" {
targets = [
{% for host_data in opentofu.hosts.values() %}
{"__address__" = "{{ host_data.fqdn_vpn }}:9100", "instance" = "{{ host_data.hostname }}"},
{% endfor %}
]
forward_to = [prometheus.remote_write.mimir.receiver]
}
prometheus.scrape "caddy" {
targets = [
{% for host_data in opentofu.hosts.values() %}
{"__address__" = "{{ host_data.fqdn_vpn }}", "instance" = "{{ host_data.hostname }}"},
{% endfor %}
]
forward_to = [prometheus.remote_write.mimir.receiver]
}
{% for job in lgtm_stack_alloy_jobs %}
prometheus.scrape "{{ job.name }}" {
targets = [
{% for target in job.targets %}
{
"__address__" = "{{ target.address }}",
"__metrics_path__" = "{{ target.path }}",
"__scheme__" = "https",
{% if 'job' in target %}"job" = "{{ target.job }}",{% endif %}
{% if 'instance' in target %}"instance" = "{{ target.instance }}",{% endif %}
},
{% endfor %}
]
scrape_interval = "{{ job.scrape_interval }}"
forward_to = [prometheus.remote_write.mimir.receiver]
}
{% endfor %}
loki.write "loki" {
endpoint {
url = "https://{{ lgtm_stack_loki_domain }}/loki/api/v1/push"
}
}
loki.relabel "alloy_logs" {
rule {
target_label = "instance"
replacement = "{{ inventory_hostname }}"
}
rule {
target_label = "job"
replacement = "integrations/self"
}
forward_to = [loki.write.loki.receiver]
}
discovery.docker "linux" {
host = "unix:///var/run/docker.sock"
filter {
name = "label"
values = ["net.serguzim.logs.collect=true"]
}
}
loki.source.docker "default" {
host = "unix:///var/run/docker.sock"
targets = discovery.docker.linux.targets
labels = {"app" = "docker"}
relabel_rules = discovery.relabel.logs_docker_containers.rules
forward_to = [loki.write.loki.receiver]
}
discovery.relabel "logs_docker_containers" {
targets = []
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"
}
rule {
source_labels = ["__meta_docker_container_name"]
target_label = "container_name"
}
}