完善脚本

This commit is contained in:
CN-JS-HuiBai
2026-04-05 23:19:41 +08:00
parent 66d94bc670
commit dc2e895e45

View File

@@ -70,29 +70,58 @@ else
TARGETS_DIR="/blackbox_exporter/targets" TARGETS_DIR="/blackbox_exporter/targets"
fi fi
if [ -t 0 ]; then if [ -t 0 ]; then
sudo mkdir -p "$TARGETS_DIR"
echo "========================================================="
echo "Configuring monitoring objects (interactive menu)"
echo "=========================================================" 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 while true; do
sudo mkdir -p "$TARGETS_DIR" echo "Choose a monitoring type to configure:"
if [ -n "$ICMP_VAL" ]; then echo "1) ICMP (Ping)"
echo "- targets:" | sudo tee "$TARGETS_DIR/icmp.yml" > /dev/null echo "2) HTTP Status (2xx)"
for t in $ICMP_VAL; do echo "3) TCP Connect (Port Check)"
echo " - $t" | sudo tee -a "$TARGETS_DIR/icmp.yml" > /dev/null echo "4) Show Current Configuration"
done echo "5) Finish Configuration"
echo "Done: $TARGETS_DIR/icmp.yml" read -rp "Your choice [1-5]: " CHOICE
fi
if [ -n "$HTTP_VAL" ]; then case $CHOICE in
echo "- targets:" | sudo tee "$TARGETS_DIR/http.yml" > /dev/null 1)
for t in $HTTP_VAL; do read -rp "Enter ICMP targets (space separated, e.g. 8.8.8.8 1.1.1.1): " VAL
echo " - $t" | sudo tee -a "$TARGETS_DIR/http.yml" > /dev/null if [ -n "$VAL" ]; then
done echo "- targets:" | sudo tee "$TARGETS_DIR/icmp.yml" > /dev/null
echo "Done: $TARGETS_DIR/http.yml" for t in $VAL; do echo " - $t" | sudo tee -a "$TARGETS_DIR/icmp.yml" > /dev/null; done
fi echo "Saved to: $TARGETS_DIR/icmp.yml"
fi fi
echo "=========================================================" ;;
2)
read -rp "Enter HTTP targets (space separated, e.g. https://google.com): " VAL
if [ -n "$VAL" ]; then
echo "- targets:" | sudo tee "$TARGETS_DIR/http.yml" > /dev/null
for t in $VAL; do echo " - $t" | sudo tee -a "$TARGETS_DIR/http.yml" > /dev/null; done
echo "Saved to: $TARGETS_DIR/http.yml"
fi
;;
3)
read -rp "Enter TCP targets (space separated, e.g. 1.1.1.1:443 8.8.8.8:53): " VAL
if [ -n "$VAL" ]; then
echo "- targets:" | sudo tee "$TARGETS_DIR/tcp.yml" > /dev/null
for t in $VAL; do echo " - $t" | sudo tee -a "$TARGETS_DIR/tcp.yml" > /dev/null; done
echo "Saved to: $TARGETS_DIR/tcp.yml"
fi
;;
4)
echo "Current Target Files in $TARGETS_DIR:"
ls -l "$TARGETS_DIR"/*.yml 2>/dev/null || echo "No targets configured yet."
;;
5)
break
;;
*)
echo "Invalid choice. Please try again."
;;
esac
echo "---------------------------------------------------------"
done
fi fi
@@ -127,16 +156,26 @@ if [ -f "$PROMETHEUS_YML" ]; then
TEMP_CONF="/tmp/blackbox_jobs.yml" TEMP_CONF="/tmp/blackbox_jobs.yml"
rm -f "$TEMP_CONF" rm -f "$TEMP_CONF"
# Generate the job snippets # Mapping table for modules
if [ -f "$TARGETS_DIR/icmp.yml" ] && ! grep -q "job_name: 'blackbox-icmp'" "$PROMETHEUS_YML"; then # icmp -> icmp
cat <<EOF >> "$TEMP_CONF" # http -> http_2xx
- job_name: 'blackbox-icmp' # tcp -> tcp_connect
for type in icmp http tcp; do
MODULE_NAME="$type"
[ "$type" == "http" ] && MODULE_NAME="http_2xx"
[ "$type" == "tcp" ] && MODULE_NAME="tcp_connect"
if [ -f "$TARGETS_DIR/${type}.yml" ] && ! grep -q "job_name: 'blackbox-${type}'" "$PROMETHEUS_YML"; then
echo "Adding job: blackbox-${type}"
cat <<EOF >> "$TEMP_CONF"
- job_name: 'blackbox-${type}'
metrics_path: /probe metrics_path: /probe
params: params:
module: [icmp] module: [$MODULE_NAME]
file_sd_configs: file_sd_configs:
- files: - files:
- $TARGETS_DIR/icmp.yml - $TARGETS_DIR/${type}.yml
relabel_configs: relabel_configs:
- source_labels: [__address__] - source_labels: [__address__]
target_label: __param_target target_label: __param_target
@@ -146,31 +185,12 @@ if [ -f "$PROMETHEUS_YML" ]; then
replacement: 127.0.0.1:${PORT} replacement: 127.0.0.1:${PORT}
EOF EOF
fi fi
done
if [ -f "$TARGETS_DIR/http.yml" ] && ! grep -q "job_name: 'blackbox-http'" "$PROMETHEUS_YML"; then
cat <<EOF >> "$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 [ -f "$TEMP_CONF" ]; then
if [ -t 0 ]; then if [ -t 0 ]; then
read -rp "Found $PROMETHEUS_YML. Would you like to append the blackbox jobs automatically? [y/N]: " DO_APPEND read -rp "Found $PROMETHEUS_YML. Would you like to append the new blackbox jobs automatically? [y/N]: " DO_APPEND
else else
DO_APPEND="y" DO_APPEND="y"
fi fi
@@ -182,11 +202,11 @@ EOF
echo "Restarting Prometheus..." echo "Restarting Prometheus..."
sudo /usr/bin/restart_prometheus sudo /usr/bin/restart_prometheus
else else
echo "Please restart Prometheus to apply changes: sudo systemctl restart prometheus" echo "Please restart Prometheus to apply changes."
fi fi
fi fi
else else
echo "Blackbox jobs already exist in $PROMETHEUS_YML or no targets configured." echo "No new Blackbox jobs to add to $PROMETHEUS_YML."
fi fi
fi fi