65 lines
2.4 KiB
Bash
Executable File
65 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
OUT_DIR=${1:-/var/lib/prometheus/node-exporter}
|
|
OUT_FILE="$OUT_DIR/lisglosips_s20.prom"
|
|
TMP_FILE="$OUT_FILE.$$"
|
|
BASE_DIR=/dev/shm/voip_rec
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
tmp_total=0
|
|
tmp_used=0
|
|
tmp_avail=0
|
|
if df_out=$(df -B1 "$BASE_DIR" 2>/dev/null | awk 'NR==2 {print $2" "$3" "$4}'); then
|
|
read -r tmp_total tmp_used tmp_avail <<<"$df_out"
|
|
fi
|
|
|
|
ready_count=$(find "$BASE_DIR/ready" -type f -name '*.ready' 2>/dev/null | wc -l)
|
|
part_count=$(find "$BASE_DIR/ready" -type f -name '*.part' 2>/dev/null | wc -l)
|
|
oldest_age=0
|
|
oldest_epoch=$(find "$BASE_DIR/ready" -type f -name '*.ready' -printf '%T@\n' 2>/dev/null | sort -n | head -n 1 || true)
|
|
if [ -n "$oldest_epoch" ]; then
|
|
now_epoch=$(date +%s)
|
|
oldest_sec=${oldest_epoch%.*}
|
|
oldest_age=$(( now_epoch - oldest_sec ))
|
|
if [ "$oldest_age" -lt 0 ]; then
|
|
oldest_age=0
|
|
fi
|
|
fi
|
|
|
|
redis_reachable=0
|
|
if timeout 2 bash -c '</dev/tcp/127.0.0.1/6380' 2>/dev/null; then
|
|
redis_reachable=1
|
|
fi
|
|
|
|
rtpengine_sessions=0
|
|
if command -v rtpengine-ctl >/dev/null 2>&1; then
|
|
rtpengine_sessions=$(rtpengine-ctl -ip 127.0.0.1 -port 2224 list numsessions 2>/dev/null | awk -F: '/Current sessions total/ {gsub(/ /, "", $2); print $2; found=1} END {if (!found) print 0}')
|
|
fi
|
|
|
|
cat > "$TMP_FILE" <<EOF
|
|
# HELP lisglosips_voip_rec_tmpfs_bytes Server A recording tmpfs bytes.
|
|
# TYPE lisglosips_voip_rec_tmpfs_bytes gauge
|
|
lisglosips_voip_rec_tmpfs_bytes{state="total"} $tmp_total
|
|
lisglosips_voip_rec_tmpfs_bytes{state="used"} $tmp_used
|
|
lisglosips_voip_rec_tmpfs_bytes{state="available"} $tmp_avail
|
|
# HELP lisglosips_recording_files Server A recording staging files.
|
|
# TYPE lisglosips_recording_files gauge
|
|
lisglosips_recording_files{state="ready"} $ready_count
|
|
lisglosips_recording_files{state="part"} $part_count
|
|
# HELP lisglosips_recording_oldest_ready_age_seconds Oldest ready recording age in seconds.
|
|
# TYPE lisglosips_recording_oldest_ready_age_seconds gauge
|
|
lisglosips_recording_oldest_ready_age_seconds $oldest_age
|
|
# HELP lisglosips_redis_proxy_up Local Redis auth proxy TCP reachability.
|
|
# TYPE lisglosips_redis_proxy_up gauge
|
|
lisglosips_redis_proxy_up $redis_reachable
|
|
# HELP lisglosips_rtpengine_sessions Current RTPEngine sessions reported by CLI.
|
|
# TYPE lisglosips_rtpengine_sessions gauge
|
|
lisglosips_rtpengine_sessions $rtpengine_sessions
|
|
EOF
|
|
|
|
chown prometheus:prometheus "$TMP_FILE" 2>/dev/null || true
|
|
chmod 0644 "$TMP_FILE"
|
|
mv "$TMP_FILE" "$OUT_FILE"
|