54 lines
1.3 KiB
Bash
Executable File
54 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
TEST_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
TMP_ROOT="$TEST_ROOT/tmp"
|
|
API_BASE="http://localhost:32300/api/v1/master"
|
|
NODE_ID="$(cat "$TMP_ROOT/node_id")"
|
|
NODES_JSON="$TEST_ROOT/private/argus/metric/prometheus/nodes.json"
|
|
|
|
success=false
|
|
detail_file="$TMP_ROOT/agent_status_detail.json"
|
|
for _ in {1..20}; do
|
|
sleep 2
|
|
if ! curl -sS "$API_BASE/nodes/$NODE_ID" -o "$detail_file"; then
|
|
continue
|
|
fi
|
|
if python3 - "$detail_file" <<'PY'
|
|
import json, sys
|
|
with open(sys.argv[1]) as handle:
|
|
node = json.load(handle)
|
|
if node["status"] != "online":
|
|
raise SystemExit(1)
|
|
health = node.get("health", {})
|
|
if "log-fluentbit" not in health or "metric-node-exporter" not in health:
|
|
raise SystemExit(1)
|
|
PY
|
|
then
|
|
success=true
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [[ "$success" != true ]]; then
|
|
echo "[ERROR] Node did not report health data in time" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "$NODES_JSON" ]]; then
|
|
echo "[ERROR] nodes.json missing at $NODES_JSON" >&2
|
|
exit 1
|
|
fi
|
|
|
|
python3 - "$NODES_JSON" <<'PY'
|
|
import json, sys
|
|
with open(sys.argv[1]) as handle:
|
|
nodes = json.load(handle)
|
|
assert len(nodes) == 1, nodes
|
|
entry = nodes[0]
|
|
assert entry["node_id"], entry
|
|
PY
|
|
|
|
echo "[INFO] Master reflects agent health and nodes.json entries"
|