Shell脚本检测业务端口存活并推送至Prometheus

使用node_exporter的启动参数 --collector.textfile.directory加载目录下的 .prom文件,指标为 livingPort

#!/bin/bash

ports=(
    "100.0.6.4:9012"
    "100.0.6.14:9012"
    "100.0.6.45:9005"
    "100.0.6.42:9005"
    "100.0.6.120:9005"
    "100.0.6.51:9005"
    "100.0.6.43:9005"
    "100.0.6.43:9008"
    "100.0.6.42:9008"
    "100.0.6.51:9008"
    "100.0.6.51:9011"
    "100.0.6.4:9011"
    "100.0.6.14:9011"
    "100.0.6.14:9009"
    "100.0.6.155:9000"
    "100.0.6.51:9020"
    "100.0.6.45:9020"
    "100.0.6.120:9020"
    "100.0.6.43:9020"
    "100.0.6.51:9007"
    "100.0.6.42:9007"
    "100.0.6.43:9007"
)

OUTPUT_FILE="/root/prometheus/port_living.prom"

> $OUTPUT_FILE

for item in "${ports[@]}"; do
    ip=$(echo $item | cut -d ':' -f 1)
    port=$(echo $item | cut -d ':' -f 2)
  
    nc -z -w 3 $ip $port
    if [ $? -eq 0 ]; then
        # 端口开放,{}中的都是标签
        echo "livingPort{ip=\"$ip\",port=\"$port\",job=\"赠送权益\"} 1" >> $OUTPUT_FILE
    else
        # 端口未开放
        echo "livingPort{ip=\"$ip\",port=\"$port\",,job=\"赠送权益\"} 0" >> $OUTPUT_FILE
    fi
done