From 2a51a80a55b2e3bb60b834aa44cea25862f8b26e Mon Sep 17 00:00:00 2001
From: Christian Elberfeld <elberfeld@web.de>
Date: Sun, 26 Feb 2023 03:40:05 +0100
Subject: [PATCH] basis prometheus konfiguration

---
 functions                                     |  2 +-
 .../docker_grafana/templates/datasources.yml  |  9 ++++
 remote/docker_prometheus/tasks/main.yml       | 26 ++++++++++
 .../templates/docker-compose.yml              | 36 ++++++++++++++
 .../templates/prometheus.yml                  | 47 +++++++++++++++++++
 site.yml                                      |  8 ++++
 6 files changed, 127 insertions(+), 1 deletion(-)
 create mode 100644 remote/docker_prometheus/tasks/main.yml
 create mode 100644 remote/docker_prometheus/templates/docker-compose.yml
 create mode 100644 remote/docker_prometheus/templates/prometheus.yml

diff --git a/functions b/functions
index 900377e4..e8a04941 160000
--- a/functions
+++ b/functions
@@ -1 +1 @@
-Subproject commit 900377e4f72486f6699ecf736f96adfbc04e92da
+Subproject commit e8a049414bca2b14b158444dac1b94c2ca90d9be
diff --git a/intern/docker_grafana/templates/datasources.yml b/intern/docker_grafana/templates/datasources.yml
index 5e2ba6ca..2c3e31a0 100644
--- a/intern/docker_grafana/templates/datasources.yml
+++ b/intern/docker_grafana/templates/datasources.yml
@@ -26,3 +26,12 @@ datasources:
       httpHeaderName1: 'Authorization'
     secureJsonData:
       httpHeaderValue1: 'Token {{ influxdb_token }}'
+
+{% if inventory_hostname == 'hix' %}
+
+  - name: Prometheus
+    type: prometheus
+    access: proxy
+    url: http://{{ int_ip4 }}:9090
+
+{% endif %}
diff --git a/remote/docker_prometheus/tasks/main.yml b/remote/docker_prometheus/tasks/main.yml
new file mode 100644
index 00000000..1d79a50e
--- /dev/null
+++ b/remote/docker_prometheus/tasks/main.yml
@@ -0,0 +1,26 @@
+
+---
+
+- name: "create folder struct for {{ basedir }}"
+  file: 
+    path: "{{ basedir }}" 
+    state: "directory"
+
+- name: "create folder struct for {{ basedir }}"
+  file: 
+    path: "{{ basedir }}/data" 
+    state: "directory"
+
+- name: "create config files for {{ basedir }}"
+  template: 
+    src: "{{ item }}"
+    dest: "{{ basedir }}/{{ item }}"
+  with_items:
+    - docker-compose.yml 
+    - prometheus.yml 
+
+- name: "start {{ basedir }} docker"
+  docker_compose:
+    project_src: "{{ basedir }}"
+    state: present
+
diff --git a/remote/docker_prometheus/templates/docker-compose.yml b/remote/docker_prometheus/templates/docker-compose.yml
new file mode 100644
index 00000000..29f04144
--- /dev/null
+++ b/remote/docker_prometheus/templates/docker-compose.yml
@@ -0,0 +1,36 @@
+
+version: "3"
+
+services:
+
+  app:
+
+    image: prom/prometheus:v2.41.0
+    restart: always
+    ports:
+      - 9090:9090
+    volumes:
+      - "{{ basedir }}/data:/prometheus"
+      - "{{ basedir }}/prometheus.yml:/etc/prometheus/prometheus.yml"
+    environment:
+      PGID: 1001
+      PUID: 1001
+      MEM_LIMIT: 256
+    labels:
+      - traefik.enable=true
+      - traefik.http.routers.{{ servicename }}.rule=Host(`{{ domain }}`)
+      - traefik.http.routers.{{ servicename }}.entrypoints=websecure
+      - traefik.http.services.{{ servicename }}.loadbalancer.serversTransport={{ servicename }}
+      - traefik.http.services.{{ servicename }}.loadbalancer.server.port=9090
+    networks:
+      - default
+      - web
+
+  snmp:
+    image: quay.io/prometheus/snmp-exporter:v0.21.0
+    restart: always
+
+
+networks:
+  web:
+    external: true
diff --git a/remote/docker_prometheus/templates/prometheus.yml b/remote/docker_prometheus/templates/prometheus.yml
new file mode 100644
index 00000000..6a34e162
--- /dev/null
+++ b/remote/docker_prometheus/templates/prometheus.yml
@@ -0,0 +1,47 @@
+
+global:
+  scrape_interval: 15s
+  evaluation_interval: 30s
+  # scrape_timeout is set to the global default (10s).
+
+
+scrape_configs:
+
+  - job_name: hex-metrics
+    static_configs:
+      - targets: [ "{{ hostvars['hex'].int_ip4 }}:9100" ]
+        labels:
+          server: hex
+
+  - job_name: hix-metrics
+    static_configs:
+      - targets: [ "{{ int_ip4 }}:9100" ]
+        labels:
+          server: hix
+
+  - job_name: hix-docker
+    static_configs:
+      - targets: [ "{{ int_ip4 }}:9323" ]
+        labels:
+          server: hix
+
+  - job_name: hix-dockerstats
+    static_configs:
+      - targets: [ "{{ int_ip4 }}:9487" ]
+        labels:
+          server: hix
+
+  - job_name: 'snmp-switch'
+    static_configs:
+      - targets:
+        - 10.111.10.91 
+    metrics_path: /snmp
+    params:
+      module: [if_mib]
+    relabel_configs:
+      - source_labels: [__address__]
+        target_label: __param_target
+      - source_labels: [__param_target]
+        target_label: instance
+      - target_label: __address__
+        replacement: snmp:9116  # The SNMP exporter's real hostname:port.
diff --git a/site.yml b/site.yml
index 6540cdf9..c49a94b8 100644
--- a/site.yml
+++ b/site.yml
@@ -294,6 +294,7 @@
   roles:
     - { role: common/proxmox, tags: proxmox }
     - { role: common/cronapt, tags: cronapt }
+    - { role: common/prometheus-node, tags: prometheus-node }
 
 - hosts: hix
   remote_user: root
@@ -322,6 +323,13 @@
         mqtt_port: 1883,
         influxdb_port: 18086
       }
+    - { 
+        role: remote/docker_prometheus, tags: prometheus, 
+        servicename: prometheus,
+        basedir: /srv/prometheus, 
+        domain: "prometheus.warpzone.remote",
+        prometheus_port: 9090
+      }
     - { 
         role: intern/docker_grafana, tags: grafana, 
         servicename: grafana,
-- 
GitLab