IanLuites
Wobserver - Web based metrics, monitoring, and observer
“Just opensourced our web based observer for Elixir at SQUARE ENIX..”
Hex: https://hex.pm/packages/wobserver
Docs: https://hexdocs.pm/wobserver/
Github: https://github.com/shinyscorpion/wobserver
It really needs a interface rewrite, but that has low priority.
Wobserver
Web based metrics, monitoring, and observer.
Functionality:
- Drop-in monitoring though web interface.
- Metrics endpoint (
/metrics) for system monitoring.
(Default: Prometheus) - Monitoring automation through JSON API.
- Node management and discovery behind firewalls and load balancers.
- Easy to extend:
- Add custom metrics and pages for your project, just by adding them in the config.
- Just 3 lines of code to add pages/metrics for your library, when users have
:wobserverinstalled.
(See how.)
Most Liked
IanLuites
Just posted the new 0.1.6 version with updated docs, loads of bug fixes, better network usage…and a slightly prettier interface.
Let me know what you guys think.
OvermindDL1
Looks fantastic! Also, SQUARE ENIX eh, nice. ^.^
AstonJ
I had no idea Square Enix were using Elixir - we need more people to know about this ![]()
IanLuites
Since it is only monitoring it will depend on the data you handle.
I would personally block outside access to the port running wobserver or limit access in another way.
You can, for example, add authentication by running wobserver in plug mode and integrating it with your own authentication plugs.
OvermindDL1
A few questions. 
Why did you build a custom websocket implementation along with fallback to polling JSON endpoints when the Phoenix Socket library already has all that built in along with back-off procedures on connection failure (where wobserver just waits 5s before each retry when a connection died) among more including longpolling fallback? As well as doing things like observing a specific node would have fit in fantastically into a Phoenix Channel without the odd state handling needed. ^.^
Also adding cowboys low-level socket handlers is fairly difficult with Phoenix’s Endpoint… ^.^;
To put those in, as far as I can see you have to gut the Phoenix endpoint handler and basically re-do some of it manually…
Native Phoenix ‘Socket’ support can be added with a couple more callbacks in lib/wobserver/web/client_socket.ex, as I’ve already done at https://github.com/OvermindDL1/wobserver/blob/master/lib/wobserver/web/phoenix_socket.ex (separate file just because I did not want to pass in the callback module manually, plus cleaner) and submitted a PR for. ^.^
Really should look into using Phoenix Sockets straight though, the abstraction of websocket/longpolling is very nice and the channels allow you to abstract commands better (plus the broadcasting support lets you query once but broadcast the information to multiple people observing instead of each causing an individual query, which would reduce the work-load, and by using the pubsub system then libraries that use wobserver could get updates as well without needing to poll), but this PR is really all that is needed for compat. 
As you can see I sent a set of issues and the above PR, other than the assets issue (that I still cannot figure out, I’m thinking that you should keep the assets.ex file in the git repository, not just on hex.pm), it overall it looks fantastic! 








