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