Skip to content

Commit

Permalink
Add blackbox exporter
Browse files Browse the repository at this point in the history
  • Loading branch information
ernestas-poskus committed Dec 12, 2017
1 parent 434bf84 commit ead563c
Show file tree
Hide file tree
Showing 12 changed files with 167 additions and 0 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Playbook installs and manages services using systemd. Currently supported:
- Node Exporter (collects metrics of host machine)
- Alert manager
- Push gateway
- SNMP exporter
- Blackbox exporter

Playbook includes extensive configuration options check default/main.yml

Expand All @@ -35,6 +37,7 @@ prometheus_node_exporter_install: true
prometheus_alert_manager_install: true
prometheus_push_gateway_install: false
prometheus_snmp_exporter_install: false
prometheus_blackbox_exporter_install: false

prometheus_owner: 'prometheus'
prometheus_group: 'prometheus'
Expand All @@ -49,6 +52,7 @@ prometheus_alert_manager_data_dir: "{{ prometheus_lib_dir }}/alertmanager"
prometheus_alert_manager_config_dir: "{{ prometheus_config_dir }}/alertmanager"
prometheus_alert_manager_templates_dir: "{{ prometheus_config_dir }}/alertmanager/templates"
prometheus_snmp_exporter_config_dir: "{{ prometheus_config_dir }}/snmpexporter"
prometheus_blackbox_exporter_config_dir: "{{ prometheus_config_dir }}/blackboxexporter"

# Prometheus
prometheus_version: '2.0.0'
Expand All @@ -65,6 +69,9 @@ prometheus_push_gateway_version: '0.4.0'

# SNMP exporter
prometheus_snmp_exporter_version: '0.8.0'

# Blackbox exporter
prometheus_blackbox_exporter_version: '0.11.0'
```
![DOCS: Prometheus variables](/docs/prometheus.md)
Expand All @@ -77,6 +84,8 @@ prometheus_snmp_exporter_version: '0.8.0'
![DOCS: SNMP exporter variables](/docs/snmp_exporter.md)
![DOCS: Blackbox exporter variables](/docs/blackbox_exporter.md)
Dependencies
------------
Expand Down
23 changes: 23 additions & 0 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ prometheus_node_exporter_install: true
prometheus_alert_manager_install: true
prometheus_push_gateway_install: false
prometheus_snmp_exporter_install: false
prometheus_blackbox_exporter_install: false

prometheus_owner: 'prometheus'
prometheus_group: 'prometheus'
Expand All @@ -20,6 +21,7 @@ prometheus_alert_manager_data_dir: "{{ prometheus_lib_dir }}/alertmanager"
prometheus_alert_manager_config_dir: "{{ prometheus_config_dir }}/alertmanager"
prometheus_alert_manager_templates_dir: "{{ prometheus_config_dir }}/alertmanager/templates"
prometheus_snmp_exporter_config_dir: "{{ prometheus_config_dir }}/snmpexporter"
prometheus_blackbox_exporter_config_dir: "{{ prometheus_config_dir }}/blackboxexporter"

# Prometheus
prometheus_version: '2.0.0'
Expand All @@ -37,6 +39,9 @@ prometheus_push_gateway_version: '0.4.0'
# SNMP exporter
prometheus_snmp_exporter_version: '0.8.0'

# Blackbox exporter
prometheus_blackbox_exporter_version: '0.11.0'

# Prometheus
# https://prometheus.io/docs/operating/configuration/

Expand Down Expand Up @@ -352,3 +357,21 @@ prometheus_snmp_exporter_log__level: 'info'

# Set the log target and format. Example: "logger:syslog?appname=bob&local=7" or "logger:stdout?json=true"
prometheus_snmp_exporter_log__format: 'logger:stderr'

# Blackbox exporter
# https://github.com/prometheus/blackbox_exporter

prometheus_black_box_config__file: "{{ prometheus_blackbox_exporter_config_dir }}/blackbox.yml"
# Blackbox exporter configuration file.

prometheus_black_box_web__listen_address: ':9115'
# The address to listen on for HTTP requests.

prometheus_black_box_timeout_offset: '0.5'
# Offset to subtract from timeout in seconds.

prometheus_black_box_log__level: 'info'
# Only log messages with the given severity or above. One of: [debug, info, warn, error]

prometheus_black_box_config_modules:
# Blackbox modules config in format of YAML
21 changes: 21 additions & 0 deletions docs/blackbox_exporter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Blackbox exporter variables

```yaml
# Blackbox exporter
# https://github.com/prometheus/blackbox_exporter

prometheus_black_box_config__file: "{{ prometheus_blackbox_exporter_config_dir }}/blackbox.yml"
# Blackbox exporter configuration file.

prometheus_black_box_web__listen_address: ':9115'
# The address to listen on for HTTP requests.

prometheus_black_box_timeout_offset: '0.5'
# Offset to subtract from timeout in seconds.

prometheus_black_box_log__level: 'info'
# Only log messages with the given severity or above. One of: [debug, info, warn, error]

prometheus_black_box_config_modules:
# Blackbox modules config in format of YAML
```
12 changes: 12 additions & 0 deletions handlers/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,15 @@

- name: start snmpexporter
service: name=snmpexporter state=started

- name: restart blackboxexporter
service: name=blackboxexporter state=restarted enabled=yes

- name: stop blackboxexporter
service: name=blackboxexporter state=stopped

- name: start blackboxexporter
service: name=blackboxexporter state=started

- name: reload blackboxexporter
service: name=blackboxexporter state=reloaded
27 changes: 27 additions & 0 deletions tasks/install-blackbox_exporter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
- include_vars: 'blackboxexporter.yml'

- name: Download and extract Prometheus blackbox_exporter tarball
unarchive:
src: "{{ prometheus_blackbox_exporter_tarball_url }}"
dest: "{{ prometheus_install_dir }}"
owner: "{{ prometheus_owner }}"
group: "{{ prometheus_group }}"
copy: no
creates: "{{ prometheus_install_dir }}/{{ prometheus_blackbox_exporter_archive }}"

- name: Copy blackbox exporter config
template:
src: blackbox.yml.j2
dest: "{{ prometheus_blackbox_exporter_config_dir }}/blackbox.yml"
owner: "{{ prometheus_owner }}"
group: "{{ prometheus_group }}"
notify:
- reload blackboxexporter

- name: Install Prometheus blackbox exporter systemd service
template:
src: blackbox_exporter.service.j2
dest: /etc/systemd/system/blackboxexporter.service
notify:
- reload daemon
- restart blackboxexporter
5 changes: 5 additions & 0 deletions tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
- "{{ prometheus_alert_manager_templates_dir }}"
- "{{ prometheus_rules_dir }}"
- "{{ prometheus_snmp_exporter_config_dir }}"
- "{{ prometheus_blackbox_exporter_config_dir }}"

- name: Install Prometheus
include: install-prometheus.yml
Expand All @@ -57,3 +58,7 @@
- name: Install Prometheus SNMP exporter
include: install-snmp_exporter.yml
when: prometheus_snmp_exporter_install

- name: Install Prometheus Blackbox exporter
include: install-blackbox_exporter.yml
when: prometheus_blackbox_exporter_install
3 changes: 3 additions & 0 deletions templates/blackbox.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{% if prometheus_black_box_config_modules is not none %}
{{ {'modules': prometheus_black_box_config_modules} | to_nice_yaml }}
{% endif %}
21 changes: 21 additions & 0 deletions templates/blackbox_exporter.service.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# {{ansible_managed}}

[Unit]
Description=Prometheus blackbox exporter service
After=network.target
Wants=network.target

[Service]
ExecStart={{ prometheus_install_dir }}/{{ prometheus_blackbox_exporter_archive }}/blackbox_exporter {% for config in prometheus_blackbox_exporter_service_config if config[1] is not none %}--{{ config[0] }}={{ config[1] }} {% endfor %}
ExecReload=/bin/kill -SIGHUP $MAINPID

Restart=always
RestartSec=20
TimeoutSec=300
User={{prometheus_owner}}
Group={{prometheus_group}}
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
14 changes: 14 additions & 0 deletions tests/playbook.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
prometheus_alert_manager_install: true
prometheus_push_gateway_install: true
prometheus_snmp_exporter_install: true
prometheus_blackbox_exporter_install: true
prometheus_alert_manager_config_global:
slack_api_url: 'https://github.com/ernestas-poskus/ansible-prometheus/pull/42'
prometheus_alert_manager_config_receivers:
Expand All @@ -21,3 +22,16 @@
title: "[[ range $Alerts ]][[ $Annotations.summary ]]\n[[ end ]]"
text: "[[ range $Alerts ]][[ $Annotations.description ]]\n[[ end ]]"
send_resolved: true
prometheus_black_box_config_modules:
http_2xx:
prober: http
http:
irc_banner:
prober: tcp
tcp:
query_response:
- send: "NICK prober"
- send: "USER prober prober prober :prober"
- expect: "PING :([^ ]+)"
send: "PONG ${1}"
- expect: "^:[^ ]+ 001"
21 changes: 21 additions & 0 deletions tests/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,24 @@
- shell: "test -f /etc/prometheus/snmpexporter/snmp.yml"
register: status
failed_when: status.rc != 0

- name: Check if blackbox exporter service is enabled
command: systemctl is-enabled blackboxexporter
register: command_result
failed_when: "'disabled' in command_result.stdout"

- shell: "systemctl status blackboxexporter | grep -i running"
register: status
failed_when: status.rc != 0

- shell: "systemctl reload blackboxexporter"
register: status
failed_when: status.rc != 0

- shell: "test -f /etc/prometheus/blackboxexporter/blackbox.yml"
register: status
failed_when: status.rc != 0

- shell: "grep 'NICK prober' /etc/prometheus/blackboxexporter/blackbox.yml"
register: status
failed_when: status.rc != 0
8 changes: 8 additions & 0 deletions vars/blackboxexporter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
############################################################
# Auto generated
############################################################
prometheus_blackbox_exporter_service_config:
- ['config.file', "{{ prometheus_black_box_config__file }}"]
- ['web.listen-address', "{{ prometheus_black_box_web__listen_address }}"]
- ['timeout-offset', "{{ prometheus_black_box_timeout_offset }}"]
- ['log.level', "{{ prometheus_black_box_log__level }}"]
3 changes: 3 additions & 0 deletions vars/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,6 @@ prometheus_push_gateway_tarball_url: "https://github.com/prometheus/pushgateway/

prometheus_snmp_exporter_archive: "snmp_exporter-{{ prometheus_snmp_exporter_version }}.{{ prometheus_platform_architecture }}"
prometheus_snmp_exporter_tarball_url: "https://github.com/prometheus/snmp_exporter/releases/download/v{{ prometheus_snmp_exporter_version }}/{{ prometheus_snmp_exporter_archive }}.tar.gz"

prometheus_blackbox_exporter_archive: "blackbox_exporter-{{ prometheus_blackbox_exporter_version }}.{{ prometheus_platform_architecture }}"
prometheus_blackbox_exporter_tarball_url: "https://github.com/prometheus/blackbox_exporter/releases/download/v{{ prometheus_blackbox_exporter_version }}/{{ prometheus_blackbox_exporter_archive }}.tar.gz"

0 comments on commit ead563c

Please sign in to comment.