Giter Club home page Giter Club logo

osv-gui's Issues

Application specific tab - Redis

Each virtual appliance we have its own GUI tab, available only if this appliance is running
The Redis tab will include the following information elements:

  • Version
  • Connected clients
  • Used memory
  • Connections received
  • Commands processed

Application specific tab - Tomcat

Each virtual appliance we have its own GUI tab, available only if this appliance is running
Tomcat tab will include the following information elements:

Gauges are presented as line charts.
Counters derivatives are presented as line charts.

Threads

  • Catalina.thread-pool.NAME.currentThreadsBusy Gauge (Integer) threads
  • Catalina.thread-pool.NAME.currentThreadsCount Gauge (Integer) threads

Thread pool NAME can be
http-bio-8081

Requests

  • Catalina.global-request-processor.NAME.bytessent Counter (Integer) bytes
  • Catalina.global-request-processor.NAME.bytesReceived Counter (Integer) bytes
  • Catalina.global-request-processor.NAME.processingTime Counter (Integer) seconds
  • Catalina.global-request-processor.NAME.errorCount Counter (Integer) errors
  • Catalina.global-request-processor.NAME.requestCount Counter (Integer) requests

Sessions per context

  • Catalina.manager.CONTEXT.activeSessions Gauge (Integer) sessions

sources:
http://wiki.apache.org/tomcat/FAQ/Monitoring
http://copperegg.com/tomcat-monitoring-metrics-and-samples/
http://events.linuxfoundation.org/sites/events/files/slides/Monitoring%20Apache%20Tomcat%20with%20JMX.pdf

Visualize JVM information

The new Jolokia REST API [1] provides access to all JVM MBeans, including the application (e.g. Cassandra)
A JVM Tab will allow:

  • explore all available MBean in a tree struct (JConsole like)
  • Generate a chart from each MBean

In addition it will always present a set of predefined information elements:

  • JVM version
  • Heap memory usage
  • Number of threads
  • Number of classes

[1] http://osv.io/api/swagger-ui/dist/index.html#!/jolokia.json

Wrong box alignments for many CPU use case

When there are 32 CPU, the CPU box is very long (which is good)
The bad is the DIsk usage, is pushed below it and not to the space on the left, where there is room for it
image

Application specific tab - Cassandra

Cassandra (C_) tab should be available only if C_ is running.
It will present C* related information in charts and text box.

Cluster - Text info (mostly static)

  • org.apache.cassandra.service.StorageService.Attributes.LiveNodes
    A set of the nodes which are visible and live, from the perspective of this node
  • org.apache.cassandra.service.StorageService.Attributes.LoadMap
    A map of which nodes have what level of load (present as a table)

Operation charts

reads, write, gossip

  • org.apache.cassandra.request.ReadStage.ActiveCount / CompletedTasks
  • org.apache.cassandra.request.MutationStage.ActiveCount / CompletedTasks
  • org.apache.cassandra.interna/type=GossipStage

Latency (charts)

  • org.apache.cassandra.service.StorageProxy.Attributes.RecentRangeLatencyMicros
    The latency of range operations since the last time this attribute was read.
  • org.apache.cassandra.service.StorageProxy.Attributes.RecentReadLatencyMicros
    The latency of range operations since the last time this attribute was read.
  • org.apache.cassandra.service.StorageProxy.Attributes.RecentWriteLatencyMicros
    The latency of write operations since the last time this attribute was read

Compaction Manager (charts)

  • org.apache.cassandra.db.CompactionManager.Attributes.BytesCompacted
  • org.apache.cassandra.db.CompactionManager.Attributes.BytesTotalInProgress

DB (charts)

  • org.apache.cassandra.db.CommitLog.Attributes.ActiveCount
    The number of tasks which are currently executing.
  • org.apache.cassandra.db.CommitLog.Attributes.CompletedTasks
    The number of completed tasks.

source:

JQplot line charts are "jumpy"

jqplot line charts updates are not smooth.
Chart points jump from one place to the other as time pass, instead of moving.
The trace point chart animation is much better.

image

Global Import/export

Export (download) function aggregate the data from all the charts into a text (JSON?) file.
This file, can be import (upload) by a different user, who wants to get a view of the system status.

CPU chart updates are not as expectd

Chart X axis updates only every few new point, which make the data line "jump" from time to time.
Last point is always hanging in the air, making the false impression there are no data point before it.
cpu_chart

Thread average CPU chart - X axis labels are confusuing

The labels on the Time (X) axis on the chart or confusing, quickly jumping from value to value.
It will be better to present only the current time (now) on the right, and label the rest of the points with static labels:
-5s, -10s, -15s etc.

image

Networking box in the main tab

The main tab should include a basic networking box, with the following information elements:

  • Link state (up/down)
  • Rx (chart)
  • Tx (chart)
  • Dropped packets (chart)

Resize main tab on FireFOX does not work well

osv 30aea9e465dd01a50518f67831a53cc717b1b2cb
osv-gui 9cb7802

main tab Resize

  • when not using max screen the decision of display seems incosnsitent

starting with max - I have on main tab

2 rows

1 row has 3 graphs (general info, memory, cpu table)
2 row has 2 graphs (cpu graph, disk)

cpu table is not fully exposed I need to scroll to the right

When I resize the window and star limiting the width - at some point it will force all info to be listed in seperate rows (logical)

Q: why do we display the cpu table partilly ?, shouldn't we resize when we can not view all info

Chrome: works much better

Thread tab is out of order

The entire to screen of the thread tab is empty
Threads charts and selection are hiding in the lower half, after the left ribbon ended
image

Networking tab

In addition to the minimalist #47 there will be a full tab dedicated to networking.
It will include the following information elements:

  • Number of connection
  • Address

Interactive chart for the following information elements:

  • MB/s
  • packet/s
  • errors/s

Each For

  • Rx
  • Tx

and each for

  • IP
  • TCP
  • UDP

Packet size distribution in Bytes

  • < 64
  • 65-127
  • 128-255
  • 256-511
  • 512-1023
  • 1024 - 1517

Java tab is broken

With OSv v0.13-3-g3ca3a97, the GUI tab does not work

Uncaught ReferenceError: OSv is not defined lib.js:10
Uncaught ReferenceError: helpers is not defined jvm:35
Uncaught ReferenceError: helpers is not defined /API/Applications/Tomcat/Requests.js:35

CPU percentage assumes 4 cpus?

I measured a Cassandra guest on two cpus (run.py -c2), and though the table on the right showed me that each of the two CPUs was 99% utilized, the graph on the left showed me the total CPU was only 50% utilized. Could it be that the calculation for the graph on the left always assumes we have 4 cpus?

All tables should support sort by column

One click - sort
second click - sort in reverse order
Unless otherwise defined, init state is sort by the first column
It should be possible to configure (by us, not the user) other column as sorted in init state.

tables

Embed Swagger-UI info the Dashboard

Swagger-UI should become integral part of the dashboard:

  • Keep the header of the dashboard
  • Not refresh the page
  • Have similar style, color, font, etc

The current header of the swagger-ui (see picture below) include input text fields for choosing a JSON file and API Key.
Both are not required for the embedded swagger-ui.

image

Break application tab to application projects

Currently Cassandra tab code is part of the osv-gui, regardless of the availability of Cassandra application.
This have a few drawbacks:

  1. GUI code need to dynamically check if Cassandra is available (this is known at build time)
  2. GUI code will bloat with each new application and application tab
  3. Adding new application require update to the core osv-gui project

A correct solution will put the Cassandra tab under application Cassandra.

Thread selection is not intuitive

Thread selection is compose of two lists:

  1. selected
  2. not selected
    User actions:
  3. select (from group 2 to group 1)
  4. un select (from group 1 to group 2)
  5. clear (move all for items from group 1 to group 2)
    I find the current UI does not match common check box pattern.
    image

Maybe one of the following alternatives can fit:
image
source http://ux.stackexchange.com/questions/1944/best-way-to-select-a-subset-of-items-in-a-long-list

image
source: http://ux.stackexchange.com/questions/3418/what-is-the-best-ui-for-multi-selecting-from-a-list

First one is closer to our task, as it have a search box.

Cassandra tab appears when running tomcat

reproduce:

make -j 4 image=tomcat,httpserver
[tzach@tzach-x240 new-osv]$ sudo ./scripts/run.py -nv
[sudo] password for tzach: 
OSv v0.12-rc1-212-gfeb05b3
eth0: 192.168.122.89
Sep 22, 2014 11:26:53 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Sep 22, 2014 11:26:54 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8081"]
Sep 22, 2014 11:26:54 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1195 ms
Sep 22, 2014 11:26:54 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Sep 22, 2014 11:26:54 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.54
Sep 22, 2014 11:26:54 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/tomcat/webapps/host-manager

image

Uncaught TypeError: Cannot read property 'length' of undefined lib.js:3

I see this error on the console dashboard, profiler tab, when there are no Selected Tracepoints
Error is repeating ~once per sec.
When at least one trace point is selected, the error is stopped, starting again after all traces are cleared.

Uncaught TypeError: Cannot read property 'length' of undefined lib.js:3
n.extend.map lib.js:3
OSv.Boxes.TracePoints.TracePoints.update out.js:2181
(anonymous function) lib.js:3
j lib.js:3
k.fireWith lib.js:3
(anonymous function) lib.js:3
j lib.js:3
k.fireWith lib.js:3
(anonymous function) lib.js:3
j lib.js:3
k.fireWith lib.js:3
(anonymous function) lib.js:3
j lib.js:3
k.fireWith lib.js:3
x lib.js:5
(anonymous function)

Global Pause, Play buttons

On Pause, all the charts are paused at the same point in time, so the user can look at different tabs to analyze the current state.
It should be very clear visually the dashboard is on pause.

On the background, GUI will continue to query for data, so there will be no gap when Play is pressed.

Visualize Trace analytic

Trace.py use the trace API to generate useful profiling information.
https://github.com/cloudius-systems/osv/wiki/Trace-analysis-using-trace.py

A visualization of the same information should be provided.
The following example data, should be presented as a horizontal bar chart, where each level can be dynamically extend/collapse.

$ trace prof
(100.00%, #31742) All
 |-- (79.68%, #25291) zfs_kmem_alloc
 |    |-- (16.95%, #5380) zio_create
 |    |    |-- (8.96%, #2844) dmu_buf_hold_array_by_dnode
 |    |    |    |-- (8.86%, #2811) zfs_get_data
 |    |    |    |    zil_lwb_commit
 |    |    |    |    zil_commit
 |    |    |    |    zfsvfs_teardown
 |    |    |    |    sys_umount2
 |    |    |    |   
 |    |    |    |-- (0.10%, #32) dmu_buf_hold_array
 |    |    |    |    space_map_sync
 |    |    |    |    metaslab_sync
 |    |    |    |    vdev_sync
 |    |    |    |    spa_sync
 |    |    |    |   
 |    |    |    \-- (0.00%, #1) space_map_load
 |    |    |         metaslab_activate
 |    |    |         metaslab_group_alloc
 |    |    |         zio_dva_allocate
 |    |    |         zio_execute
(...)

dashbaord print errors when JVM and Cassandra to presents

Reproduce:
build without Java or Cassandra:

make -j 4 image=httpserver.fg

Run

./scripts/run.py --api
....

exception was caught for /jolokia/read/java.lang:type=Memory/HeapMemoryUsage/used: No JVM running
exception was caught for /jolokia/read/java.lang:type=MemoryPool,name=*: No JVM running
exception was caught for /jolokia/read/org.apache.cassandra.db:type=StorageService/LiveNodes: No JVM running

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.