Merge pull request #106 from corvus-migratorius/ping-exporter
ping exporter
This commit is contained in:
8
roles/ping_exporter/defaults/main.yml
Normal file
8
roles/ping_exporter/defaults/main.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
ping_exporter_version: "1.2.1"
|
||||||
|
ping_exporter_interval: "5s"
|
||||||
|
ping_exporter_timeout: "4s"
|
||||||
|
ping_exporter_history_size: 42
|
||||||
|
ping_exporter_payload_size: 56
|
||||||
|
ping_exporter_targets:
|
||||||
|
- "1.1.1.1"
|
||||||
7
roles/ping_exporter/handlers/main.yml
Normal file
7
roles/ping_exporter/handlers/main.yml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
- name: "Restart-ping-exporter"
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: ping_exporter
|
||||||
|
state: restarted
|
||||||
|
enabled: true
|
||||||
|
daemon_reload: true
|
||||||
15
roles/ping_exporter/meta/main.yml
Normal file
15
roles/ping_exporter/meta/main.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
author: "Alexander Gorelyshev"
|
||||||
|
company: "Genlab, LLC"
|
||||||
|
description: "Deploy czerwonk/ping_exporter as a systemd unit"
|
||||||
|
license: "GPL-2.0-or-later"
|
||||||
|
min_ansible_version: "2.1"
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: "Ubuntu"
|
||||||
|
versions: ["focal"]
|
||||||
|
|
||||||
|
galaxy_tags: ["prometheus"]
|
||||||
|
|
||||||
|
dependencies: []
|
||||||
7
roles/ping_exporter/molecule/default/converge.yml
Normal file
7
roles/ping_exporter/molecule/default/converge.yml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
- name: Converge
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- role: "genlab.common.ping_exporter"
|
||||||
|
ping_exporter_targets:
|
||||||
|
- "127.0.0.1"
|
||||||
27
roles/ping_exporter/molecule/default/molecule.yml
Normal file
27
roles/ping_exporter/molecule/default/molecule.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: ${MOLECULE_DISTRO:-ubuntu2404}
|
||||||
|
image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2404}-ansible:latest
|
||||||
|
pre_build_image: true
|
||||||
|
command: ${MOLECULE_DOCKER_COMMAND:-""}
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:rw
|
||||||
|
cgroupns_mode: host
|
||||||
|
privileged: true
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: ansible
|
||||||
|
|
||||||
|
lint: |
|
||||||
|
set -e
|
||||||
|
yamllint .
|
||||||
|
ansible-lint .
|
||||||
29
roles/ping_exporter/molecule/default/verify.yml
Normal file
29
roles/ping_exporter/molecule/default/verify.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
- name: Verify
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
any_errors_fatal: true
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: "Include default vars"
|
||||||
|
ansible.builtin.include_vars:
|
||||||
|
dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults/"
|
||||||
|
extensions: ['yml']
|
||||||
|
|
||||||
|
# kics-scan ignore-block
|
||||||
|
- name: "Check if /metrics endpoint is reachable"
|
||||||
|
retries: 10
|
||||||
|
delay: 2
|
||||||
|
register: ping_exporter_metrics_check
|
||||||
|
until: ping_exporter_metrics_check.status == 200
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "http://127.0.0.1:9427/metrics"
|
||||||
|
return_content: true
|
||||||
|
status_code: 200
|
||||||
|
timeout: 5
|
||||||
|
|
||||||
|
- name: "Fail if /metrics doesn't contain ping_exporter metrics"
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that: "'ping_up' in ping_exporter_metrics_check.content"
|
||||||
|
fail_msg: "ping_exporter /metrics endpoint doesn't contain ping_up metrics!"
|
||||||
|
success_msg: "ping_up metrics availble from /metrics"
|
||||||
52
roles/ping_exporter/tasks/main.yml
Normal file
52
roles/ping_exporter/tasks/main.yml
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
# kics-scan disable=2e8d4922-8362-4606-8c14-aa10466a1ce3
|
||||||
|
|
||||||
|
- name: "Install the 'ping_exporter' package from Github (Debian)"
|
||||||
|
tags: ping_exporter
|
||||||
|
when: ansible_os_family == "Debian"
|
||||||
|
notify: "Restart-ping-exporter"
|
||||||
|
vars:
|
||||||
|
version: "{{ ping_exporter_version }}"
|
||||||
|
base_url: "https://github.com/czerwonk/ping_exporter/releases/download"
|
||||||
|
full_url: "{{ base_url }}/v{{ version }}/ping_exporter_{{ version }}_linux_amd64.deb"
|
||||||
|
ansible.builtin.apt:
|
||||||
|
deb: "{{ full_url }}"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: "Install the 'ping_exporter' package from Github (RedHat)"
|
||||||
|
tags: ping_exporter
|
||||||
|
when: ansible_os_family == "RedHat"
|
||||||
|
notify: "Restart-ping-exporter"
|
||||||
|
vars:
|
||||||
|
version: "{{ ping_exporter_version }}"
|
||||||
|
base_url: "https://github.com/czerwonk/ping_exporter/releases/download"
|
||||||
|
full_url: "{{ base_url }}/v{{ version }}/ping_exporter_{{ version }}_linux_amd64.rpm"
|
||||||
|
ansible.builtin.dnf:
|
||||||
|
name: "{{ full_url }}"
|
||||||
|
state: present
|
||||||
|
disable_gpg_check: true
|
||||||
|
|
||||||
|
- name: "Create a ping_exporter user"
|
||||||
|
tags: ping_exporter
|
||||||
|
ansible.builtin.user:
|
||||||
|
name: ping_exporter
|
||||||
|
system: true
|
||||||
|
|
||||||
|
- name: "Ensure that the configuration folder exitsts"
|
||||||
|
tags: ping_exporter
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: directory
|
||||||
|
path: /etc/ping_exporter.
|
||||||
|
owner: ping_exporter
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: "Push the configuration file"
|
||||||
|
tags: ping_exporter
|
||||||
|
notify: "Restart-ping-exporter"
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "config.yml.j2"
|
||||||
|
dest: "/etc/ping_exporter/config.yml"
|
||||||
|
owner: ping_exporter
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
19
roles/ping_exporter/templates/config.yml.j2
Normal file
19
roles/ping_exporter/templates/config.yml.j2
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# List of target hosts (IP addresses or host names) to ping.
|
||||||
|
targets:
|
||||||
|
{% for target in ping_exporter_targets %}
|
||||||
|
- {{ target }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
dns:
|
||||||
|
# enforce a specific DNS server for host name lookups (optional,
|
||||||
|
# defaults to system rsesolver)
|
||||||
|
#nameserver: 1.1.1.1
|
||||||
|
|
||||||
|
# refresh interval for host name (optional)
|
||||||
|
#refresh: 2m45s
|
||||||
|
|
||||||
|
ping:
|
||||||
|
interval: {{ ping_exporter_interval }} # how often to ping a target?
|
||||||
|
timeout: {{ ping_exporter_timeout }} # timeout for a single ICMP Echo Request
|
||||||
|
history-size: {{ ping_exporter_history_size }} # number of results to keep per target
|
||||||
|
payload-size: {{ ping_exporter_payload_size }} # message size for ICMP Echo Requests
|
||||||
1
roles/ping_exporter/vars/main.yml
Normal file
1
roles/ping_exporter/vars/main.yml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
---
|
||||||
Reference in New Issue
Block a user