first implement of blackbox

This commit is contained in:
Ludovic Cartier 2021-11-02 15:51:47 +01:00
parent 6e060e5ab0
commit 2214426937
6 changed files with 164 additions and 0 deletions

View File

@ -53,3 +53,10 @@
state: restarted
enabled: yes
tags: ['prometheus']
- name: 'prometheus | blackbox exporter | restart service'
systemd:
name: prometheus-blackbox-exporter.service
state: restarted
enabled: yes
tags: ['prometheus']

56
tasks/blackbox.yml Normal file
View File

@ -0,0 +1,56 @@
---
- name: 'prometheus | blackbox exporter | get latest release from GitHub'
shell: curl --silent "https://api.github.com/repos/prometheus/blackbox_exporter/releases/latest" | jq -r .tag_name | sed "s/v//"
args:
warn: false
register: prometheus_blackbox_exporter_latest_version
run_once: true
- name: 'prometheus | blackbox exporter | download'
get_url:
url: https://github.com/prometheus/blackbox_exporter/releases/download/v{{ prometheus_blackbox_exporter_version|default(prometheus_blackbox_exporter_latest_version.stdout) }}/blackbox_exporter-{{ prometheus_blackbox_exporter_version|default(prometheus_blackbox_exporter_latest_version.stdout) }}.linux-amd64.tar.gz
dest: /tmp
- name: 'prometheus | blackbox exporter | unarchive'
unarchive:
remote_src: yes
src: /tmp/blackbox_exporter-{{ prometheus_blackbox_exporter_version|default(prometheus_blackbox_exporter_latest_version.stdout) }}.linux-amd64.tar.gz
dest: /tmp
- name: 'prometheus | blackbox exporter | move to /usr/local/bin'
copy:
src: /tmp/blackbox_exporter-{{ prometheus_blackbox_exporter_version|default(prometheus_blackbox_exporter_latest_version.stdout) }}.linux-amd64/blackbox_exporter
dest: /usr/local/bin/prometheus-blackbox-exporter
remote_src: yes
owner: root
group: root
mode: 0755
notify:
- 'prometheus | blackbox exporter | restart service'
- name: 'prometheus | blackbox exporter | configuration'
template:
src: conf/prometheus-blackbox-exporter.j2
dest: /etc/prometheus/prometheus-blackbox-exporter.yml
owner: root
group: root
mode: 0600
when:
- prometheus_blackbox_exporter_user is defined
register: prometheus_blackbox_exporter_configuration
notify:
- 'prometheus | blackbox exporter | restart service'
- name: 'prometheus | blackbox exporter | install unit file to systemd'
template:
src: systemd/prometheus-blackbox-exporter.service.j2
dest: /etc/systemd/system/prometheus-blackbox-exporter.service
owner: root
group: root
mode: 0600
- name: 'prometheus | blackbox exporter | configure systemd to use service'
systemd:
daemon_reload: yes
enabled: yes
name: prometheus-blackbox-exporter.service

View File

@ -44,3 +44,8 @@
include_tasks: 'varnish_exporter.yml'
when:
- "'varnish' in prometheus_exporter_packages"
- name: 'prometheus | Blackbox exporter'
include_tasks: 'varnish_exporter.yml'
when:
- "'blackbox' in prometheus_exporter_packages"

View File

@ -0,0 +1,37 @@
modules:
http_2xx:
prober: http
timeout: 30s
http:
preferred_ip_protocol: "ipv4"
http_post_2xx:
prober: http
http:
preferred_ip_protocol: "ipv4"
method: POST
tcp_connect:
prober: tcp
pop3s_banner:
prober: tcp
tcp:
query_response:
- expect: "^+OK"
tls: true
tls_config:
insecure_skip_verify: false
ssh_banner:
prober: tcp
tcp:
query_response:
- expect: "^SSH-2.0-"
irc_banner:
prober: tcp
tcp:
query_response:
- send: "NICK prober"
- send: "USER prober prober prober :prober"
- expect: "PING :([^ ]+)"
send: "PONG ${1}"
- expect: "^:[^ ]+ 001"
icmp:
prober: icmp

View File

@ -32,6 +32,7 @@ scrape_configs:
- targets: ['localhost:9090']
{% if prometheus_node_exporter_targets is defined %}
# node exporter #
- job_name: node
scrape_interval: 30s
scrape_timeout: 10s
@ -43,6 +44,7 @@ scrape_configs:
{% endif %}
{% if prometheus_mysqld_exporter_targets is defined %}
# mysql exporter #
- job_name: mysql
scrape_interval: 30s
scrape_timeout: 10s
@ -65,6 +67,7 @@ scrape_configs:
{% endif %}
{% if prometheus_mongodb_exporter_targets is defined %}
# mongoDB exporter #
- job_name: mongodb
scrape_interval: 30s
scrape_timeout: 10s
@ -87,6 +90,7 @@ scrape_configs:
{% endif %}
{% if prometheus_postgres_exporter_targets is defined %}
# postgresql exporter #
- job_name: postgresql
scrape_interval: 30s
scrape_timeout: 10s
@ -109,6 +113,7 @@ scrape_configs:
{% endif %}
{% if prometheus_phpfpm_exporter_targets is defined %}
# PHP-FPM exporter #
- job_name: phpfpm
scrape_interval: 30s
scrape_timeout: 10s
@ -120,6 +125,7 @@ scrape_configs:
{% endif %}
{% if prometheus_apache_exporter_targets is defined %}
# apache exporter #
- job_name: apache
scrape_interval: 30s
scrape_timeout: 10s
@ -131,6 +137,7 @@ scrape_configs:
{% endif %}
{% if prometheus_haproxy_exporter_targets is defined %}
# haproxy exporter #
- job_name: haproxy
scrape_interval: 30s
scrape_timeout: 10s
@ -151,3 +158,45 @@ scrape_configs:
- {{ target }}:9131
{% endfor %}
{% endif %}
//
{% if prometheus_blackbox_exporter_targets is defined %}
# blacbox #
{% for target in prometheus_blackbox_exporter_http.values() %}
## http check ##
- job_name: blackbox - url {{ target.name }}
scrape_interval: 30s
scrape_timeout: 10s
metrics_path: {{ target.metrics_path }}
params:
module: [http_2xx]
static_configs:
- targets:
- {{target.host }}
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9115
{% endfor %}
{% for target in prometheus_blackbox_exporter_ping.values() %}
## ping ##
- job_name: blackbox - ping {{ target.name }}
scrape_interval: 30s
scrape_timeout: 10s
params:
module: [icmp]
static_configs:
- targets:
- {{ target.host }}
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9115
{% endfor %}
{% endif %}

View File

@ -0,0 +1,10 @@
[Unit]
Description=Prometheus Blacbox Exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/prometheus-blackbox-exporter --config.file /etc/prometheus/prometheus-blackbox-exporter.yml
[Install]
WantedBy=multi-user.target