All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
LTstats - lightweight open-source resource monitoring system
I wrote a lightweight resource monitoring system in C and thought it might interest some here.
For screenshots and more details you can take a look at the website or the GitHub repo (both basically have the same content), and there's also a demo with most of my servers.
This has been in development for the last 2-3 months and so far seems to work rather well.
The main features:
- Agent-server architecture, no special permissions or ports required
- Low resource usage (the agent uses around 100-300 KB RAM)
- Web interface with status pages, charts with historical data and an admin interface
- Notification support, both up/down notifications and resource thresholds
- Saving the data locally in memory in case the server is unreachable
- Secure: both the server and the agent run as unprivileged users and all install scripts verify all checksums before using binaries, and the install commands also verify the downloaded scripts before using them
- Rather easy setup
- Simple, less than 3k LoC of C code (backend) and less than 2k LoC of JavaScript (frontend), the frontend can also be modified easily
The main caveats/suboptimal things:
- Currently only x86_64 is supported, ARM support is planned
- Only Linux systems are supported (for now)
- Possibilities for automated deployment of agents across a large fleet are limited
- Single-user (the admin user)
- (TLS) reverse proxy is necessary
- Limited debugging possibilities
- Not as much is monitored compared to other solutions, and, for example, if multiple partitions are monitored, one can't view statistics for each one individually because this would require variable-length datapoints
This is not a replacement for uptime monitoring systems because it doesn't actively monitor the servers, and, while you can configure it to send alerts/notifications when a server is down, this naturally is a few minutes later than it would be with systems that send a notification when they can't reach a server, and this also only works when the main server is running as it isn't distributed.
If you have any questions or suggestions, let me know.


Comments
I'm doing a (free) monitoring solution (just a hobby, won't be big and professional like other solutions)
~LukasTorvalds
Wooooooot
Good going @lukast__
Cool. Perhaps you could create a feature comparison table that compares all such tools and services, as there are now too many of them.
Great works.
love it
Nice work, thanks for sharing
Nice work!
Beautiful, beautiful!
With a little CSS polish, it will win out over Nezha and others!
Looks great, you wrote or chatgpt and his retards cousins did?
This looks really good! Not many people can write in C nowadays.
Great job. The agent is wrote in C language which could run on a strained environment
Where do I send my $7?
If this question is directed to me, the programs (agent, server and NTP client) were written without AI. For the frontend I did use a bit of AI (Claude), especially for a prototype of the CSS styling; however, I had to rewrite basically the entire frontend because, well, AI code (in my experience) certainly isn't perfect and does many simple things way too complicated.
TL;DR: I wrote it; Claude only did a prototype of the frontend which was basically entirely rewritten.
Nice!
wowie
That's cool! I rarely see backend API written in C these days.
Rewrite in Rust?
Great work mate, keep it up!
ltstats_agent: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped
^_^
Looks cool.
Wish that will be compatible with FreeBSD sometime because it's what I'm missing at Hetrixtools. Also any comparison to Hetrixtools or Uptimerobot?
Woot woot, good stuff! 👊
Good work. Does it work with ZFS regarding IO stats ?
Disk usage stats should work with any filesystem as it's simply querying it from the kernel, and IO read/write stats are disk-level and therefore are independent from the used filesystem.
Sadly linux only and the chances are quite slim I guess to port it to BSD as the mechanism are quite different. I know because I happened to develop something similar on and for BSD to monitor all my babies.
But still: nice project and probably useful for many here!
What is the technical reason, why the server has to be ran as root?
Can we make this root less?
Huh, the server doesn't have to be run as root?
The install script creates and uses the
ltstatsuser.Nevermind, I misread something.
This is it!!!!
Nice. Cheers @lukast__
Amazing contribution @lukast__ & Congrats on the Release... I have just checked the screeenies... It's very detailed. Need to try myself. Any reason why docker is not recommended?