From 66d94bc670d796864af58e425cfe6b4146d667e7 Mon Sep 17 00:00:00 2001 From: CN-JS-HuiBai Date: Sun, 5 Apr 2026 23:16:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Prometheus=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Prometheus/install_blackbox_exporter.sh | 109 +++++++++++++++++++++++- 1 file changed, 108 insertions(+), 1 deletion(-) diff --git a/Prometheus/install_blackbox_exporter.sh b/Prometheus/install_blackbox_exporter.sh index 58363e7..a812707 100644 --- a/Prometheus/install_blackbox_exporter.sh +++ b/Prometheus/install_blackbox_exporter.sh @@ -62,6 +62,40 @@ else echo "No TTY detected, using default port: $PORT" fi +# Configure monitoring targets +if [ -d "/etc/prometheus" ]; then + TARGETS_DIR="/etc/prometheus/blackbox_targets" + echo "Prometheus detected, targets will be saved to $TARGETS_DIR" +else + TARGETS_DIR="/blackbox_exporter/targets" +fi +if [ -t 0 ]; then + echo "=========================================================" + echo "Configuring monitoring objects (optional)..." + read -rp "Enter targets for ICMP Ping (separated by space, e.g. 8.8.8.8 1.1.1.1): " ICMP_VAL + read -rp "Enter targets for HTTP check (separated by space, e.g. https://google.com): " HTTP_VAL + + if [ -n "$ICMP_VAL" ] || [ -n "$HTTP_VAL" ]; then + sudo mkdir -p "$TARGETS_DIR" + if [ -n "$ICMP_VAL" ]; then + echo "- targets:" | sudo tee "$TARGETS_DIR/icmp.yml" > /dev/null + for t in $ICMP_VAL; do + echo " - $t" | sudo tee -a "$TARGETS_DIR/icmp.yml" > /dev/null + done + echo "Done: $TARGETS_DIR/icmp.yml" + fi + if [ -n "$HTTP_VAL" ]; then + echo "- targets:" | sudo tee "$TARGETS_DIR/http.yml" > /dev/null + for t in $HTTP_VAL; do + echo " - $t" | sudo tee -a "$TARGETS_DIR/http.yml" > /dev/null + done + echo "Done: $TARGETS_DIR/http.yml" + fi + fi + echo "=========================================================" +fi + + # Create systemd service file SERVICE_FILE="/etc/systemd/system/blackbox_exporter.service" echo "Creating systemd service file..." @@ -86,5 +120,78 @@ echo "Enabling and starting blackbox_exporter service..." sudo systemctl daemon-reload sudo systemctl enable --now blackbox_exporter.service -echo "Blackbox Exporter installation completed, listening on port ${PORT}" +# Automatically integrate with Prometheus if present +PROMETHEUS_YML="/etc/prometheus/prometheus.yml" +if [ -f "$PROMETHEUS_YML" ]; then + echo "Integrating with Prometheus..." + TEMP_CONF="/tmp/blackbox_jobs.yml" + rm -f "$TEMP_CONF" + + # Generate the job snippets + if [ -f "$TARGETS_DIR/icmp.yml" ] && ! grep -q "job_name: 'blackbox-icmp'" "$PROMETHEUS_YML"; then + cat <> "$TEMP_CONF" + - job_name: 'blackbox-icmp' + metrics_path: /probe + params: + module: [icmp] + file_sd_configs: + - files: + - $TARGETS_DIR/icmp.yml + relabel_configs: + - source_labels: [__address__] + target_label: __param_target + - source_labels: [__param_target] + target_label: instance + - target_label: __address__ + replacement: 127.0.0.1:${PORT} + +EOF + fi + + if [ -f "$TARGETS_DIR/http.yml" ] && ! grep -q "job_name: 'blackbox-http'" "$PROMETHEUS_YML"; then + cat <> "$TEMP_CONF" + - job_name: 'blackbox-http' + metrics_path: /probe + params: + module: [http_2xx] + file_sd_configs: + - files: + - $TARGETS_DIR/http.yml + relabel_configs: + - source_labels: [__address__] + target_label: __param_target + - source_labels: [__param_target] + target_label: instance + - target_label: __address__ + replacement: 127.0.0.1:${PORT} + +EOF + fi + + if [ -f "$TEMP_CONF" ]; then + if [ -t 0 ]; then + read -rp "Found $PROMETHEUS_YML. Would you like to append the blackbox jobs automatically? [y/N]: " DO_APPEND + else + DO_APPEND="y" + fi + + if [[ "$DO_APPEND" =~ ^[Yy]$ ]]; then + cat "$TEMP_CONF" | sudo tee -a "$PROMETHEUS_YML" > /dev/null + echo "Jobs appended to $PROMETHEUS_YML." + if [ -f "/usr/bin/restart_prometheus" ]; then + echo "Restarting Prometheus..." + sudo /usr/bin/restart_prometheus + else + echo "Please restart Prometheus to apply changes: sudo systemctl restart prometheus" + fi + fi + else + echo "Blackbox jobs already exist in $PROMETHEUS_YML or no targets configured." + fi +fi + +echo "=========================================================" +echo "Blackbox Exporter installation and integration completed!" +echo "Listening on port: ${PORT}" +echo "========================================================="