Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#95 enable basic prometheus installation on demand #96

Merged
merged 2 commits into from Aug 23, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions Vagrantfile
Expand Up @@ -17,6 +17,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.network :forwarded_port, guest: 8080, host: 8080, auto_correct: true # Glassfish API Endpoint
config.vm.network :forwarded_port, guest: 8181, host: 8181, auto_correct: true # ???
config.vm.network :forwarded_port, guest: 8983, host: 8983, auto_correct: true # Solr
config.vm.network :forwarded_port, guest: 9090, host: 9090, auto_correct: true # Prometheus

config.vm.provision :ansible_local do |ansible|
ansible.playbook = "tests/site.yml"
Expand Down
7 changes: 7 additions & 0 deletions defaults/main.yml
Expand Up @@ -117,6 +117,13 @@ munin:
user: admin
passwd: p4sswurd

prometheus:
install: false
node_exporter: https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
root: /usr/local/prometheus
url: https://github.com/prometheus/prometheus/releases/download/v2.11.1/prometheus-2.11.1.linux-amd64.tar.gz
user: prometheus

rserve:
install: true
host: localhost
Expand Down
22 changes: 22 additions & 0 deletions files/prometheus.yml
@@ -0,0 +1,22 @@
global:
scrape_interval: 30s
evaluation_interval: 30s
scrape_timeout: 30s

# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:

- prometheus-cpu.yml

scrape_configs:

- job_name: 'dataverse'
static_configs:
- targets: ['localhost:9090']
4 changes: 4 additions & 0 deletions tasks/main.yml
Expand Up @@ -70,5 +70,9 @@
when: munin.install == true
tags: munin

- include: prometheus.yml
when: prometheus.install == true
tags: prometheus

- name: Fin
debug: msg="Dataverse installation complete! Please check output logs in /tmp for further review."
86 changes: 86 additions & 0 deletions tasks/prometheus.yml
@@ -0,0 +1,86 @@
---

- name: add prometheus service account
user:
name: '{{ prometheus.user }}'

# firewalld is outside the role scope
#- name: punch prometheus firewall holes
# firewalld:
# port: '{{ item }}'
# permanent: yes
# state: enabled
# with_items:
# - 9090/tcp
# - 9100/tcp

- name: unarchive won't create directory
file:
path: '{{ prometheus.root }}'
state: directory
owner: '{{ prometheus.user }}'
mode: '0755'

- name: install prometheus
unarchive:
src: '{{ prometheus.url }}'
dest: '{{ prometheus.root }}'
owner: '{{ prometheus.user }}'
remote_src: yes
extra_opts: [--strip-components=1]

- name: copy prometheus config file
copy:
src: prometheus.yml
dest: '{{ prometheus.root }}/prometheus.yml'
owner: '{{ prometheus.user }}'
mode: 0644

- name: node_exporter dir must exist
file:
path: '{{ prometheus.root }}/node_exporter'
state: directory
owner: '{{ prometheus.user }}'
mode: '0755'

- name: install node_exporter
unarchive:
src: '{{ prometheus.node_exporter }}'
dest: '{{ prometheus.root }}/node_exporter'
remote_src: yes
extra_opts: [--strip-components=1]

- name: place prometheus systemd template
template:
src: prometheus.service.j2
dest: /usr/lib/systemd/system/prometheus.service
owner: root
group: root
mode: 0644

- name: place node_exporter systemd template
template:
src: node_exporter.service.j2
dest: /usr/lib/systemd/system/node_exporter.service
owner: root
group: root
mode: 0644

- name: reload systemd
shell: systemctl daemon-reload

- name: start and enable prometheus
systemd:
name: prometheus
state: started
enabled: yes

- name: give prometheus a breather
pause:
seconds: 2

- name: start and enable node_exporter
systemd:
name: prometheus
state: started
enabled: yes
11 changes: 11 additions & 0 deletions templates/node_exporter.service.j2
@@ -0,0 +1,11 @@
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart={{ prometheus.root }}/node_exporter/node_exporter

[Install]
WantedBy=default.target
17 changes: 17 additions & 0 deletions templates/prometheus.service.j2
@@ -0,0 +1,17 @@
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
User=prometheus
Restart=on-failure

#Change this line if you download the
#Prometheus on different path user
ExecStart={{ prometheus.root }}/prometheus \
--config.file={{ prometheus.root }}/prometheus.yml \
--storage.tsdb.path={{ prometheus.root }}/data

[Install]
WantedBy=multi-user.target
9 changes: 8 additions & 1 deletion tests/group_vars/vagrant.yml
Expand Up @@ -112,11 +112,18 @@ dataverse:
enabled: true

munin:
install: true
install: false
admin:
user: admin
passwd: p4sswurd

prometheus:
install: true
node_exporter: https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
root: /usr/local/prometheus
url: https://github.com/prometheus/prometheus/releases/download/v2.11.1/prometheus-2.11.1.linux-amd64.tar.gz
user: prometheus

rserve:
install: true
host: localhost
Expand Down