119 lines
3.5 KiB
Bash
Executable File
119 lines
3.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
export LC_ALL=C
|
|
|
|
boot_raw="$(sysctl -n kern.boottime)"
|
|
boot_epoch="$(printf '%s\n' "$boot_raw" | sed -E 's/^\{ sec = ([0-9]+),.*/\1/')"
|
|
if [[ ! "$boot_epoch" =~ ^[0-9]+$ ]]; then
|
|
echo "BLOCKER darwin_boot_epoch_unavailable"
|
|
exit 65
|
|
fi
|
|
|
|
now_epoch="$(date +%s)"
|
|
uptime_seconds=$((now_epoch - boot_epoch))
|
|
if (( uptime_seconds < 0 )); then
|
|
echo "BLOCKER darwin_uptime_invalid"
|
|
exit 65
|
|
fi
|
|
|
|
uid="$(id -u)"
|
|
launch_label="com.momo.ollama111-allow-proxy"
|
|
if launchctl print "gui/${uid}/${launch_label}" >/dev/null 2>&1; then
|
|
startup_enabled="enabled"
|
|
else
|
|
startup_enabled="unknown"
|
|
fi
|
|
|
|
if curl --max-time 2 -fsS http://127.0.0.1:11434/api/tags >/dev/null 2>&1; then
|
|
startup_active="active"
|
|
else
|
|
startup_active="inactive"
|
|
fi
|
|
|
|
logical_cores="$(sysctl -n hw.logicalcpu 2>/dev/null || true)"
|
|
load1="$(sysctl -n vm.loadavg 2>/dev/null | awk '{ print $2; exit }')"
|
|
mem_available_percent="$(memory_pressure -Q 2>/dev/null | awk -F': ' '
|
|
/System-wide memory free percentage/ {
|
|
value = $2
|
|
gsub(/%/, "", value)
|
|
print value
|
|
exit
|
|
}
|
|
')"
|
|
process_cpu_sum="$(ps -A -o %cpu= 2>/dev/null | awk '{ sum += $1 } END { printf "%.2f", sum + 0 }')"
|
|
cpu_host_percent="$(awk -v total="$process_cpu_sum" -v cores="$logical_cores" 'BEGIN {
|
|
if (cores <= 0) { exit 1 }
|
|
value = total / cores
|
|
if (value > 100) { value = 100 }
|
|
printf "%.2f", value
|
|
}')"
|
|
swap_total_mib="$(sysctl vm.swapusage 2>/dev/null | awk '{
|
|
for (i = 1; i <= NF; i += 1) {
|
|
if ($i == "total") {
|
|
value = $(i + 2)
|
|
gsub(/M/, "", value)
|
|
print value
|
|
exit
|
|
}
|
|
}
|
|
}')"
|
|
swap_used_mib="$(sysctl vm.swapusage 2>/dev/null | awk '{
|
|
for (i = 1; i <= NF; i += 1) {
|
|
if ($i == "used") {
|
|
value = $(i + 2)
|
|
gsub(/M/, "", value)
|
|
print value
|
|
exit
|
|
}
|
|
}
|
|
}')"
|
|
swap_used_percent="$(awk -v used="$swap_used_mib" -v total="$swap_total_mib" 'BEGIN {
|
|
if (total <= 0) { printf "0.00"; exit }
|
|
printf "%.2f", (used / total) * 100
|
|
}')"
|
|
disk_used_percent="$(df -Pk / 2>/dev/null | awk '
|
|
NR == 2 {
|
|
value = $5
|
|
gsub(/%/, "", value)
|
|
print value
|
|
exit
|
|
}
|
|
')"
|
|
|
|
if [[ ! "$logical_cores" =~ ^[0-9]+$ ]] || (( logical_cores < 1 )) ||
|
|
[[ ! "$load1" =~ ^[0-9]+([.][0-9]+)?$ ]] ||
|
|
[[ ! "$mem_available_percent" =~ ^[0-9]+([.][0-9]+)?$ ]] ||
|
|
[[ ! "$cpu_host_percent" =~ ^[0-9]+([.][0-9]+)?$ ]] ||
|
|
[[ ! "$swap_used_percent" =~ ^[0-9]+([.][0-9]+)?$ ]] ||
|
|
[[ ! "$disk_used_percent" =~ ^[0-9]+([.][0-9]+)?$ ]]; then
|
|
echo "BLOCKER darwin_perf_readback_unavailable"
|
|
exit 65
|
|
fi
|
|
|
|
printf 'boot_id=darwin_%s uptime_seconds=%s systemd_state=darwin_ssh startup_enabled=%s startup_active=%s\n' \
|
|
"$boot_epoch" "$uptime_seconds" "$startup_enabled" "$startup_active"
|
|
printf 'perf_schema=agent99_perf_readback_v1 os=darwin cores=%s load1=%s mem_available_percent=%s disk_used_percent=%s\n' \
|
|
"$logical_cores" "$load1" "$mem_available_percent" "$disk_used_percent"
|
|
printf 'darwin_pressure_schema=agent99_darwin_pressure_v1 cpu_host_percent=%s swap_used_percent=%s\n' \
|
|
"$cpu_host_percent" "$swap_used_percent"
|
|
|
|
ps -Ao pid=,ppid=,%cpu=,%mem=,rss=,comm= -r 2>/dev/null | awk '
|
|
NR <= 8 {
|
|
pid = $1
|
|
ppid = $2
|
|
cpu = $3
|
|
memory = $4
|
|
rss = $5
|
|
name = ""
|
|
for (i = 6; i <= NF; i += 1) {
|
|
name = name (name == "" ? "" : " ") $i
|
|
}
|
|
count = split(name, path, "/")
|
|
name = path[count]
|
|
gsub(/[^A-Za-z0-9._-]/, "_", name)
|
|
if (name == "") { name = "unknown" }
|
|
printf "darwin_process_sample_v1 pid=%s ppid=%s cpu_percent=%s memory_percent=%s rss_kib=%s name=%s\n", \
|
|
pid, ppid, cpu, memory, rss, name
|
|
}
|
|
'
|