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.

Click to see more images.

Click to view images

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 :wobserver installed.
      (See how.)
49 Likes

Amazing ! Good work on that, will be really helpful :grinning:

SQUARE ENIX…cool!

4 Likes

Looks fantastic! Also, SQUARE ENIX eh, nice. ^.^

5 Likes

I had no idea Square Enix were using Elixir - we need more people to know about this :003:

5 Likes

Looks really cool!

I could probably help you out with the interface. I have been looking for an excuse to try out a js client side framework I haven’t yet used. Would you have any preferences?

4 Likes

This is really cool! Let’s spread this to the world :smile: https://news.ycombinator.com/item?id=13640649

3 Likes

Looks awesome. Question is, how safe is to put it on a production server?

2 Likes

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.

5 Likes

Wow SQUARE ENIX! Awesome!!

3 Likes

Just posted the new 0.1.6 version with updated docs, loads of bug fixes, better network usage…and a slightly prettier interface.

Click to see more images.

Let me know what you guys think.

11 Likes

Looks fantastic !! :slight_smile:

3 Likes

Looks really good! :open_mouth:

2 Likes

A few questions. :slight_smile:

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. :slight_smile:

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! :grin:

5 Likes