Completed prometheus basic roles.
--- /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'