35 lines
1.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
NODE_ID=${NODE_ID:-BS-GZ-006}
NODE_ALIAS=${NODE_ALIAS:-bs-gz-006}
SSH_CONFIG=${SSH_CONFIG:-/etc/guanghu/nodes/ssh/config}
RECEIPT_FILE=${RECEIPT_FILE:-/var/lib/guanghu/receipts/BS-GZ-006-latest.json}
FRONT_DOOR_URL=${FRONT_DOOR_URL:-https://guanghulab.com/}
APP_HUB_URL=${APP_HUB_URL:-https://guanghulab.com/jd/api/status}
remote=$(ssh -F "$SSH_CONFIG" -o BatchMode=yes "$NODE_ALIAS" \
"set -e; jq -n \
--arg hostname \"\$(hostname)\" \
--arg nginx \"\$(systemctl is-active nginx)\" \
--arg tunnel \"\$(systemctl is-active guanghu-jd-web-tunnel.service)\" \
--arg disk_used \"\$(df --output=pcent / | tail -1 | tr -d ' ')\" \
--arg uptime_seconds \"\$(cut -d. -f1 /proc/uptime)\" \
'{hostname:\$hostname,nginx:\$nginx,tunnel:\$tunnel,disk_used:\$disk_used,uptime_seconds:(\$uptime_seconds|tonumber)}'")
front_status=$(curl -fsS -o /dev/null -w '%{http_code}' "$FRONT_DOOR_URL")
hub=$(curl -fsS "$APP_HUB_URL")
tmp=$(mktemp "${RECEIPT_FILE}.XXXXXX")
trap 'rm -f "$tmp"' EXIT
jq -n \
--arg node_id "$NODE_ID" \
--arg checked_at "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
--arg front_status "$front_status" \
--argjson remote "$remote" \
--argjson hub "$hub" \
'{schema:"guanghu.node-heartbeat/v1",ok:true,node_id:$node_id,checked_at:$checked_at,front_door_http:($front_status|tonumber),remote:$remote,jd_hub:{ok:$hub.ok,node_id:$hub.node_id,service:$hub.service}}' \
> "$tmp"
install -m 0640 -o root -g guanghu "$tmp" "$RECEIPT_FILE"
cat "$RECEIPT_FILE"