Files
homelab/tasks/monitoring.yml
Alex Frantz 88c718eb77
All checks were successful
Deploy Containers / Prepare (push) Successful in 52s
add loki + promtail
2025-12-27 21:20:31 -05:00

129 lines
3.4 KiB
YAML

---
- name: Deploy Prometheus
include_role:
name: docker
vars:
name: monitoring_prometheus
network_name: "monitoring"
networks:
- name: "monitoring"
- name: "homelab"
directories:
- "{{ data_dir }}/monitoring"
- "{{ data_dir }}/monitoring/grafana"
- "{{ data_dir }}/monitoring/loki"
- "{{ data_dir }}/monitoring/promtail"
- "{{ data_dir }}/monitoring/prometheus"
image:
name: prom/prometheus
tag: latest
volumes:
- "{{ data_dir }}/monitoring/prometheus:/etc/prometheus"
- "{{ data_dir }}/monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml"
labels:
traefik.enable: "true"
traefik.http.routers.prom.rule: Host(`prom.fntz.net`)
traefik.http.routers.prom.entrypoints: webSecure
traefik.http.routers.prom.tls.certresolver: letsencrypt
traefik.http.services.prom.loadbalancer.server.port: "9090"
# copy configs for loki + promtail
- name: Create Loki Configuration
template:
src: templates/monitoring/loki.yaml.j2
dest: "{{ data_dir }}/monitoring/loki/loki-config.yaml"
- name: Create Promtail Configuration
template:
src: templates/monitoring/promtail.yaml.j2
dest: "{{ data_dir }}/monitoring/promtail/promtail-config.yaml"
- name: Deploy Node Exporter
include_role:
name: docker
vars:
name: monitoring_node-exporter
image:
name: prom/node-exporter
tag: latest
command:
- "--path.rootfs=host"
network_mode: host
pid_mode: host
volumes:
- "/:/host:ro,rslave"
- name: Deploy CAdvisor
include_role:
name: docker
vars:
name: monitoring_cadvisor
image:
name: ghcr.io/google/cadvisor
tag: 0.55.1
networks:
- name: "monitoring"
volumes:
- "/:/rootfs:ro"
- "/var/run:/var/run:ro"
- "/sys:/sys:ro"
- "/var/lib/docker:/var/lib/docker:ro"
- "/dev/disk:/dev/disk:ro"
privileged: true
devices:
- /dev/kmsg
- name: Deploy Loki
include_role:
name: docker
vars:
name: monitoring_loki
volume_name: grafana-loki
image:
name: grafana/loki
tag: latest
volumes:
- "{{ data_dir }}/monitoring/loki/loki-config.yaml:/etc/loki/local-config.yaml"
- "grafana-loki:/loki"
networks:
- name: "monitoring"
- name: Deploy Promtail
include_role:
name: docker
vars:
name: monitoring_promtail
image:
name: grafana/promtail
tag: latest
command: -config.file=/etc/promtail/config.yaml
networks:
- name: "monitoring"
volumes:
- "/var/log:/var/log:ro"
- "{{ data_dir }}/monitoring/promtail/promtail-config.yaml:/etc/promtail/config.yaml"
- name: Deploy Grafana
include_role:
name: docker
vars:
name: monitoring_grafana
volume_name: "grafana-storage"
networks:
- name: "monitoring"
- name: "homelab"
image:
name: grafana/grafana
tag: latest
user: "{{ PUID }}"
volumes:
- "grafana-storage:/var/lib/grafana"
env:
GF_AUTH_ANONYMOUS_ENABLED: "{{ GRAFANA_AUTH_ANONYMOUS_ENABLED }}"
labels:
traefik.enable: "true"
traefik.http.routers.grafana.rule: Host(`grafana.fntz.net`)
traefik.http.routers.grafana.entrypoints: webSecure
traefik.http.routers.grafana.tls.certresolver: letsencrypt
traefik.http.services.grafana.loadbalancer.server.port: "3000"
traefik.http.routers.grafana.middlewares: tinyauth