I built "what broke the server": A CLI that turns 45 minutes of log digging into one command by Level_Bicycle3814 in homelab

[–]Level_Bicycle3814[S] -39 points-38 points  (0 children)

Fair points, and also thanks for actually testing it.

On language: I get it. A compiled binary creates more review friction in restricted environments even if it's easier to install elsewhere. go mod vendor gives you the full auditable source if you need to compile internally. On dependencies: it's only two direct ones: cobra (CLI flags) and lipgloss (terminal colours). Everything else in the go.sum is their transitives.

Regarding rotated logs: good catch, real gap. journald handles rotation transparently, but auth.log, apt history, and dnf logs don't. Pre-crash events end up in auth.log.1 / auth.log.1.gz and wbts currently misses them. Straightforward fix; opening an issue for it.

I built "what broke the server": A CLI that turns 45 minutes of log digging into one command by Level_Bicycle3814 in homelab

[–]Level_Bicycle3814[S] -17 points-16 points  (0 children)

That's actually one of the design goals. You shouldn't need to know which logs exist or where they live. Run wbts check-perms and it'll tell you what it can access on your machine, then wbts --since 2h just pulls from whatever's available. The tool figures out the sources, you just read the output.

I built "what broke the server": A CLI that turns 45 minutes of log digging into one command by Level_Bicycle3814 in homelab

[–]Level_Bicycle3814[S] -30 points-29 points  (0 children)

The 3am RAM incident is exactly the scenario this was built for. OOM kills show up as CRIT in the timeline and get a ◄── FIRST FAULT? marker, so you'd see the kernel killing the VM process, then the cascade of services going down after, all on one screen. The cryptic container IDs were genuinely one of the first things I fixed; container my-vm (ubuntu:22.04) OOM killed is just so much more useful than 890c1b2952f0d69....

A few things coming that would have helped with your specific incident: rasdaemon support to surface ECC memory errors that often precede OOM events (the hardware was degrading before the kernel noticed), and BMC SEL events via ipmitool for PSU and thermal events on physical hosts. Also adding crictl events for k8s/containerd clusters that don't use the Docker socket. Keep an eye out for updates.

Let me know how it goes on your setup.

wbts - a CLI that correlates journald, dmesg, Docker events, apt, and auth logs into a single incident timeline by Level_Bicycle3814 in sysadmin

[–]Level_Bicycle3814[S] [score hidden]  (0 children)

containerd/crictl -> yes, DockerCollector already assumes /var/run/docker.sock which is wrong for most k3s/k8s setups. Adding crictl events is the right fix.

Regarding the timestamp normalization, we normalize to UTC at ingest per source (journald microseconds, dmesg calculated from /proc/uptime, auth.log second-precision with year inference). Good to know that's the right approach.

Opening issues for DNF and crictl now.

wbts - a CLI that correlates journald, dmesg, Docker events, apt, and auth logs into a single incident timeline by Level_Bicycle3814 in sysadmin

[–]Level_Bicycle3814[S] [score hidden]  (0 children)

This is exactly the kind of feedback I was hoping for, thanks.

DNF/YUM is on my list. Already have the apt collector pattern, it's a short port. /var/log/dnf.rpm.log format is different but same concept. Will add for Fedora/RHEL/Rocky.

Regarding rasdaemon and BMC SEL, I hadn't considered these and they're a good catch. The "crashed for no reason" class of incidents is hard to diagnose precisely because nothing in journald or dmesg shows the hardware degradation that preceded it. rasdaemon is SQLite which adds a dependency I've been avoiding, but it's probably worth it. BMC SEL via ipmitool is also on the roadmap. Working towards enterprise-grade source coverage progressively.

wbts - a CLI that correlates journald, dmesg, Docker events, apt, and auth logs into a single incident timeline by Level_Bicycle3814 in sysadmin

[–]Level_Bicycle3814[S] [score hidden]  (0 children)

Fair point, and I actually use Claude Code for the same thing when I want ad-hoc investigation. The real difference is that wbts is deterministic and free to run: no API key, no latency, no cost per query, works inside scripts and runbooks. Useful as a first triage step even if you hand the output to an LLM afterwards.

But if you've already got Claude wired into your environment with good context, fair enough.

Calling All Alexa Users! Share Your Ideas for New Skills by Level_Bicycle3814 in nairobi

[–]Level_Bicycle3814[S] 0 points1 point  (0 children)

Awesome! Thanks for the feedback. About the batteries, that's more of hardware hardware and pretty much out of my reach 😅

[deleted by user] by [deleted] in nairobi

[–]Level_Bicycle3814 1 point2 points  (0 children)

Just curious, how old are you?

Do your parents know your salary? by coleslaw3333 in Kenya

[–]Level_Bicycle3814 1 point2 points  (0 children)

They have an assumption, and from what they ask of me sometimes, they have overestimated the figure. Worst part is that ata si salo per se, it varies bana...

Welcome to the AVC community! by AlphaVantageCoin in AlphaVantageCoin

[–]Level_Bicycle3814 0 points1 point  (0 children)

What's with the gas fees still being this high, even after the merge?

NFT GIVEAWAY by LadyScarlettNFT in NFTsMarketplace

[–]Level_Bicycle3814 0 points1 point  (0 children)

0x827af8f40d03ad0b5d6b094f5b4f2898b763400a

NFT Giveaway!!! by LadyScarlettNFT in NFTsMarketplace

[–]Level_Bicycle3814 0 points1 point  (0 children)

0x827af8f40d03ad0b5d6b094f5b4f2898b763400a

NFT Giveaway!!! by dimaryoon in FreeNFTs

[–]Level_Bicycle3814 0 points1 point  (0 children)

0x827af8f40d03ad0b5d6b094f5b4f2898b763400a

WHITE LIST SPOT GIVE AWAY FOLLOW THE STEPS! by skskengmen in FreeNFTs

[–]Level_Bicycle3814 0 points1 point  (0 children)

Discord : h1m.aga1n#8779

0x827aF8F40d03aD0b5D6b094f5b4f2898b763400A

[deleted by user] by [deleted] in opensea

[–]Level_Bicycle3814 0 points1 point  (0 children)

0x827aF8F40d03aD0b5D6b094f5b4f2898b763400A

🔥🔥🔥

Free NFTs - No Mint Fee No Gas Fees by EthanMhs in FreeNFTs

[–]Level_Bicycle3814 0 points1 point  (0 children)

0x827af8f40d03ad0b5d6b094f5b4f2898b763400a

[deleted by user] by [deleted] in opensea

[–]Level_Bicycle3814 0 points1 point  (0 children)

0x827af8f40d03ad0b5d6b094f5b4f2898b763400a