# HG changeset patch # User Luke Hoersten # Date 1581302086 21600 # Node ID 4f014cdac0b191a0a5b4e3bede86c6eee8fd1ede # Parent 46fe3aa0080c64d3ff06284a6675f92b9ad40060 Completed prometheus basic roles. diff -r 46fe3aa0080c -r 4f014cdac0b1 .hgignore --- /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$ diff -r 46fe3aa0080c -r 4f014cdac0b1 prometheus/client/defaults/main.yaml --- /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}}" diff -r 46fe3aa0080c -r 4f014cdac0b1 prometheus/client/tasks/main.yaml --- 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" diff -r 46fe3aa0080c -r 4f014cdac0b1 prometheus/server/defaults/main.yaml --- /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" diff -r 46fe3aa0080c -r 4f014cdac0b1 prometheus/server/handlers/main.yaml --- /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 diff -r 46fe3aa0080c -r 4f014cdac0b1 prometheus/server/tasks/main.yaml --- 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 diff -r 46fe3aa0080c -r 4f014cdac0b1 prometheus/server/templates/prometheus.yml.j2 --- /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=` 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'