完善脚本
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user