Merge pull request 'fix: escape runtime vars in unquoted heredoc, eliminate sed dependency' (#48) from feat/push-monitoring-agent-v2 into master
Reviewed-on: #48
This commit was merged in pull request #48.
This commit is contained in:
@@ -41,70 +41,62 @@ echo "[1/3] Creating directory..."
|
|||||||
mkdir -p "$(dirname "$AGENT_BIN")"
|
mkdir -p "$(dirname "$AGENT_BIN")"
|
||||||
|
|
||||||
echo "[2/3] Installing agent binary..."
|
echo "[2/3] Installing agent binary..."
|
||||||
cat > "$AGENT_BIN" << 'AGENTSCRIPT'
|
cat > "$AGENT_BIN" << EOF
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
SERVER_URL="@SERVER_URL@"
|
SERVER_URL="$SERVER_URL"
|
||||||
AGENT_KEY="@AGENT_KEY@"
|
AGENT_KEY="$AGENT_KEY"
|
||||||
INTERVAL=@INTERVAL@
|
INTERVAL=$INTERVAL
|
||||||
|
|
||||||
collect_metrics() {
|
collect_metrics() {
|
||||||
CPU=$(top -bn1 2>/dev/null | grep 'Cpu(s)' | awk '{print $2}' | cut -d'%' -f1 || true)
|
CPU=\$(top -bn1 2>/dev/null | grep 'Cpu(s)' | awk '{print \$2}' | cut -d'%' -f1 || true)
|
||||||
[ -z "$CPU" ] && CPU=0
|
[ -z "\$CPU" ] && CPU=0
|
||||||
RAM=$(free 2>/dev/null | grep Mem | awk '{printf "%.1f", $3/$2 * 100}' || true)
|
RAM=\$(free 2>/dev/null | grep Mem | awk '{printf "%.1f", \$3/\$2 * 100}' || true)
|
||||||
[ -z "$RAM" ] && RAM=0
|
[ -z "\$RAM" ] && RAM=0
|
||||||
DISK=$(df / 2>/dev/null | tail -1 | awk '{print $5}' | sed 's/%//' || true)
|
DISK=\$(df / 2>/dev/null | tail -1 | awk '{print \$5}' | sed 's/%//' || true)
|
||||||
[ -z "$DISK" ] && DISK=0
|
[ -z "\$DISK" ] && DISK=0
|
||||||
LOAD=$(cat /proc/loadavg 2>/dev/null | awk '{print $1}' || true)
|
LOAD=\$(cat /proc/loadavg 2>/dev/null | awk '{print \$1}' || true)
|
||||||
[ -z "$LOAD" ] && LOAD=0
|
[ -z "\$LOAD" ] && LOAD=0
|
||||||
UPTIME=$(uptime -p 2>/dev/null | sed 's/^up //' || true)
|
UPTIME=\$(uptime -p 2>/dev/null | sed 's/^up //' || true)
|
||||||
[ -z "$UPTIME" ] && UPTIME=""
|
[ -z "\$UPTIME" ] && UPTIME=""
|
||||||
}
|
}
|
||||||
|
|
||||||
push_metrics() {
|
push_metrics() {
|
||||||
payload=$(cat <<EOF
|
payload=\$(cat << 'PAYLOAD'
|
||||||
{
|
{
|
||||||
"agent_key": "$AGENT_KEY",
|
"agent_key": "\$AGENT_KEY",
|
||||||
"cpu": $CPU,
|
"cpu": \$CPU,
|
||||||
"ram": $RAM,
|
"ram": \$RAM,
|
||||||
"disk": $DISK,
|
"disk": \$DISK,
|
||||||
"load": $LOAD,
|
"load": \$LOAD,
|
||||||
"uptime": "$UPTIME"
|
"uptime": "\$UPTIME"
|
||||||
}
|
}
|
||||||
EOF
|
PAYLOAD
|
||||||
)
|
)
|
||||||
local code
|
local code
|
||||||
code=$(curl -s -X POST "$SERVER_URL/api/metrics/push" \
|
code=\$(curl -s -X POST "$SERVER_URL/api/metrics/push" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "$payload" \
|
-d "\$payload" \
|
||||||
--connect-timeout 10 --max-time 30 \
|
--connect-timeout 10 --max-time 30 \
|
||||||
-o /dev/null -w "%{http_code}" 2>/dev/null) || code=0
|
-o /dev/null -w "%{http_code}" 2>/dev/null) || code=0
|
||||||
echo "$code"
|
echo "\$code"
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "ServerManager Agent started"
|
echo "ServerManager Agent started"
|
||||||
echo " Server: $SERVER_URL/api/metrics/push"
|
echo " Server: $SERVER_URL/api/metrics/push"
|
||||||
echo " Interval: ${INTERVAL}s"
|
echo " Interval: \${INTERVAL}s"
|
||||||
echo " Host: $(hostname)"
|
echo " Host: \$(hostname)"
|
||||||
sleep 2
|
sleep 2
|
||||||
while true; do
|
while true; do
|
||||||
collect_metrics
|
collect_metrics
|
||||||
http_code=$(push_metrics)
|
http_code=\$(push_metrics)
|
||||||
echo "[$(date)] HTTP $http_code"
|
echo "[\$(date)] HTTP \$http_code"
|
||||||
if [ "$http_code" = "200" ]; then
|
if [ "\$http_code" = "0" ]; then
|
||||||
true
|
|
||||||
elif [ "$http_code" = "0" ]; then
|
|
||||||
echo " curl failed — check SERVER_URL=$SERVER_URL"
|
echo " curl failed — check SERVER_URL=$SERVER_URL"
|
||||||
fi
|
fi
|
||||||
sleep "$INTERVAL"
|
sleep "\$INTERVAL"
|
||||||
done
|
done
|
||||||
AGENTSCRIPT
|
EOF
|
||||||
|
|
||||||
sed -i \
|
|
||||||
"s|@SERVER_URL@|$SERVER_URL|g" \
|
|
||||||
-e "s|@AGENT_KEY@|$AGENT_KEY|g" \
|
|
||||||
-e "s|@INTERVAL@|$INTERVAL|g" \
|
|
||||||
"$AGENT_BIN"
|
|
||||||
|
|
||||||
chmod +x "$AGENT_BIN"
|
chmod +x "$AGENT_BIN"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user