src.nth.io/

summaryrefslogtreecommitdiff
path: root/prometheus/server
diff options
context:
space:
mode:
Diffstat (limited to 'prometheus/server')
-rw-r--r--prometheus/server/defaults/main.yaml9
-rw-r--r--prometheus/server/handlers/main.yaml9
-rw-r--r--prometheus/server/tasks/main.yaml56
-rw-r--r--prometheus/server/templates/prometheus.yml.j242
4 files changed, 116 insertions, 0 deletions
diff --git a/prometheus/server/defaults/main.yaml b/prometheus/server/defaults/main.yaml
new file mode 100644
index 0000000..53b53c9
--- /dev/null
+++ b/prometheus/server/defaults/main.yaml
@@ -0,0 +1,9 @@
+---
+
+prometheus_server_conf: "prometheus.yml.j2"
+prometheus_server_apt_packages:
+ - "prometheus"
+ - "grafana"
+
+prometheus_server_grafana_plugins:
+ - "flant-statusmap-panel"
diff --git a/prometheus/server/handlers/main.yaml b/prometheus/server/handlers/main.yaml
new file mode 100644
index 0000000..248df86
--- /dev/null
+++ b/prometheus/server/handlers/main.yaml
@@ -0,0 +1,9 @@
+---
+
+- name: restart prometheus service
+ systemd: name="prometheus.service" state="restarted" daemon_reload="yes"
+ become: yes
+
+- name: restart grafana service
+ systemd: name="grafana-server.service" state="restarted" daemon_reload="yes"
+ become: yes
diff --git a/prometheus/server/tasks/main.yaml b/prometheus/server/tasks/main.yaml
new file mode 100644
index 0000000..10d67a5
--- /dev/null
+++ b/prometheus/server/tasks/main.yaml
@@ -0,0 +1,56 @@
+---
+
+- name: add grafana apt key
+ become: yes
+ apt_key: url="https://packages.grafana.com/gpg.key"
+
+- name: add grafana apt repo
+ become: yes
+ apt_repository: repo="deb https://packages.grafana.com/oss/deb stable main"
+
+- name: install prometheus and grafana
+ become: yes
+ apt: name="{{prometheus_server_apt_packages}}" state="latest"
+
+- name: configure prometheus
+ become: yes
+ template:
+ src: "{{prometheus_server_conf}}"
+ dest: "/etc/prometheus/prometheus.yml"
+ notify:
+ - restart prometheus service
+ - restart grafana service
+
+- name: ensure grafana is started
+ become: yes
+ systemd: name="grafana-server.service" enabled="yes" state="started"
+
+- name: install grafana prometheus data source
+ become: yes
+ grafana_datasource:
+ name: "Prometheus"
+ ds_type: "prometheus"
+ ds_url: "http://localhost:9090"
+ grafana_url: "http://localhost:3000"
+ is_default: yes
+ changed_when: false
+
+- name: install grafana plugins
+ become: yes
+ grafana_plugin: name="{{item}}"
+ loop: "{{prometheus_server_grafana_plugins}}"
+
+- name: copy dashboards to target
+ become: yes
+ copy:
+ src: "{{prometheus_server_grafana_dashboard_src}}/{{item}}"
+ dest: "/tmp/"
+ mode: "0640"
+ loop: "{{prometheus_server_grafana_dashboards}}"
+
+# - name: install grafana dashboards
+# become: yes
+# grafana_dashboard:
+# grafana_url: "http://localhost:3000"
+# path: "/tmp/{{item}}"
+# loop: "{{prometheus_server_grafana_dashboards}}"
diff --git a/prometheus/server/templates/prometheus.yml.j2 b/prometheus/server/templates/prometheus.yml.j2
new file mode 100644
index 0000000..cf88480
--- /dev/null
+++ b/prometheus/server/templates/prometheus.yml.j2
@@ -0,0 +1,42 @@
+global:
+ scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
+ evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
+ # scrape_timeout is set to the global default (10s).
+
+ # Attach these labels to any time series or alerts when communicating with
+ # external systems (federation, remote storage, Alertmanager).
+ external_labels:
+ monitor: 'example'
+
+# Alertmanager configuration
+# alerting:
+# alertmanagers:
+# - static_configs:
+# - targets: ['localhost:9093']
+
+# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
+# rule_files:
+ # - "first_rules.yml"
+ # - "second_rules.yml"
+
+# A scrape configuration containing exactly one endpoint to scrape:
+# Here it's Prometheus itself.
+scrape_configs:
+ # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
+ - job_name: 'prometheus'
+ # server stats
+ static_configs:
+ - targets:
+ - 'localhost:9090'
+
+ - job_name: node
+ # If prometheus-node-exporter is installed, grab stats about the local machine by default.
+ static_configs:
+ - targets:
+ - 'localhost:9100'
+
+ - job_name: rpi
+ # rpi_exporter
+ static_configs:
+ - targets:
+ - 'localhost:9243'