Hacker News new | past | comments | ask | show | jobs | submit login
Rtail – Terminal output to the browser using Unix pipes (rtail.org)
77 points by kilianciuffolo on July 8, 2015 | hide | past | favorite | 32 comments



Is there a XSS exploit in this? I just clicked on the 'alert' stream, and it displayed two alert dialogs.


I think there is. I keep getting redirected to a 10 hour rick roll youtube video


Ya loads http://bit.ly/1LRJuun that redirects to https://www.youtube.com/watch?v=BROWqjuTM0g&insecure_code=tr...

42["line",{"timestamp":1436363693619,"streamid":"rtail.org","host":"176.199.140.33","port":50049,"content":"<script>window.top.location.href=\"http://bit.ly/1LRJuun\"</script>","type":"string"}]


I fix this for the demo already :)


I got rick rolled :(. Probably an exploit in there.


I fixed this for the demo already :)


Why does it have to be a custom network protocol when using syslog would not only suffice, but also allow for devices that don't run custom code (e.g., switches or routers) to be monitored?


Syslog is a little bit warty- if I didn't use it elsewhere[1], I wouldn't necessarily reach for it. It seems like it should also be fairly trivial to just use your OS' syslog as a shim, if you wanted this to be a syslog endpoint.

[1]: many more people should than do


Trivial, maybe. Not only does it add a single point of failure, though, as the logs get aggregated on the syslog host, the only “benefit” rtail retains is looking at the logs in a browser instead of tail(1).


Not sure why syslogd as a single point of failure is worse than rtail-server being a single point of failure- there are some very, very stable & battle-tested syslogd implementations.

Additionally, it doesn't really seem like that's the case- as long as you were willing to reconfigure syslog on the hosts, you could do syslog -> rtail => rtail-server (-> is local, => is network), as rtail works via UDP.


Wow! This is really cool! I would love to use this at my workplace. I had a small problem, though: it seems the clients don't keep very much data.

For example, I filtered based on an expression that matched about 1-2 lines per second. The lines appeared, but disappeared almost as quickly. I suspect there is some small client-side buffer that I'm overrunning almost instantly; the log stream I used produces about 500 lines per second. Is this too much for the tool? Can I tune it to work with that load?


Yeah, so the filter uses the internal buffer which is 100 lines. you can easily hack it to make it bigger (there is a closed github issue to look at for instructions). I don't want to make bigger buffers available just yet. I want to rewrite the webapp using ng2 and use an infinite scroll for the lines view. Feel free to open a new issue if you want!


Nicely done - the design is amazing. I had to solve a similar problem a while ago and wrote tailon: https://github.com/gvalkov/tailon


What is the difference to using websocketd [1] to stream to a socket.io client?

[1] https://github.com/joewalnes/websocketd


This is a full solution with web app and such; websocketd is just a communication tool, which could be used to build something like rtail.


I am curious. What is the usecase of this?


I can start using this immediately for debugging the backend of a web application during development. For some kinds of debugging, it's preferable to log output to a file or tty instead of printing on the page during a request or stepping through a debugger. This is particularly true in frameworks where you might be trying to debug something that's happened after the rendering step.

I would typically use standard debug logging and tail the output in a terminal while I test, but having that output in a browser, searchable, filterable by RegExp adds a whole additional layer of ease of use. Showing this to all the backend devs on my team today!


It doesn't go to a browser (unless you use something like https://keymetrics.io/2015/06/10/pm2-ssh-expose-a-fully-capa...) but `less` is great for tailing logs, output, etc... and lets you search, filter, set marks.

> foreman start -c web=1,all_worker=3 > /tmp/x & less -r+F /tmp/x; kill -SIGINT %

I run this inside of screen so that I can decide not to wrap the lines.


less is great, and I'm certainly comfortable using it (nice snippet btw!). Other devs on my team who are more web focused would probably find rtail easier to use.

We also have a Vagrant box for each project, and rtail would be trivial to add to the Vagrant template so that every development box has this running on a specific port without any setup or fiddling needed by each developer. At least that's the direction I'm thinking of going in right now, without having actually tried it out. :)


+1 for a common tool chain. It's really nice when you don't have to spend 1/2 the day figuring out someone's setup to help them fix a bug.


https://github.com/kilianc/rtail#rationale let me know if you have more questions, hop in on gitter!


ring ring ring

Hello?

The smoke tests are failing and Kibana isn't returning anything from the past 10 minutes

inaudible $ for i in grotty_old_server{1..10}; do ssh root@i "tail -f /var/log/froznob/goddamn-custom-logging-system" | rtail &; done

Are you still there?

Half of the servers are spewing the same stacktrace 200 times a second.


I meant whats the advantage of viewing it in browser? Couldnt you go through the output in a terminal with multiplexers and tail?


Hello and thanks for reporting! Do you mind opening an issue on github with the error you are presented?


Good stuff. Kudos!

I really like how they ask for sponsors.


Yes, flash 0days piped via terminal :)


Superb, just installed it, setup took 1 minute and now I'm tailing 24 logs on one single page.

Thanks A LOT!


lol. nice rickroll


Nicely done and fantastic landing page!


This is really nicely done, thank you!


nice work, web app's sweet!


thanks, all credits to the amazing designers!




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: