The app looks really nice visually, a few points though:
except Exception:
pass
is generally considered to be a code smell. The problem being that when you're catching all exception information and throwing it away you will never know what went wrong and where. If you're doing a try/except Exception nested inside another except Exception then I would humbly suggest that you really need to think about refactoring and restructuring.
Also, anywhere that you see a repeating pattern, you might be better off wrapping it in a function or method rather than typing it out each time. For example in your __update__ method starting at about line 400 you've got pretty much the same code in two places with just a variable different between the two.
Besides upvoting for agreement with all the above (I didn't review the code but certainly all this is worth fixing if present), I'll also say that you probably shouldn't recommend people using `sudo` to install your thing in your README / landing page.
Typically you just leave off the sudo and recommend people to just run pip install mything. That's the only thing required, unless you have a Python that has its `site-packages` directory in a place that isn't user writable, for which people who are in this situation are generally aware of the proper solution (which I'll mention in a sec anyhow).
You should essentially never use sudo to install any package, since even besides any security issues, it can clobber things on your system that are necessary for your OS (by say, upgrading a package that your OS ships with).
I happen to not use my system's shipped Python at all, since I'm on OSX, but if you are using it, you want to use `pip install --user mything`, no sudo necessary.
I will definitely try this out! Just from browsing the webpage it looks nice.
The psutil library doesn't use process accounting, does it? Without it, Glances will miss processes whose lifetime is within a single check interval.
As always when this topic comes up, I have to give a recommendation for atop. This LWN article goes into why it is awesome- https://lwn.net/Articles/387202/ . The logging and interactive examination of historical process-level metrics is the killer feature for me. Here are some screenshots- http://atoptool.nl/screenshots.php
Doubtful. I have glances running on a server at home updating on the default 1s timer, it uses 5% CPU. I should probably change that to a longer update interval, but that server doesn't do much processing so it's not a big problem.
You can also launch glances.py directly so if it is going to show up on the process list it will be as 'glances.py' and not just 'python'.
htop (and by extension top) is for CPU / memory / load information only.
Normally to get network and disk stats I have to run a combination of dstat, iotop. A simple screenshot comparison: http://i.imgur.com/eQPuQ.png
OTOH htop takes up ~2MB per instance, while glances is taking up ~13MB. Glances also doesn't have the ability to sort by columns except by CPU/mem %. You can't kill browse or kill processes from the list either.
For anyone who doesn't know, htop actually does a fair bit more. For example, go to a process (arrow keys or "/" to search), then press "l" to show open files (with lsof) or press "s" to show a strace. You can also renice processes and send sigterm or other signals to them.
Not sure how this would work from a UI perspective but it'd be nice if you could add other servers to be monitored. So instead of me having 20+ terminal windows open, ssh'd into each box and running this app, I could run this app from a central server that's showing all of them together.
Looks very nice. I'm a very happy user of iStat Menus for similar monitoring on OS X.
One thing that iStat menus lacks, and I was hoping Glances had (but appears not to) is a "top" like viewer for what is using bandwidth. Both applications only give the overall bandwidth usage. I'll see my bandwidth shoot up hundreds of Kbps out of nowhere and quickly try to determine what's using it through combinations of looking at open programs (maybe they're updating in the background), lsof -i, nettop if I can remember the name, but haven't been particularly keen on any of them. Any recommendations?
The excellent Amit Singh rants about how useful procfs is and how Mac doesn't have it, but then says it's not really needed, and then almost builds it anyway, then gives up due to unrelated hardware problems:
There used to be this small, simple tool called "ntop" which did exactly that - top, but for active network connections.
Then the authors decided to go apeshit and add everything and the kitchen sink to it ... a GUI, an http server, all kinds of crazy features as they attempted to slot it as some kind of end-all-be-all enterprise monitoring software.
I had some hacked up source tarballs that continued to allow me to run the old, circa 2002 ntop on systems as old as FreeBSD 6.x, but it no longer compiles under 8.x.
tl;dr: ntop used to exist but the devs had dollar signs in their eyes and mutated it beyond all recognition.
This looks good. For cpu and memory checks I find htop to be more lightweight and functionality wise is pretty good too.
It doesn't show disk stats though, for which something like atop should be used.
Another way to install this on OSX if you use Homebrew package manager.
1. Install Homebrew if you don't have it already
http://mxcl.github.com/homebrew/
2. Install the brew-pip package
brew install brew-pip
3. Add Homebrew's pip path to your PYTHONPATH environment variable (you probably should add this to some sort of shell initialization file like ~/.bashrc or ~/.zshrc)
I got this working by just installing pip and then entering "sudo pip install glances".
I have to say, I think this will replace htop for me on my mac. It's actually more useful than Activity Monitor is since it also shows network interfaces.
Nice! I like how it shows all the vital information in very little space.
I've been using nmon for a while, which has some interesting features like graphing, but doesn't utilize all the screen space very well.
If it can't validate the cert, it could be the sign of a MITM attack. Likely? No, but I wouldn't take content with cert issues and run it as root. At least not without validating it in some other way.
dstat(1) is another of this ilk, also Python. I prefer it because new results are printed under old, giving history in scrollback. If on a machine where these aren't available, `vmstat 1' is the standard historical fallback.
It might surprise you just how full featured and useful plain ole Linux top really is. I made a YouTube video based on a training session I did at my old job on how to configure top to show you a lot more interesting things than it does by default.
You can run atop without root, it just won't use process accounting so you may miss some processes (but so would htop and glances).
I'm not sure what being on a VM has to do with anything.
It would be nice if there was a way (e.g. a command-line argument or atoprc setting) to disable the ability to kill processes from within atop; then it would be safer for an admin to make it executable as root by regular users.
Just a thought - ethtool and miitool provide link status for a network interface. I didn't study the code to see how this gets the network speed, but if it isn't using something like ethtool/miitool, you might want to.
You'll probably want to change the name. HP/UX has similar performance monitoring tools named Glance and GlancePlus that are unlocked via license keys. These tools have been around for at least 15 years, they are installed with the base OS (and thus are well known within the community), and perform the same functions as your software (performance monitoring).
except Exception: pass
is generally considered to be a code smell. The problem being that when you're catching all exception information and throwing it away you will never know what went wrong and where. If you're doing a try/except Exception nested inside another except Exception then I would humbly suggest that you really need to think about refactoring and restructuring.
Also, anywhere that you see a repeating pattern, you might be better off wrapping it in a function or method rather than typing it out each time. For example in your __update__ method starting at about line 400 you've got pretty much the same code in two places with just a variable different between the two.