From 844c485bba6babc7867855190c25c33b1e5ec78d Mon Sep 17 00:00:00 2001 From: Alexandre Iooss <erdnaxe@crans.org> Date: Mon, 13 May 2019 12:36:03 +0200 Subject: [PATCH] [prometheus] Install snmp export --- monitoring.yml | 3 +++ roles/prometheus-node/handlers/main.yml | 5 ++++ roles/prometheus-node/tasks/main.yml | 6 +++++ roles/prometheus/handlers/main.yml | 5 ++++ roles/prometheus/tasks/main.yml | 26 ++++++++++++++++++- .../templates/prometheus/prometheus.yml.j2 | 15 ++++++++++- 6 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 roles/prometheus-node/handlers/main.yml diff --git a/monitoring.yml b/monitoring.yml index 955294f6..87fcc585 100644 --- a/monitoring.yml +++ b/monitoring.yml @@ -27,6 +27,9 @@ job: prometheus targets: - localhost:9090 + prometheus_snmp_targets: + - targets: + - pulsar.adm.crans.org roles: - prometheus - prometheus-alertmanager diff --git a/roles/prometheus-node/handlers/main.yml b/roles/prometheus-node/handlers/main.yml new file mode 100644 index 00000000..b4b64a4b --- /dev/null +++ b/roles/prometheus-node/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: Restart prometheus-node-exporter + service: + name: prometheus-node-exporter + state: restarted diff --git a/roles/prometheus-node/tasks/main.yml b/roles/prometheus-node/tasks/main.yml index 8a175e98..a41a67f1 100644 --- a/roles/prometheus-node/tasks/main.yml +++ b/roles/prometheus-node/tasks/main.yml @@ -7,6 +7,12 @@ retries: 3 until: apt_result is succeeded +- name: Activate prometheus-node-exporter service + systemd: + name: prometheus-node-exporter + enabled: yes + state: started + # Doesn't work on Debian Stretch - name: Make Prometheus node-exporter listen on adm only when: diff --git a/roles/prometheus/handlers/main.yml b/roles/prometheus/handlers/main.yml index 4214def5..670847ba 100644 --- a/roles/prometheus/handlers/main.yml +++ b/roles/prometheus/handlers/main.yml @@ -3,3 +3,8 @@ service: name: prometheus state: restarted + +- name: Restart prometheus-snmp-exporter + service: + name: prometheus-snmp-exporter + state: restarted diff --git a/roles/prometheus/tasks/main.yml b/roles/prometheus/tasks/main.yml index 3f705421..5fa2e817 100644 --- a/roles/prometheus/tasks/main.yml +++ b/roles/prometheus/tasks/main.yml @@ -2,7 +2,9 @@ - name: Install Prometheus apt: update_cache: true - name: prometheus + name: + - prometheus + - prometheus-snmp-exporter register: apt_result retries: 3 until: apt_result is succeeded @@ -19,8 +21,30 @@ dest: /etc/prometheus/alert.rules.yml notify: Restart Prometheus +# Doesn't work on Debian Stretch +- name: Make Prometheus snmp-exporter listen on adm only + when: + - ansible_distribution_release == 'buster' + lineinfile: + path: /etc/default/prometheus-node-exporter + regexp: '^ARGS=' + line: "ARGS=\"--web.listen-address={{ ansible_fqdn }}:9116\"" + notify: Restart prometheus-snmp-exporter + # We don't need to restart Prometheus when updating nodes - name: Configure Prometheus nodes copy: content: "{{ prometheus_targets | to_nice_json }}" dest: /etc/prometheus/targets.json + +# We don't need to restart Prometheus when updating nodes +- name: Configure Prometheus SNMP devices + copy: + content: "{{ prometheus_snmp_targets | to_nice_json }}" + dest: /etc/prometheus/targets_snmp.json + +- name: Activate prometheus service + systemd: + name: prometheus + enabled: yes + state: started diff --git a/roles/prometheus/templates/prometheus/prometheus.yml.j2 b/roles/prometheus/templates/prometheus/prometheus.yml.j2 index 76573fa9..05711426 100644 --- a/roles/prometheus/templates/prometheus/prometheus.yml.j2 +++ b/roles/prometheus/templates/prometheus/prometheus.yml.j2 @@ -29,4 +29,17 @@ scrape_configs: file_sd_configs: - files: - '/etc/prometheus/targets.json' - + - job_name: snmp + file_sd_configs: + - files: + - '/etc/prometheus/targets_snmp.json' + metrics_path: /snmp + params: + module: [if_mib] + relabel_configs: + - source_labels: [__address__] + target_label: __param_target + - source_labels: [__param_target] + target_label: instance + - target_label: __address__ + replacement: 127.0.0.1:9116 -- GitLab