added support for the blackbox exporter

This commit is contained in:
nd 2020-06-06 23:41:06 +02:00
parent 7997ebfb59
commit f772558e31
No known key found for this signature in database
GPG key ID: 21B5CD4DEE3670E9
6 changed files with 113 additions and 7 deletions

View file

@ -199,6 +199,30 @@ prometheus_agent:
'web.listen-address': "[::1]:9100" 'web.listen-address': "[::1]:9100"
proxy: proxy:
mappings: {} mappings: {}
blackbox:
enable: False
args:
"web.listen-address": "[::1]:9115"
"config.file": "/etc/prometheus/blackbox.yml"
config:
modules:
http_2xx:
prober: http
http:
http_post_2xx:
prober: http
http:
method: POST
tcp_connect:
prober: tcp
ssh_banner:
prober: tcp
tcp:
query_response:
- expect: "^SSH-2.0-"
icmp:
prober: icmp
jobs: {}
scrape_timeout: ~ scrape_timeout: ~
scrape_interval: ~ scrape_interval: ~
scrapers: {} scrapers: {}

View file

@ -7,3 +7,8 @@
service: service:
name: stunnel4 name: stunnel4
state: restarted state: restarted
- name: restart blackbox exporter
service:
name: prometheus-blackbox-exporter
state: restarted

View file

@ -2,6 +2,32 @@
apt: apt:
pkg: prometheus-node-exporter pkg: prometheus-node-exporter
- name: copy node-exporter config
notify: restart node-exporter
template:
src: node-exporter.j2
dest: /etc/default/prometheus-node-exporter
- name: handle blackbox exporter
when: prometheus_agent.agents.blackbox.enable
block:
- name: install blackbox exporter
apt:
pkg: prometheus-blackbox-exporter
- name: wrtie blackbox exporter service config
notify: restart blackbox exporter
template:
src: prometheus-blackbox.j2
dest: /etc/default/prometheus-blackbox-exporter
- name: wrtie blackbox exporter config
notify: restart blackbox exporter
copy:
owner: root
group: root
mode: 0644
dest: /etc/prometheus/blackbox.yml
content: "{{ prometheus_agent.agents.blackbox.config|to_nice_yaml(indent=2) }}"
- name: manage tls - name: manage tls
when: prometheus_agent.tls.manage when: prometheus_agent.tls.manage
block: block:
@ -20,12 +46,6 @@
certificates: certificates:
certs: "{{ {}|combine(prometheus_certs, inventory_certs, recursive=True) }}" certs: "{{ {}|combine(prometheus_certs, inventory_certs, recursive=True) }}"
- name: copy node-exporter config
template:
src: node-exporter.j2
dest: /etc/default/prometheus-node-exporter
notify: restart node-exporter
- name: slurp up all scraper certs - name: slurp up all scraper certs
loop: "{{ prometheus_agent.scrapers.keys()|list }}" loop: "{{ prometheus_agent.scrapers.keys()|list }}"
delegate_to: "{{ item }}" delegate_to: "{{ item }}"

View file

@ -18,6 +18,40 @@
- replacement: 'node' - replacement: 'node'
target_label: job target_label: job
{% if prometheus_agent.scrapers[item].blackbox and prometheus_agent.agents.blackbox.enable %}
{% for j in prometheus_agent.agents.blackbox.jobs %}
{% set job=prometheus_agent.agents.blackbox.jobs[j] %}
- job_name: "prometheus-agent - blackbox - {{ j }} : {{ inventory_hostname }}"
scheme: https
{% for i in ['scrape_timeout', 'scrape_interval'] if (prometheus_agent|combine(job))[i] %}
{{ i }}: {{ (prometheus_agent|combine(job))[i] }}
{% endfor %}
params:
module: [{{ job.module }}]
static_configs:
- targets:
{% for t in job.targets %}
- {{ t }}
{% endfor %}
labels: {{ merged_prometheus_labels|combine(job.labels)|to_json }}
tls_config:
ca_file: /etc/prometheus/targetcerts/{{ inventory_hostname }}.crt
cert_file: /etc/ssl/prometheus_scraper.crt
key_file: /etc/ssl/private/prometheus_scraper.key
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- replacement: 'blackbox'
target_label: job
- replacement: '{{ job.module }}'
target_label: module
- target_label: __address__
replacement: {{ inventory_hostname }}:{{ prometheus_agent.scrapers[item].blackbox }}
{% endfor %}
{% endif %}
{% for j in prometheus_agent.scrapers[item].proxy|d({}) %} {% for j in prometheus_agent.scrapers[item].proxy|d({}) %}
- job_name: "prometheus-agent - proxy - {{ j }} : {{ inventory_hostname }}" - job_name: "prometheus-agent - proxy - {{ j }} : {{ inventory_hostname }}"
scheme: https scheme: https

View file

@ -0,0 +1,10 @@
ARGS="{% for i in prometheus_agent.agents.blackbox.args %} --{{ i }}{% if prometheus_agent.agents.blackbox.args[i] and prometheus_agent.agents.blackbox.args[i] != {} %}='{{ prometheus_agent.agents.blackbox.args[i] }}'{% endif %} {% endfor %}"
# Usage of prometheus-blackbox-exporter:
# --config.file="blackbox.yml"
# Blackbox exporter configuration file.
# --web.listen-address=":9115"
# The address to listen on for HTTP requests.
# --timeout-offset=0.5 Offset to subtract from timeout in seconds.
# --log.level=info Only log messages with the given severity or above.
# One of: [debug, info, warn, error]

View file

@ -13,6 +13,19 @@ verifyPeer = yes
CAfile = /etc/ssl/scraper_{{ i }}.crt CAfile = /etc/ssl/scraper_{{ i }}.crt
{% endfor %} {% endfor %}
{% for i in prometheus_agent.scrapers if "blackbox" in prometheus_agent.scrapers[i] and prometheus_agent.agents.blackbox.enable%}
; blackbox
[scraper {{ i }} blackbox]
client = no
requireCert = yes
accept = {{ prometheus_agent.scrapers[i].blackbox }}
connect = {{ prometheus_agent.agents.blackbox.args['web.listen-address']|replace('[', '')|replace(']', '') }}
cert = /etc/ssl/prometheus_agent.crt
key = /etc/ssl/private/prometheus_agent.key
verifyPeer = yes
CAfile = /etc/ssl/scraper_{{ i }}.crt
{% endfor %}
; proxy ; proxy
{% for i in prometheus_agent.scrapers if "proxy" in prometheus_agent.scrapers[i] %} {% for i in prometheus_agent.scrapers if "proxy" in prometheus_agent.scrapers[i] %}
{% for j in prometheus_agent.scrapers[i].proxy|d({}) %} {% for j in prometheus_agent.scrapers[i].proxy|d({}) %}