6.2 KiB
6.2 KiB
2026-06-12 — GuruRMM log-analysis → Claude Haiku, old-VM decommission, wiki VM/build-chain sweep
User
- User: Mike Swanson (mike)
- Machine: GURU-5070
- Role: admin
Summary
Started from a gururmm_server::api::logs error: "Log analysis unavailable: Ollama unreachable
(http://100.101.122.4:11434/api/chat)". Diagnosed, fixed, and shipped a cutover off Ollama; then
decommissioned the old GuruRMM VM, swept stale "VM" + Windows-build-chain framing across wiki/memory,
ran wiki-lint, compiled 5 missing wiki articles, seeded GuruConnect, and patched the wiki-compile skill.
Root cause (the headline)
"Ollama unreachable" was a mislabeled 120s reqwest timeout, NOT a reachability problem.
100.101.122.4already IS Beast (GURU-BEAST-ROG). The server.30reaches Beast fine for/api/tagsand short warm/api/chat(warm "say OK" = 1.1s), but a fleet-sized/api/chat(~1500 logs) never completes — warm fleet-size curl from.30hit the 300s ceiling.- Cause: qwen3:14b minutes-long inference on a big prompt over a flaky cross-LAN tailnet
(
.30behind symmetric NATMappingVariesByDestIP:true; Beast on Wi-Fi10.2.51.228). reqwest's 120s.timeout()surfaced as "error sending request … Check Tailscale". - Beast also had a duplicate-Ollama bind conflict (tray app's
ollama servecouldn't bind 11434; older PID 14144 held0.0.0.0:11434and served) — noisy, not the cause.
Fix shipped — log analysis now uses Claude Haiku 4.5
server/src/api/logs.rs:analyze_logs_with_ollama→analyze_logs_with_claude. POSTshttps://api.anthropic.com/v1/messages(plain HTTPS, no tailnet),x-api-keyfrom env,ANTHROPIC_API_KEY(required) +ANTHROPIC_MODEL(defaultclaude-haiku-4-5). Structured outputs (output_config.format+ json_schema) → guaranteed-parseable findings JSON.- Verified end-to-end against Haiku, then live via
/api/logs/analyze: 1500 logs → 10 findings in 24s (was timing out at 120s). The findings even surfaced the old self-logged "Ollama unreachable" errors — the problem we just fixed. - ZDR (zero data retention) requested from Anthropic, pending. Test fleet OK in the meantime.
Old VM decommissioned + mgmt IP dropped
- Migration to the physical box completed 2026-06-11; soak signed off → deleted the parked old VM.
- Jupiter (172.16.3.20):
virsh destroy GuruRMM+undefine+ removed/mnt/user/domains/GuruRMM(vdisk1.img, 64 GB). Did NOT use--remove-all-storage(would have wiped the shared Ubuntu ISO)..46down; Pluto (Claude-Builder) + ISO intact. .30netplan: removed the secondary172.16.3.47/22(backup saved.bak),netplan apply;eno1now carries only172.16.3.30. Route + service intact, 216 agents.
Wiki / knowledge sweeps
- Retired "GuruRMM VM / Linux VM on Jupiter" framing →
.30is a physical box (Lenovo ThinkCentre M83, Ubuntu 26.04): overview, index, jupiter, gururmm-build, internal-infrastructure, POWER_FAILURE_RUNBOOK + 4 memory files. HOST_MIGRATION_RUNBOOK header flipped to COMPLETE. - Windows build chain corrected everywhere: Beast PRIMARY, Pluto FALLBACK
(
attempt_build beast || attempt_build pluto, verified in build-windows.sh): index, overview, projects/gururmm, systems/pluto, internal-infrastructure + reference_pluto_build_server memory + build-pipeline doc comments. /wiki-lintrun: found+fixed 2 missed gaps (internal-infrastructure + pluto backlink). Pre-existing backlog (missing/broken/index) left as-is.guru-rmm.mdis an intentional redirect tombstone (kept); the tailscale-enroll.ps1 "dead" link was a false positive (script exists).- Compiled 5 missing articles via 5 parallel Sonnet sub-agents: clients gonzvar-tax-services,
tohono-oodham-doit (Syncro 33069069), tucson-golden-corral (3859123); projects gururmm-agent
(artifact-based), msp-tools (umbrella). Deduped the duplicate
system:neptunecompile-queue entry. - Seeded GuruConnect wiki article (v0.3.0 production, ScreenConnect-class Rust tool; artifact-based
from guru-connect @ origin/main ded99c5).
[[guruconnect]]backlinks now resolve. - Per-client fixes: Gonzvar found via fuzzy
query=("Gonzvar Tax Service" singular, id 1830740, break-fix ~$175/hr, 6 assets). Golden Corral email = Neptune Exchange (per Mike; IX cPanel kept as a caveat). TGC-SERVER is colocated at ACG main office (behind ACG office net, not a naked public box at the restaurant). - Patched wiki-compile Phase 2a: fuzzy
query=+ fallback ladder instead of near-exactname=(root cause of the Gonzvar miss).
Credentials / access (vault paths — no secrets inlined)
- Anthropic API key (GuruRMM log analysis): vault
projects/gururmm/anthropic-apicredentials.api_key. Deployed to.30at/opt/gururmm/.envasANTHROPIC_API_KEY(root-only file). .30SSH:~/.ssh/gururmm-physical→guru@172.16.3.30; sudo password = vaultinfrastructure/gururmm-server.sops.yamlcredentials.password(sudo -S).- Jupiter:
ssh -i ~/.ssh/id_ed25519 root@172.16.3.20. - Beast (Windows build PRIMARY):
guru@100.101.122.4(tailnet), key~/.ssh/id_ed25519.
Infrastructure touched
.30(physical GuruRMM/build host) — code deploy + .env + restart + netplan.- Jupiter (.20) — deleted GuruRMM virsh domain.
- Beast (100.101.122.4) — inspected (duplicate Ollama).
Files changed / pushed
- gururmm repo:
c869e4d(logs.rs→Claude), runbook37c8593/8b301bf, build-pipeline docsa794a7f. - ClaudeTools: multiple — Claude-cutover memory, VM-sweep, build-chain, wiki-lint fixes, 5 compiled
articles + index, GuruConnect, per-client fixes, wiki-compile fuzzy-search fix (through
401ed7d4). - vault:
c1c9744(Anthropic key entry).
Pending / follow-ups
- ZDR confirmation from Anthropic before pointing a production fleet at the key.
- Golden Corral: reconcile whether IX cPanel mail accounts/forwarders remain vs all-Neptune.
- Gonzvar: confirm contact name/email (Syncro record has phone only).
guru-connectis an untracked standalone clone underprojects/msp-tools/— consider making it a proper submodule like guru-rmm.- Optional: a server-side Ollama fallback in logs.rs (try Claude → fallback) — deferred; Beast path is no longer used.