From 48816a8815867afbdaec95bb282a9eb53546b74b Mon Sep 17 00:00:00 2001 From: Isshi0417 Date: Wed, 8 Jul 2026 05:56:13 +0000 Subject: [PATCH] Deploy monitoring services for the server nodes --- ansible/deploy_monitoring.yml | 91 +++++++++++++++++++++++++++++++++++ ansible/prometheus.yml | 12 +++++ 2 files changed, 103 insertions(+) create mode 100644 ansible/deploy_monitoring.yml create mode 100644 ansible/prometheus.yml diff --git a/ansible/deploy_monitoring.yml b/ansible/deploy_monitoring.yml new file mode 100644 index 0000000..458a1aa --- /dev/null +++ b/ansible/deploy_monitoring.yml @@ -0,0 +1,91 @@ +--- +- name: Deploy exporters to all nodes + hosts: ipa, control, web, media + become: true + + tasks: + - name: Start node exporter container + containers.podman.podman_container: + name: node-exporter + image: docker.io/prom/node-exporter:latest + state: started + restart_policy: always + network: host + pid: host + volumes: + - /:/host:ro,rslave + + - name: Allow node exporters in firewalld + ansible.posix.firewalld: + port: 9100/tcp + permanent: true + immediate: true + state: enabled + +- name: Deploy central prometheus & grafana + hosts: control + become: true + + tasks: + - name: Create Prometheus storage directory + ansible.builtin.file: + path: /var/lib/prometheus + state: directory + owner: "65534" + group: "65534" + mode: "0755" + + - name: Create Grafana storage directory + ansible.builtin.file: + path: /var/lib/grafana + state: directory + owner: "472" + group: "472" + mode: "0755" + + - name: Copy prometheus config + ansible.builtin.copy: + src: prometheus.yml + dest: /var/lib/prometheus/prometheus.yml + owner: root + group: root + mode: "0644" + + - name: Allow monitoring ports in firewalld + ansible.posix.firewalld: + port: "{{ item }}" + permanent: true + immediate: true + state: enabled + loop: + - 9091/tcp + - 3001/tcp + + - name: Run prometheus container + containers.podman.podman_container: + name: prometheus + image: docker.io/prom/prometheus:latest + state: started + restart_policy: always + ports: + - "9091:9090" + volumes: + - /var/lib/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:z + command: + - "--config.file=/etc/prometheus/prometheus.yml" + - "--storage.tsdb.path=/prometheus" + + - name: Run grafana container + containers.podman.podman_container: + name: grafana + image: docker.io/grafana/grafana:latest + state: started + restart_policy: always + ports: + - "3001:3000" + volumes: + - /var/lib/grafana:/var/lib/grafana:z + env: + GF_SECURITY_ALLOW_EMBEDDING: "true" + GF_AUTH_ANONYMOUS_ENABLED: "true" + GF_AUTH_ANONYMOUS_ORG_ROLE: "Viewer" diff --git a/ansible/prometheus.yml b/ansible/prometheus.yml new file mode 100644 index 0000000..e132500 --- /dev/null +++ b/ansible/prometheus.yml @@ -0,0 +1,12 @@ +global: + scrape_interval: 15s + evaluation_interval: 15s + +scrape_configs: + - job_name: "homelab-nodes" + static_configs: + - targets: + - "172.30.1.100:9100" + - "172.30.1.200:9100" + - "172.30.1.201:9100" + - "172.30.1.202:9100"