• Stars
    star
    1,290
  • Rank 36,468 (Top 0.8 %)
  • Language
    CSS
  • License
    MIT License
  • Created about 9 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A process/message visualizer for BEAM nodes.πŸ’ͺπŸ‘

Visualixir

Visualixir is a toy visualizer for BEAM nodes, written in Elixir + Phoenix + d3, with live message sequence charts.

It's largely intended as a teaching tool, to give newer BEAM programmers a look into the process ecosystem living inside their nodes. However, it may prove of some amusement/use to more experienced folks (it's kinda neat to trace iex and the io system).

Huge gifs are worth a thousand words:

Cluster Select Cluster Tour

Msg Seq Msg Seq 2

Getting Going

  1. Clone this repository.
  2. Compile: mix deps.get && mix compile && cd assets && npm install && cd -
  3. Start 'er up: elixir --sname visualixir -S mix phx.server
  4. Navigate to the GUI

If you want to visualize other BEAM nodes, you'll need to start them up with the --sname <unique_name_here> option.

I suggest you use Chrome for Visualixir, Safari and Firefox's SVG performance seems to be lacking. :(

There are a couple example modules included, SingleNodePingPong and MultiNodePingPong. Additionally, there's a Cluster module to start up additional :slave nodes.

Usage

Selecting Nodes

On the upper left of the terrible GUI is a list of nodes that Visualixir curently knows about, including itself. You can click on a node's name to visualize it, or you can add a new node by entering it in the text box.

Moving Around

Drag the background to pan around.

Move processes around and pin them down by dragging and dropping. To un-pin, double click.

Zoom by scrolling (mousewheel or two-finger swipe).

Message Tracing

Option-dragging (alt-dragging), will open a new "conversation", you can drop a set of pids into the upper left box to start tracing, you should see messages they send/receive in the adjoining box. Its outline will change to red to remind you that you're tracing it. You can click the Stop Msg Tracing button to halt all message tracing.

The live message sequence charts have a configurable fade time, but there's no GUI for it yet, see web/static/js/message_sequence.js

The charting library is here, and it'd love some pull requests. <3

Warning

Do not run Visualixir on production nodes, seriously. I've tried to make it somewhat safe, but I suspect you can get into some bad message-tracing scenarios that'll compromise your node.

Caveats

This a prototype, obviously, the code is a steaming pile of garbage. Visualixir is largely intended to be a playground for screwing around with visualization ideas. I'd love to see what folks come up with, PR's are gladly accepted! πŸ’• (the GUI needs a lot of help)

More Repositories

1

honeydew

Job Queue for Elixir. Clustered or Local. Straight BEAM. Optional Ecto. πŸ’ͺ🍈
Elixir
713
star
2

d3-message-sequence

Dynamic message sequence charts for d3.
99
star
3

slacker

An Elixir Slack bot! (work in progress)
Elixir
83
star
4

asbestos

High-level DSL for firewalls. Show Asbestos where your services run and how they connect and it'll generate your firewall rules for you. **UNMAINTAINED**
Ruby
82
star
5

elixir-riemann

A Riemann client for Elixir, surprise!
Elixir
57
star
6

annelid

Unwelcome, Replicating, Evasive, Self-Healing Infrastructure for Elixir πŸ’ͺπŸ›β˜£οΈŽ
Elixir
39
star
7

node-s3

[DEPRECATED] An AWS S3 library for Node.js, with bucket-scoped connection pooling.
JavaScript
13
star
8

elixir-lz-string

**UNMAINTAINED** Elixir implementation of pieroxy's lz-string compression algorithm.
Elixir
12
star
9

behaves_like

Instant Elixir behaviours, creates callbacks from specs.
Elixir
6
star
10

node-useragent_parser

Browser Useragent Parser for Node.js
JavaScript
4
star
11

TomBoy

An AAC-like iPhone application generally targeted towards non-verbal autistic kids.
Objective-C
3
star
12

bson_minihash

A better way to store hashes in BSON.
Ruby
3
star
13

shoes_selection_box

Just a little selection box widget for Shoes
Ruby
2
star
14

shoes_shared

Shared modules/classes for my shoes projects
Ruby
1
star
15

shoes_bouncy

Just a little shoes toy, lots of bouncy balls.
Ruby
1
star
16

macruby_bezierpathlab

Just a little toy to get familiar with MacRuby
Ruby
1
star
17

shoes_undirected_graph

A simple undirected graph implementation in Shoes
Ruby
1
star