top | item 7375696

Show HN: Real-time server monitoring in your browser

346 points| acl | 12 years ago |scoutapp.github.io | reply

115 comments

order
[+] jakejake|12 years ago|reply
They said they use it on their own production servers so of course I couldn't resist... http://scoutapp.com:5555/

Really nice looking monitoring, though. I think it's fun to see the stats scrolling by.

[+] acl|12 years ago|reply
Ha yeah - we opened up a port in iptables for this so we don't have to ssh tunnel in to see stats. Obviously, if you're concerned about exposing numbers, you can view via an ssh tunnel instead of opening a port.
[+] rubiquity|12 years ago|reply
Interesting that they are using kernel version 2.6.32-35. Is it common to run such an older kernel version on servers?
[+] kbar13|12 years ago|reply
that 2.6 kernel tho
[+] nodesocket|12 years ago|reply
For all my fellow CentOS/RHEL users here is a quick bash script for getting it running (assumes you don't have ruby 1.9 installed).

    # Install RVM and Ruby 1.9.3
    curl -sSL https://get.rvm.io | bash -s stable
    source /etc/profile.d/rvm.sh
    rvm install 1.9.3

    # Install JSON gem
    gem install json

    # Install Scout realtime
    gem install scout_realtime

    # Start Scout realtime
    scout_realtime

    # Punch a hole in iptables on port 5555 for Scout realtime
    iptables -A INPUT -p tcp --dport 5555 -j ACCEPT
    service iptables save
    service iptables restart
[+] wahnfrieden|12 years ago|reply
Sorry to be the one posting a tangent (looks like a nice tool!), but please rewrite "for the modern man" to something more gender neutral.
[+] wcchandler|12 years ago|reply
I can't tell if you're trolling or not...

The use of man in this context is androgynous. It's merely an abbreviated use of "mankind," which is an abbreviated use of "humankind." I'm sorry if you're upset by this wording, but it's not inappropriate.

[+] tg3|12 years ago|reply
I agree with this. I know "for the modern man" is an idiom, but I think it's better to be overly conscious about this stuff. Would you lose anything by saying "for the modern dev"?
[+] acl|12 years ago|reply
Project author here. We don't want to exclude anyone - I updated it to "developers."
[+] k0|12 years ago|reply
How about ...for the modern admin?
[+] theknown99|12 years ago|reply
Political correctness is such a depressing drain on the world. Leave it how it is. It's fine.

Reminds me of when they tried to rename Manholes to "Personnel Access Units" to avoid offending women.

If you're offended that something is named a 'manhole', you probably have too much time on your hands.

[+] victorhooi|12 years ago|reply
Look, I'm all for encouraging more girls in STEM, and all that.

My EE class mostly guys, and I'm sure we lost some diversity of viewpoints because of that.

However, let's just ask nicely once - and then leave it at that.

I would hate this to turn into another silly bike shedding flamewars on HN, where all the Social Justice Warriors come out of the woodwork, for their weekly feel-good topup.

[+] tobych|12 years ago|reply
That's the first thing I thought. Please, please change it. Things are difficult enough for women in technology without things like that. I don't care what the rational is. It looks awful, and I'd be embarrassed to show that to women at work.
[+] jasallen|12 years ago|reply
Just change it to "modern woman" and shut everyone up.

That's the thing now right? Where the english language has left us with lack of a non-awkward sounding gender neutral term we just the feminine version and it's ok. I know, I know, everyone is going to chime in with their version of a 'non-awkward sounding alternative. But the person who wrote this, wrote it, it didn't go to the committee of HN, and that person wasn't out to offend anyone, so ya know, let it go, let live, all that... No? I tried.

[+] atmosx|12 years ago|reply
Can you guys add a if/else clause in sinatra and add a FreeBSD logo?[1]

I see tux in my FreeBSD server and feels weird.

[1] https://github.com/scoutapp/scout_realtime/blob/master/lib/s...

ps. My photo-editing skills suck bigtime otherwise I'd do it.

EDIT: Doesn't seem to work properly under FreeBSD-10. No data is displayed. Apparently (as expected) uses Linux ProcFS structure to get data. So FreeBSD for now is not supported, keep the icon for later :-)

[+] stock_toaster|12 years ago|reply
I wonder if it can use the linproc compat stuff like htop does on FreeBSD.
[+] sdesol|12 years ago|reply
This is cool. It looks like the developers are reading the comments so I'll add a quick suggestion. Something that I found to be insanely helpful with my own product development was being able to track memory swapping.

I went to great lengths to tune my Java Virtual Machines so that they would work well in a minimum RAM environment. And being able to track swapping was critical for my decision making. Now I can run my product on a 512MB system with 1GB of swap space with no problem. Below is how I'm tracking swapping in real-time.

http://screenshots.gitsense.com/track-swapping.html

Since your solution is focused on capturing a period of time, you'll be able to provide a better view than I am.

With SSD becoming more common for cloud hosting, using swap space in lieu of getting more RAM will probably become more common. And before anybody points out that SSD is still significantly slower than RAM, I know. Depending on your product, using swap on SSD may be practical. I know using swap on amazon's infrastructure wasn't.

[+] itsderek23|12 years ago|reply
Part of the scout_realtime team here...swap is important. Displaying it the future is possible.

In fact, fire up the console on the project homepage and type "metrics.memory". We're capturing it, just not displaying it yet on the screen.

[+] abimaelmartell|12 years ago|reply
[2014-03-10 15:04:45] ERROR TypeError: nil can't be coerced into Fixnum server_metrics-1.2.0/lib/server_metrics/collectors/memory.rb:81:in `+'

Getting this error under OSX

[+] ceejayoz|12 years ago|reply
Here as well, running with Ruby 2.0.0.
[+] qq66|12 years ago|reply
Nice. The play/pause should be one button that changes icon -- the current setup is a little confusing.
[+] wingerlang|12 years ago|reply
I'd just like to add that I fully agree. It's a confusing setup as it is now.
[+] acl|12 years ago|reply
ah - thanks for the feedback, makes sense.
[+] flexd|12 years ago|reply
I like it, but why not use something like htop? [1]

Perhaps it's not entirely comparable, but you do not need to open any extra ports or run any extra processes.

It looks really nice though! [1] https://en.wikipedia.org/wiki/Htop

[+] acl|12 years ago|reply
I love htop too, but the great thing about scout_realtime is the couple minutes of context provided the charts.

Sometimes, nothing beats seeing a chart to quickly see what's going on.

[+] jahaja|12 years ago|reply
I've recently released a similar tool for Python. Definitely not as pretty but with a focus on providing a lot of details: https://github.com/Jahaja/psdash

The more the merrier! :)

[+] benjamincburns|12 years ago|reply
Did you roll your own SVG chart lib for this? If not, mind sharing which one you're using? It's very nice.

If you were to make it so I can open a socket or websocket to it (perhaps on a second, internal port) and publish whatever data I want, that'd be all kinds of nifty. That is, make it so I can just start spraying numbers at ws://myhost:5556/Really%20Awesome%20Data and with that a nice auto-scaled chart magically appears in the dashboard.

Edit: Oh, I see a github ribbon. Maybe you'll see a pull request sometime soon...

Edit 2: Anyone wondering about my original question - the charts are built using the D3 project.

http://d3js.org/

[+] gvickers|12 years ago|reply
I've been searching for something like that for a while now. A metrics web framework that consumes and renders json/edn would be interesting.
[+] telot|12 years ago|reply
Noob to Ruby here...any thoughts on why gem_original_require is screwing me up? Thanks for the cool looking tool!

/usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- json (LoadError) from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require' from /var/lib/gems/1.8/gems/scout_realtime-1.0.1/lib/scout_realtime.rb:23 from /var/lib/gems/1.8/gems/scout_realtime-1.0.1/bin/scout_realtime:4:in `load' from /var/lib/gems/1.8/gems/scout_realtime-1.0.1/bin/scout_realtime:4 from /usr/local/bin/scout_realtime:19:in `load' from /usr/local/bin/scout_realtime:19

[+] _kushagra|12 years ago|reply
$ gem install json

$ scout_realtime

You're welcome.

[+] stock_toaster|12 years ago|reply
Looks nice, but it slowly turns my laptop into a fireball and pegs an entire core (older laptop).
[+] itsderek23|12 years ago|reply
Sorry. Just FYI, we've clocked the CPU usage of the scout_realtime daemon at 1% on an Intel Xeon 2.40GHz CPU.
[+] keimoon|12 years ago|reply
It is burning my CPU (browser side, not server side) http://i.imgur.com/NgXi4LG.png The author should provide configuration so it does not get data from stats.json every second.
[+] primo44|12 years ago|reply
And I should add that this thing is awesome! It wouldn't install for me unless I was root, but that might be a ruby configuration thing, since this is also the first ruby app that I've ever touched. It would be nice to have an option to have scout_realtime only listen on 127.0.0.1, so (as someone else already mentioned) we could just proxy to it with another web server and then wrap controls around that.

With my 10 minutes of poking around in the scout_realtime source and a bit of googling, I think the option would go here, in main.rb:

   server = WEBrick::HTTPServer.new(:Port => 5555, :AccessLog => [])
[+] tijs|12 years ago|reply
I just tried out the main product and while it's easy to setup i ran into snags with the plugins right away. Both redis and postgres (the first two i tried) failed to install and it took a bit of searching to figure out they had their own dependencies. When trying to install those dependencies i ran into issues with compatibility for a fresh ruby install.

Maybe you should concentrate on fixing your own dependency issues before you start pounding on Nagios (https://scoutapp.com/info/nagios_alternative) about the exact same issue.

[+] lcfg|12 years ago|reply
Cool idea! The interface is a tad heavy (for me) though, the fans of my laptop spun up.

I noticed that by looking at the memory usage of the ssh daemon, one can determine how many people are connected with ssh. Every open connection (even if you're just idling at the login phase) adds around three to five mb to memory use. I wonder what other information might be unintentionally relayed through these metrics.