IanLuites

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.

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.)

Most Liked

IanLuites

IanLuites

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.

OvermindDL1

OvermindDL1

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

AstonJ

AstonJ

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

IanLuites

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

OvermindDL1

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:

Where Next?

Popular in Libraries Top

marcuslankenau
I feel kind of stuck with the absence of a proper xml library for Elixir. Currently I use SweetXML which was ok for me more or less to pa...
New
deadtrickster
I’ve just released stable versions of my Prometheus Elixir libs: Elixir client [docs]; Ecto collector [docs]; Plugs instrumenter/Export...
New
kelvinst
Hey everyone! Well, we made this lib a while ago and now we decided to finally go out and public with it! It’s a tool for creating and m...
New
achempion
Hi, I would like to tell about my initiative to further maintain and develop Waffle project which is the fork of Arc library. The progre...
New
michalmuskala
Hello everybody. I have just released Jason - a new JSON library. You might be wondering, why do we need a new library? The primary foc...
New
aditya7iyengar
Rummage.Ecto and Rummage.Phoenix provide ways to perform Searching, Sorting and Pagination over Ecto queries and Phoenix collections. Fo...
New
zorbash
I created Kitto a framework for dashboards inspired by Dashing. [demo] The distributed characteristics of Elixir and the low memory foo...
New
OvermindDL1
I created a new library (rather I pulled out a couple files from my big project), it manages an operating system PID file for the BEAM. ...
New
gabrielpoca
Hello everyone! I want to share with you something that I’m really proud of: https://stillstatic.io/ Still is a static site builder for...
New
wojtekmach
Hey everyone! Req is an HTTP client for Elixir that I’ve been working on for quite some time. There is already a lot of HTTP clients out...
New

Other popular topics Top

aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
sergio
I couldn’t find any guides that worked well with Phoenix 1.6.0 and esbuild. I hope this helps people test the waters and eases you into t...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 35421 110
New
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list....
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New

Sub Categories:

We're in Beta

About us Mission Statement