Completed prometheus basic roles.
authorLuke Hoersten <luke@hoersten.org>
Sun, 09 Feb 2020 20:34:46 -0600
changeset 5 4f014cdac0b1
parent 4 46fe3aa0080c
child 6 3b1f18f6a5a4
Completed prometheus basic roles.
.hgignore
prometheus/client/defaults/main.yaml
prometheus/client/tasks/main.yaml
prometheus/server/defaults/main.yaml
prometheus/server/handlers/main.yaml
prometheus/server/tasks/main.yaml
prometheus/server/templates/prometheus.yml.j2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore	Sun Feb 09 20:34:46 2020 -0600
@@ -0,0 +1,5 @@
+syntax: regexp
+~$
+\#.*\#$
+\.\#
+\.DS_Store$
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/prometheus/client/defaults/main.yaml	Sun Feb 09 20:34:46 2020 -0600
@@ -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}}"
--- a/prometheus/client/tasks/main.yaml	Sun Feb 09 13:17:16 2020 -0600
+++ b/prometheus/client/tasks/main.yaml	Sun Feb 09 20:34:46 2020 -0600
@@ -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"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/prometheus/server/defaults/main.yaml	Sun Feb 09 20:34:46 2020 -0600
@@ -0,0 +1,6 @@
+---
+
+prometheus_server_conf: "prometheus.yml.j2"
+prometheus_server_apt_packages:
+  - "prometheus"
+  - "grafana"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/prometheus/server/handlers/main.yaml	Sun Feb 09 20:34:46 2020 -0600
@@ -0,0 +1,5 @@
+---
+
+- name: restart prometheus service
+  systemd: name="prometheus.service" state="restarted" daemon_reload="yes"
+  become: yes
--- a/prometheus/server/tasks/main.yaml	Sun Feb 09 13:17:16 2020 -0600
+++ b/prometheus/server/tasks/main.yaml	Sun Feb 09 20:34:46 2020 -0600
@@ -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"
 
-# /etc/prometheus/prometheus.yml
+- name: configure prometheus
+  become: yes
+  template:
+    src: "{{prometheus_server_conf}}"
+    dest: "/etc/prometheus/prometheus.yml"
+  notify: restart prometheus service
+
 # /etc/grafana/grafana.ini
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/prometheus/server/templates/prometheus.yml.j2	Sun Feb 09 20:34:46 2020 -0600
@@ -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'