src.nth.io/

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.hgignore5
-rw-r--r--prometheus/client/defaults/main.yaml10
-rw-r--r--prometheus/client/tasks/main.yaml32
-rw-r--r--prometheus/server/defaults/main.yaml6
-rw-r--r--prometheus/server/handlers/main.yaml5
-rw-r--r--prometheus/server/tasks/main.yaml13
-rw-r--r--prometheus/server/templates/prometheus.yml.j242
7 files changed, 107 insertions, 6 deletions
diff --git a/.hgignore b/.hgignore
new file mode 100644
index 0000000..c41d01f
--- /dev/null
+++ b/.hgignore
@@ -0,0 +1,5 @@
+syntax: regexp
+~$
+\#.*\#$
+\.\#
+\.DS_Store$
diff --git a/prometheus/client/defaults/main.yaml b/prometheus/client/defaults/main.yaml
new file mode 100644
index 0000000..fd07a6b
--- /dev/null
+++ b/prometheus/client/defaults/main.yaml
@@ -0,0 +1,10 @@
+---
+
+prometheus_client_apt_packages:
+ - "prometheus-node-exporter"
+ # - "prometheus-postgres-exporter"
+ # - "prometheus-nginx-exporter"
+
+prometheus_client_rpi_exporter_version: "0.6.0"
+prometheus_client_arch: "{{ansible_architecture}}"
+prometheus_client_rpi_dest: "rpi_exporter-{{prometheus_client_rpi_exporter_version}}.linux-{{prometheus_client_arch}}"
diff --git a/prometheus/client/tasks/main.yaml b/prometheus/client/tasks/main.yaml
index f763a88..a5a6707 100644
--- a/prometheus/client/tasks/main.yaml
+++ b/prometheus/client/tasks/main.yaml
@@ -1,4 +1,34 @@
---
- name: install prometheus node exporter
- apt: name="prometheus-node-exportery"
+ become: yes
+ apt: name="{{prometheus_client_apt_packages}}"
+
+- name: add prometheus user to video group for GPU stats
+ become: yes
+ user: name="prometheus" groups="video" append="yes"
+
+- name: install prometheus rpi exporter
+ unarchive:
+ src: "https://github.com/lukasmalkmus/rpi_exporter/releases/download/v{{prometheus_client_rpi_exporter_version}}/rpi_exporter-{{prometheus_client_rpi_exporter_version}}.linux-{{prometheus_client_arch}}.tar.gz"
+ remote_src: yes
+ dest: "/tmp/"
+
+- name: install systemd service for rpi exporter
+ become: yes
+ copy:
+ src: "/tmp/{{prometheus_client_rpi_dest}}/rpi_exporter.service"
+ remote_src: yes
+ dest: "/lib/systemd/system/rpi_exporter.service"
+
+- name: install rpi exporter binary
+ become: yes
+ copy:
+ src: "/tmp/{{prometheus_client_rpi_dest}}/rpi_exporter"
+ remote_src: yes
+ dest: "/usr/local/bin/rpi_exporter"
+ mode: "0755"
+
+- name: ensure systemd services are started
+ become: yes
+ systemd: name="rpi_exporter.service" enabled="yes" state="started"
diff --git a/prometheus/server/defaults/main.yaml b/prometheus/server/defaults/main.yaml
new file mode 100644
index 0000000..3893353
--- /dev/null
+++ b/prometheus/server/defaults/main.yaml
@@ -0,0 +1,6 @@
+---
+
+prometheus_server_conf: "prometheus.yml.j2"
+prometheus_server_apt_packages:
+ - "prometheus"
+ - "grafana"
diff --git a/prometheus/server/handlers/main.yaml b/prometheus/server/handlers/main.yaml
new file mode 100644
index 0000000..223e1b0
--- /dev/null
+++ b/prometheus/server/handlers/main.yaml
@@ -0,0 +1,5 @@
+---
+
+- name: restart prometheus service
+ systemd: name="prometheus.service" state="restarted" daemon_reload="yes"
+ become: yes
diff --git a/prometheus/server/tasks/main.yaml b/prometheus/server/tasks/main.yaml
index 470c1cc..8235c9b 100644
--- a/prometheus/server/tasks/main.yaml
+++ b/prometheus/server/tasks/main.yaml
@@ -10,10 +10,13 @@
- name: install prometheus and grafana
become: yes
- apt: name="{{item}}" state="latest"
- with_items:
- - "prometheus"
- - "grafana"
+ 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
-# /etc/prometheus/prometheus.yml
# /etc/grafana/grafana.ini
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'