blackbox-exporter is a free and open-source Prometheus exporter for probing endpoints. Blackbox Exporter allows blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP and ICMP, essential for monitoring external services with Prometheus
1. Prerequisites
2. Supported Operating Systems
This guide supports installation on:
3. Installation
RHEL/CentOS/Rocky Linux/AlmaLinux
# Install EPEL repository if needed
sudo dnf install -y epel-release
# Install blackbox-exporter
sudo dnf install -y prometheus-blackbox-exporter
# Enable and start service
sudo systemctl enable --now blackbox_exporter
# Configure firewall
sudo firewall-cmd --permanent --add-port=9115/tcp
sudo firewall-cmd --reload
# Verify installation
blackbox_exporter --version
Debian/Ubuntu
# Update package index
sudo apt update
# Install blackbox-exporter
sudo apt install -y prometheus-blackbox-exporter
# Enable and start service
sudo systemctl enable --now blackbox_exporter
# Configure firewall
sudo ufw allow 9115
# Verify installation
blackbox_exporter --version
Arch Linux
# Install blackbox-exporter
sudo pacman -S prometheus-blackbox-exporter
# Enable and start service
sudo systemctl enable --now blackbox_exporter
# Verify installation
blackbox_exporter --version
Alpine Linux
# Install blackbox-exporter
apk add --no-cache prometheus-blackbox-exporter
# Enable and start service
rc-update add blackbox_exporter default
rc-service blackbox_exporter start
# Verify installation
blackbox_exporter --version
openSUSE/SLES
# Install blackbox-exporter
sudo zypper install -y prometheus-blackbox-exporter
# Enable and start service
sudo systemctl enable --now blackbox_exporter
# Configure firewall
sudo firewall-cmd --permanent --add-port=9115/tcp
sudo firewall-cmd --reload
# Verify installation
blackbox_exporter --version
macOS
# Using Homebrew
brew install prometheus-blackbox-exporter
# Start service
brew services start prometheus-blackbox-exporter
# Verify installation
blackbox_exporter --version
FreeBSD
# Using pkg
pkg install prometheus-blackbox-exporter
# Enable in rc.conf
echo 'blackbox_exporter_enable="YES"' >> /etc/rc.conf
# Start service
service blackbox_exporter start
# Verify installation
blackbox_exporter --version
Windows
# Using Chocolatey
choco install prometheus-blackbox-exporter
# Or using Scoop
scoop install prometheus-blackbox-exporter
# Verify installation
blackbox_exporter --version
Initial Configuration
Basic Configuration
# Create configuration directory
sudo mkdir -p /etc/prometheus-blackbox-exporter
# Set up basic configuration
# See official documentation for detailed configuration options
# Test configuration
blackbox_exporter --version
5. Service Management
systemd (RHEL, Debian, Ubuntu, Arch, openSUSE)
# Enable service
sudo systemctl enable blackbox_exporter
# Start service
sudo systemctl start blackbox_exporter
# Stop service
sudo systemctl stop blackbox_exporter
# Restart service
sudo systemctl restart blackbox_exporter
# Check status
sudo systemctl status blackbox_exporter
# View logs
sudo journalctl -u blackbox_exporter -f
OpenRC (Alpine Linux)
# Enable service
rc-update add blackbox_exporter default
# Start service
rc-service blackbox_exporter start
# Stop service
rc-service blackbox_exporter stop
# Restart service
rc-service blackbox_exporter restart
# Check status
rc-service blackbox_exporter status
rc.d (FreeBSD)
# Enable in /etc/rc.conf
echo 'blackbox_exporter_enable="YES"' >> /etc/rc.conf
# Start service
service blackbox_exporter start
# Stop service
service blackbox_exporter stop
# Restart service
service blackbox_exporter restart
# Check status
service blackbox_exporter status
launchd (macOS)
# Using Homebrew services
brew services start prometheus-blackbox-exporter
brew services stop prometheus-blackbox-exporter
brew services restart prometheus-blackbox-exporter
# Check status
brew services list | grep prometheus-blackbox-exporter
Windows Service Manager
# Start service
net start blackbox_exporter
# Stop service
net stop blackbox_exporter
# Using PowerShell
Start-Service blackbox_exporter
Stop-Service blackbox_exporter
Restart-Service blackbox_exporter
# Check status
Get-Service blackbox_exporter
Advanced Configuration
See the official documentation for advanced configuration options.
Reverse Proxy Setup
nginx Configuration
upstream prometheus-blackbox-exporter_backend {
server 127.0.0.1:9115;
}
server {
listen 80;
server_name prometheus-blackbox-exporter.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name prometheus-blackbox-exporter.example.com;
ssl_certificate /etc/ssl/certs/prometheus-blackbox-exporter.example.com.crt;
ssl_certificate_key /etc/ssl/private/prometheus-blackbox-exporter.example.com.key;
location / {
proxy_pass http://prometheus-blackbox-exporter_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Apache Configuration
<VirtualHost *:80>
ServerName prometheus-blackbox-exporter.example.com
Redirect permanent / https://prometheus-blackbox-exporter.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName prometheus-blackbox-exporter.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/prometheus-blackbox-exporter.example.com.crt
SSLCertificateKeyFile /etc/ssl/private/prometheus-blackbox-exporter.example.com.key
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9115/
ProxyPassReverse / http://127.0.0.1:9115/
</VirtualHost>
HAProxy Configuration
frontend prometheus-blackbox-exporter_frontend
bind *:80
bind *:443 ssl crt /etc/ssl/certs/prometheus-blackbox-exporter.pem
redirect scheme https if !{ ssl_fc }
default_backend prometheus-blackbox-exporter_backend
backend prometheus-blackbox-exporter_backend
balance roundrobin
server prometheus-blackbox-exporter1 127.0.0.1:9115 check
Security Configuration
Basic Security Setup
# Set appropriate permissions
sudo chown -R prometheus-blackbox-exporter:prometheus-blackbox-exporter /etc/prometheus-blackbox-exporter
sudo chmod 750 /etc/prometheus-blackbox-exporter
# Configure firewall
sudo firewall-cmd --permanent --add-port=9115/tcp
sudo firewall-cmd --reload
# Enable SELinux policies (if applicable)
sudo setsebool -P httpd_can_network_connect on
Database Setup
See official documentation for database configuration requirements.
Performance Optimization
System Tuning
# Basic system tuning
echo 'net.core.somaxconn = 65535' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_max_syn_backlog = 65535' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Monitoring
Basic Monitoring
# Check service status
sudo systemctl status blackbox_exporter
# View logs
sudo journalctl -u blackbox_exporter -f
# Monitor resource usage
top -p $(pgrep prometheus-blackbox-exporter)
9. Backup and Restore
Backup Script
#!/bin/bash
# Basic backup script
BACKUP_DIR="/backup/prometheus-blackbox-exporter"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/prometheus-blackbox-exporter-backup-$DATE.tar.gz" /etc/prometheus-blackbox-exporter /var/lib/prometheus-blackbox-exporter
echo "Backup completed: $BACKUP_DIR/prometheus-blackbox-exporter-backup-$DATE.tar.gz"
Restore Procedure
# Stop service
sudo systemctl stop blackbox_exporter
# Restore from backup
tar -xzf /backup/prometheus-blackbox-exporter/prometheus-blackbox-exporter-backup-*.tar.gz -C /
# Start service
sudo systemctl start blackbox_exporter
6. Troubleshooting
Common Issues
1. Service won't start:
# Check logs
sudo journalctl -u blackbox_exporter -n 100
sudo tail -f /var/log/prometheus-blackbox-exporter/prometheus-blackbox-exporter.log
# Check configuration
blackbox_exporter --version
# Check permissions
ls -la /etc/prometheus-blackbox-exporter
2. Connection issues:
# Check if service is listening
sudo ss -tlnp | grep 9115
# Test connectivity
telnet localhost 9115
# Check firewall
sudo firewall-cmd --list-all
3. Performance issues:
# Check resource usage
top -p $(pgrep prometheus-blackbox-exporter)
# Check disk I/O
iotop -p $(pgrep prometheus-blackbox-exporter)
# Check connections
ss -an | grep 9115
Integration Examples
Docker Compose Example
version: '3.8'
services:
prometheus-blackbox-exporter:
image: prometheus-blackbox-exporter:latest
ports:
- "9115:9115"
volumes:
- ./config:/etc/prometheus-blackbox-exporter
- ./data:/var/lib/prometheus-blackbox-exporter
restart: unless-stopped
Maintenance
Update Procedures
# RHEL/CentOS/Rocky/AlmaLinux
sudo dnf update prometheus-blackbox-exporter
# Debian/Ubuntu
sudo apt update && sudo apt upgrade prometheus-blackbox-exporter
# Arch Linux
sudo pacman -Syu prometheus-blackbox-exporter
# Alpine Linux
apk update && apk upgrade prometheus-blackbox-exporter
# openSUSE
sudo zypper update prometheus-blackbox-exporter
# FreeBSD
pkg update && pkg upgrade prometheus-blackbox-exporter
# Always backup before updates
tar -czf /backup/prometheus-blackbox-exporter-pre-update-$(date +%Y%m%d).tar.gz /etc/prometheus-blackbox-exporter
# Restart after updates
sudo systemctl restart blackbox_exporter
Regular Maintenance
# Log rotation
sudo logrotate -f /etc/logrotate.d/prometheus-blackbox-exporter
# Clean old logs
find /var/log/prometheus-blackbox-exporter -name "*.log" -mtime +30 -delete
# Check disk usage
du -sh /var/lib/prometheus-blackbox-exporter
Additional Resources
---
Note: This guide is part of the HowToMgr collection. Always refer to official documentation for the most up-to-date information.