Merge pull request #56 from svc-design/codex/split-into-node_exporter-and-process_exporter-roles
Add roles for node and process exporters
This commit is contained in:
commit
d6e486ad2a
18
playbooks/deploy_exporters_vhosts.yml
Normal file
18
playbooks/deploy_exporters_vhosts.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
- name: setup Prometheus exporters
|
||||||
|
hosts: cn-homepage.svc.plus
|
||||||
|
become: true
|
||||||
|
vars:
|
||||||
|
group: cn-homepage.svc.plus
|
||||||
|
roles:
|
||||||
|
- roles/vhosts/common/
|
||||||
|
- roles/vhosts/node_exporter/
|
||||||
|
- roles/vhosts/process_exporter/
|
||||||
|
- name: setup Prometheus exporters
|
||||||
|
hosts: global-homepage.svc.plus
|
||||||
|
become: true
|
||||||
|
vars:
|
||||||
|
group: global-homepage.svc.plus
|
||||||
|
roles:
|
||||||
|
- roles/vhosts/common/
|
||||||
|
- roles/vhosts/node_exporter/
|
||||||
|
- roles/vhosts/process_exporter/
|
||||||
2
playbooks/roles/vhosts/node_exporter/meta/main.yml
Normal file
2
playbooks/roles/vhosts/node_exporter/meta/main.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
dependencies:
|
||||||
|
- role: common
|
||||||
62
playbooks/roles/vhosts/node_exporter/tasks/main.yml
Normal file
62
playbooks/roles/vhosts/node_exporter/tasks/main.yml
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
- name: Ensure node_exporter user exists
|
||||||
|
ansible.builtin.user:
|
||||||
|
name: node_exporter
|
||||||
|
system: true
|
||||||
|
shell: /usr/sbin/nologin
|
||||||
|
create_home: false
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Download node_exporter archive
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: >-
|
||||||
|
https://github.com/prometheus/node_exporter/releases/download/v{{
|
||||||
|
node_exporter_version | default('1.8.2') }}/node_exporter-{{
|
||||||
|
node_exporter_version | default('1.8.2') }}.linux-amd64.tar.gz
|
||||||
|
dest: /tmp/node_exporter.tar.gz
|
||||||
|
mode: "0644"
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Extract node_exporter
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
src: /tmp/node_exporter.tar.gz
|
||||||
|
dest: /tmp
|
||||||
|
remote_src: true
|
||||||
|
creates: "/tmp/node_exporter-{{ node_exporter_version | default('1.8.2') }}.linux-amd64"
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Install node_exporter binary
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "/tmp/node_exporter-{{ node_exporter_version | default('1.8.2') }}.linux-amd64/node_exporter"
|
||||||
|
dest: /usr/local/bin/node_exporter
|
||||||
|
mode: '0755'
|
||||||
|
remote_src: true
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Remove node_exporter archive
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /tmp/node_exporter.tar.gz
|
||||||
|
state: absent
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Cleanup extracted directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "/tmp/node_exporter-{{ node_exporter_version | default('1.8.2') }}.linux-amd64"
|
||||||
|
state: absent
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Create node_exporter service
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: node_exporter.service
|
||||||
|
dest: /etc/systemd/system/node_exporter.service
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: '0644'
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Enable and start node_exporter
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: node_exporter
|
||||||
|
enabled: true
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: true
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Prometheus Node Exporter
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=node_exporter
|
||||||
|
Group=node_exporter
|
||||||
|
ExecStart=/usr/local/bin/node_exporter --web.listen-address={{ node_exporter_bind_addr | default('0.0.0.0') }}:{{ node_exporter_port | default('9100') }} --collector.tcpstat --collector.processes
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
NoNewPrivileges=yes
|
||||||
|
PrivateTmp=yes
|
||||||
|
ProtectSystem=full
|
||||||
|
ProtectHome=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
2
playbooks/roles/vhosts/process_exporter/meta/main.yml
Normal file
2
playbooks/roles/vhosts/process_exporter/meta/main.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
dependencies:
|
||||||
|
- role: common
|
||||||
71
playbooks/roles/vhosts/process_exporter/tasks/main.yml
Normal file
71
playbooks/roles/vhosts/process_exporter/tasks/main.yml
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
- name: Ensure process_exporter user exists
|
||||||
|
ansible.builtin.user:
|
||||||
|
name: process_exporter
|
||||||
|
system: true
|
||||||
|
shell: /usr/sbin/nologin
|
||||||
|
create_home: false
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Download process-exporter archive
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: >-
|
||||||
|
https://github.com/ncabatoff/process-exporter/releases/download/v{{
|
||||||
|
process_exporter_version | default('0.7.10') }}/process-exporter-{{
|
||||||
|
process_exporter_version | default('0.7.10') }}.linux-amd64.tar.gz
|
||||||
|
dest: /tmp/process-exporter.tar.gz
|
||||||
|
mode: "0644"
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Extract process-exporter
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
src: /tmp/process-exporter.tar.gz
|
||||||
|
dest: /tmp
|
||||||
|
remote_src: true
|
||||||
|
creates: "/tmp/process-exporter-{{ process_exporter_version | default('0.7.10') }}.linux-amd64"
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Install process-exporter binary
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "/tmp/process-exporter-{{ process_exporter_version | default('0.7.10') }}.linux-amd64/process-exporter"
|
||||||
|
dest: /usr/local/bin/process-exporter
|
||||||
|
mode: '0755'
|
||||||
|
remote_src: true
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Remove process-exporter archive
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /tmp/process-exporter.tar.gz
|
||||||
|
state: absent
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Cleanup extracted process-exporter directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "/tmp/process-exporter-{{ process_exporter_version | default('0.7.10') }}.linux-amd64"
|
||||||
|
state: absent
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Deploy process-exporter config
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: process-exporter.yml
|
||||||
|
dest: /etc/process-exporter.yml
|
||||||
|
owner: process_exporter
|
||||||
|
group: process_exporter
|
||||||
|
mode: '0644'
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Create process-exporter service
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: process-exporter.service
|
||||||
|
dest: /etc/systemd/system/process-exporter.service
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: '0644'
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Enable and start process-exporter
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: process-exporter
|
||||||
|
enabled: true
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: true
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=process-exporter
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=process_exporter
|
||||||
|
Group=process_exporter
|
||||||
|
ExecStart=/usr/local/bin/process-exporter --config.path /etc/process-exporter.yml --web.listen-address={{ process_exporter_bind_addr | default('0.0.0.0') }}:{{ process_exporter_port | default('9256') }}
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
NoNewPrivileges=yes
|
||||||
|
PrivateTmp=yes
|
||||||
|
ProtectSystem=full
|
||||||
|
ProtectHome=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
{% raw %}
|
||||||
|
process_names:
|
||||||
|
- name: "{{.Comm}}"
|
||||||
|
cmdline: [".+"]
|
||||||
|
{% endraw %}
|
||||||
Loading…
Reference in New Issue
Block a user