diff options
Diffstat (limited to 'prometheus')
| -rw-r--r-- | prometheus/client/defaults/main.yaml | 6 | ||||
| -rw-r--r-- | prometheus/client/tasks/main.yaml | 29 | ||||
| -rw-r--r-- | prometheus/rpi-client/defaults/main.yaml | 9 | ||||
| -rw-r--r-- | prometheus/rpi-client/handlers/main.yaml | 5 | ||||
| -rw-r--r-- | prometheus/rpi-client/meta/main.yaml | 4 | ||||
| -rw-r--r-- | prometheus/rpi-client/tasks/main.yaml | 43 | ||||
| -rw-r--r-- | prometheus/server/defaults/main.yaml | 9 | ||||
| -rw-r--r-- | prometheus/server/handlers/main.yaml | 9 | ||||
| -rw-r--r-- | prometheus/server/tasks/main.yaml | 56 | ||||
| -rw-r--r-- | prometheus/server/templates/prometheus.yml.j2 | 42 |
10 files changed, 212 insertions, 0 deletions
diff --git a/prometheus/client/defaults/main.yaml b/prometheus/client/defaults/main.yaml new file mode 100644 index 0000000..5cc3331 --- /dev/null +++ b/prometheus/client/defaults/main.yaml @@ -0,0 +1,6 @@ +--- + +prometheus_client_apt_packages: + - "prometheus-node-exporter" + # - "prometheus-postgres-exporter" + # - "prometheus-nginx-exporter" diff --git a/prometheus/client/tasks/main.yaml b/prometheus/client/tasks/main.yaml new file mode 100644 index 0000000..707b06a --- /dev/null +++ b/prometheus/client/tasks/main.yaml @@ -0,0 +1,29 @@ +--- + +- name: install prometheus node exporter + become: yes + apt: name="prometheus-node-exporter" + +- name: ensure prometheus node exporter is started + become: yes + systemd: name="prometheus-node-exporter.service" enabled="yes" state="started" + +# # Nginx +# - name: check if running nginx +# stat: path="/etc/nginx/" +# register: stat_nginx_conf + +# - name: install prometheus-nginx-exporter +# become: yes +# apt: name="prometheus-nginx-exporter" +# when: stat_nginx_conf.stat.exists + +# # PostgreSQL +# - name: check if running postgresql +# stat: path="/etc/postgresql/" +# register: stat_postgresql_conf + +# - name: install prometheus-postgresql-exporter +# become: yes +# apt: name="prometheus-postgres-exporter" +# when: stat_postgresql_conf.stat.exists diff --git a/prometheus/rpi-client/defaults/main.yaml b/prometheus/rpi-client/defaults/main.yaml new file mode 100644 index 0000000..6ef5b84 --- /dev/null +++ b/prometheus/rpi-client/defaults/main.yaml @@ -0,0 +1,9 @@ +--- + +prometheus_client_rpi_exporter_version: "0.6.0" +prometheus_client_arch: "{{ansible_architecture}}" + +prometheus_client_rpi_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" +prometheus_client_rpi_dest: "rpi_exporter-{{prometheus_client_rpi_exporter_version}}.linux-{{prometheus_client_arch}}" + +prometheus_client_rpi_collect_gpu_temp: true diff --git a/prometheus/rpi-client/handlers/main.yaml b/prometheus/rpi-client/handlers/main.yaml new file mode 100644 index 0000000..7740ce7 --- /dev/null +++ b/prometheus/rpi-client/handlers/main.yaml @@ -0,0 +1,5 @@ +--- + +- name: restart rpi_exporter + systemd: name="rpi_exporter.service" state="restarted" daemon_reload="yes" + become: yes diff --git a/prometheus/rpi-client/meta/main.yaml b/prometheus/rpi-client/meta/main.yaml new file mode 100644 index 0000000..9da06c2 --- /dev/null +++ b/prometheus/rpi-client/meta/main.yaml @@ -0,0 +1,4 @@ +--- + +dependencies: + - role: "prometheus/client" diff --git a/prometheus/rpi-client/tasks/main.yaml b/prometheus/rpi-client/tasks/main.yaml new file mode 100644 index 0000000..271e70c --- /dev/null +++ b/prometheus/rpi-client/tasks/main.yaml @@ -0,0 +1,43 @@ +--- + +- name: add prometheus user to video group for rpi GPU stats + become: yes + user: name="prometheus" groups="video" append="yes" + +- name: install prometheus rpi-exporter + unarchive: + src: "{{prometheus_client_rpi_src}}" + remote_src: yes + dest: "/tmp" + creates: "/tmp/{{prometheus_client_rpi_dest}}" + notify: restart rpi_exporter + +- name: disable GPU temp scraping + become: yes + lineinfile: + path: "/tmp/{{prometheus_client_rpi_dest}}/rpi_exporter.service" + regexp: "^ExecStart=/usr/local/bin/rpi_exporter" + line: "ExecStart=/usr/local/bin/rpi_exporter --no-collector.gpu" + when: not prometheus_client_rpi_collect_gpu_temp + changed_when: false + +- 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" + notify: restart rpi_exporter + +- 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" + notify: restart rpi_exporter + +- name: ensure systemd service is 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..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' |
