Browse Source

ajout d'un role pour configurer des nodes prometheus (config node exporter basique)

master
victor héry 6 years ago
parent
commit
bbfc0da8cd
12 changed files with 103 additions and 0 deletions
  1. +12
    -0
      README.md
  2. +8
    -0
      prometheus_nodexporter.yml
  3. +5
    -0
      roles/prometheus_nodexporter/defaults/main.yml
  4. +10
    -0
      roles/prometheus_nodexporter/handlers/main.yml
  5. +2
    -0
      roles/prometheus_nodexporter/tasks/centos.yml
  6. +9
    -0
      roles/prometheus_nodexporter/tasks/debian.yml
  7. +33
    -0
      roles/prometheus_nodexporter/tasks/main.yml
  8. +9
    -0
      roles/prometheus_nodexporter/tasks/redhat.yml
  9. +2
    -0
      roles/prometheus_nodexporter/templates/sd_file.yml.j2
  10. +6
    -0
      roles/prometheus_nodexporter/vars/Debian.yml
  11. +6
    -0
      roles/prometheus_nodexporter/vars/RedHat.yml
  12. +1
    -0
      roles/prometheus_nodexporter/vars/Virtuozzo.yml

+ 12
- 0
README.md View File

@ -83,6 +83,18 @@ Yet another ansible's playbook repository
* generate ed25519 keys for server instead of RSA
* configure ssh client to use strong algorithms
* will create compatibility problem with old ssh versions (openwrt, old putty, debian wheezy)
* prometheus_nodexporter : allow configuration for node with prometheus node-exporter
* debian 9 and centos 7 compatible
* You can configure prometheus_exporter_listen_address (default 0.0.0.0) and prometheus_exporter_listen_port (default 9100)
* use file_sd_configs on prometheus server with prometheus_sd_directory (default to /etc/prometheus/nodes/) :
```
- job_name: 'node'
file_sd_configs:
- files:
- '{{ prometheus_sd_directory }}/*.json'
- '{{ prometheus_sd_directory }}/*.yml'
- '{{ prometheus_sd_directory }}/*.yaml'
```
## example host file
=====

+ 8
- 0
prometheus_nodexporter.yml View File

@ -0,0 +1,8 @@
---
- name: Configure prometheus node to be used with server
hosts: all
user: root
gather_facts: yes
roles:
- prometheus_nodexporter

+ 5
- 0
roles/prometheus_nodexporter/defaults/main.yml View File

@ -0,0 +1,5 @@
---
prometheus_exporter_listen_address: "0.0.0.0"
prometheus_exporter_listen_port: "9100"
prometheus_sd_directory: "/etc/prometheus/nodes/"

+ 10
- 0
roles/prometheus_nodexporter/handlers/main.yml View File

@ -0,0 +1,10 @@
- name: restart exporter
systemd: state=restarted name= {{ prometheus_exporter_service }}
- name: enable exporter
systemd: enabled=yes name={{ prometheus_exporter_service }}
- name: reload server
uri:
url: "http://{{ prometheus_server }}:9090/-/reload"
method: POST

+ 2
- 0
roles/prometheus_nodexporter/tasks/centos.yml View File

@ -0,0 +1,2 @@
---

+ 9
- 0
roles/prometheus_nodexporter/tasks/debian.yml View File

@ -0,0 +1,9 @@
---
- name: enable exporter on listen address
lineinfile:
path: /etc/default/prometheus-node-exporter
regexp: '^ARGS=(.*) \\'
backrefs: yes
line: 'ARGS=\1 -web.listen-address {{ prometheus_exporter_listen_address }}:{{ prometheus_exporter_listen_port }} \\'
notify: restart exporter

+ 33
- 0
roles/prometheus_nodexporter/tasks/main.yml View File

@ -0,0 +1,33 @@
---
# Role to deploy prometheus node and add them to a prometheus server
- name: Import OS variables
include_vars: "{{ ansible_os_family }}.yml"
- name: install node exporter
package:
name: "{{ prometheus_exporter_package }}"
state: latest
notify: enable exporter
- import_tasks: debian.yml
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
- import_tasks: redhat.yml
when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux' or ansible_distribution == 'Virtuozzo'
- name: import discovery file to server
template:
src: sd_file.yml.j2
dest: "{{ prometheus_sd_directory }}/{{ ansible_nodename }}.yml"
delegate_to: "{{ prometheus_server }}"
- name: add nodename to server hosts
lineinfile:
path: /etc/hosts
regexp: '{{ prometheus_exporter_listen_address }} {{ ansible_nodename }}'
state: present
line: '{{ prometheus_exporter_listen_address }} {{ ansible_nodename }}'
delegate_to: "{{ prometheus_server }}"
when: prometheus_exporter_listen_address is defined and prometheus_exporter_listen_address != "0.0.0.0"
notify: reload server

+ 9
- 0
roles/prometheus_nodexporter/tasks/redhat.yml View File

@ -0,0 +1,9 @@
---
- name: enable exporter on listen address
lineinfile:
path: /etc/sysconfig/node_exporter
regexp: '^LISTEN_ADDRESS='
backrefs: yes
line: 'LISTEN_ADDRESS="{{ prometheus_exporter_listen_address }}:{{ prometheus_exporter_listen_port }}"'
notify: restart exporter

+ 2
- 0
roles/prometheus_nodexporter/templates/sd_file.yml.j2 View File

@ -0,0 +1,2 @@
- targets:
- "{{ ansible_nodename }}:{{ prometheus_exporter_listen_port }}"

+ 6
- 0
roles/prometheus_nodexporter/vars/Debian.yml View File

@ -0,0 +1,6 @@
---
# Prometheus variables for Debian
prometheus_exporter_package: "prometheus-node-exporter"
prometheus_exporter_service: "prometheus-node-exporter.service"

+ 6
- 0
roles/prometheus_nodexporter/vars/RedHat.yml View File

@ -0,0 +1,6 @@
---
# Prometheus variables for RedHat
prometheus_exporter_package: "prometheus-node_exporter"
prometheus_exporter_service: "node_exporter.service"

+ 1
- 0
roles/prometheus_nodexporter/vars/Virtuozzo.yml View File

@ -0,0 +1 @@
RedHat.yml

Loading…
Cancel
Save