Giter VIP home page Giter VIP logo

mesos-ui's Introduction

Mesos UI

Join the chat at https://gitter.im/Capgemini/mesos-ui

wercker status Code Climate Test Coverage

A responsive, realtime dashboard for Apache Mesos built using Node.js, React.js.

dashboard

Usage as standalone while keeping the default Mesos UI.

You can run and deploy this app in standalone mode via docker like:

docker run -p 5000:5000 -e ZOOKEEPER_ADDRESS="ip1:2181,ip2:2181,ip3:2181" capgemini/mesos-ui:standalone-$TAG

or using marathon:

replace ZOOKEEPER_ADDRESS with the address of your zookeeper instances and run:

curl -X POST -HContent-Type:application/json -d @marathon.json http://MARATHON_ENDPOINT:8080/v2/apps

Usage as a replacement for the default Mesos UI.

The quickest way to check it out is just run:

docker run --net=host -e MESOS_LOG_DIR=/logs capgemini/mesos-ui:latest

And you should be able to access to 127.0.0.1:5050 via browser.

Powered By Mesos UI

Organisations using Mesos UI. If your company uses Mesos UI, we would be glad to get your feedback :)

mesos-ui's People

Contributors

collinmsn avatar enxebre avatar euphoria avatar gitter-badger avatar justinclayton avatar protochron avatar rhoml avatar richm-c avatar tayzlor avatar wallies avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mesos-ui's Issues

Please provide sandbox access

+1 for a nice UI. awesome work

I would really like to see sandbox access for tasks in order to debug certain events.

Upgrade versions

Need to upgrade material-ui, react and react router.
Table does not support events on current version so can't order task by clicking on header

Add a cluster info widget

Should be able to display at least some of the below in some sort of nice way -

        "build_date": "2015-07-24 10:05:39",
        "build_time": 1437732339,
        "build_user": "root",
        "cluster": "eu-west-1",
        "completed_frameworks": [],
        "deactivated_slaves": 0,
        "elected_time": 1440687155.427,
       "start_time": 1440687151.94147,
        "unregistered_frameworks": [],
        "version": "0.23.0",
       "git_sha": "4ce5475346a0abb7ef4b7ffc9836c5836d7c7a66",
        "git_tag": "0.23.0",
        "hostname": "52.19.160.202",
        "id": "20150827-145231-1258422282-5050-1",
        "leader": "[email protected]:5050",
        "log_dir": "/var/log/mesos",
        "orphan_tasks": [],
        "pid": "[email protected]:5050",

To provide paging/tailing abilty over logs

At the moment when streaming the logs we have a pretty basic approach so we are tailing a fixed size of the file resulting in only 15 last minutes of logs being available to the user.

We should be able to provide paging and tailing ability for showing differents chunks of the log file under demand, i.e when scrolling up/down.

At the moment we are needing two request for streaming the last chunk of the log file:
/files/read.json?path=/master/log&offset=-1 -> gives the size of the file
/files/read.json?path=/master/log&offset=' + size-60000 + '&length=' + offset+100000 -> shows the last maximum lenght

This ticket should also reduce the number of request to one.

See:
https://github.com/apache/mesos/blob/master/src/webui/master/static/pailer.html
https://github.com/apache/mesos/blob/master/src/webui/master/static/js/jquery.pailer.js

Running this on a large mesos cluster causes the cluster to lock up

I just tested this on a large-ish (250+ slaves, ~2,000 active tasks) cluster, and running it caused the cluster to lock up. (Also the UI didn't really work at all)

My guess is this requests /state.json a lot on the master, which essentially blocks all operations on the master until the request completes.

marathon

Hi,
I like this UI for mesos, but I try deploy via marathon (I use your marathon.json) and nothing...

Of course I set MESOS_ENDPOINT env.

I1116 18:27:45.457697 135617 exec.cpp:134] Version: 0.25.0
I1116 18:27:45.461282 135631 exec.cpp:208] Executor registered on slave 5db8004a-2588-41a2-8259-59ba23810c31-S1
I1116 17:27:45.902663     1 main.cpp:181] Build: 2015-07-24 10:05:39 by root
I1116 17:27:45.902845     1 main.cpp:183] Version: 0.23.0
I1116 17:27:45.902851     1 main.cpp:186] Git tag: 0.23.0
I1116 17:27:45.902854     1 main.cpp:190] Git SHA: 4ce5475346a0abb7ef4b7ffc9836c5836d7c7a66
I1116 17:27:45.903029     1 main.cpp:204] Using 'HierarchicalDRF' allocator
I1116 17:27:45.903746     1 main.cpp:383] Starting Mesos master
I1116 17:27:45.904762     1 master.cpp:368] Master 20151116-172745-822088108-5050-1 (756e8ff45677) started on 172.17.0.49:5050
I1116 17:27:45.904777     1 master.cpp:370] Flags at startup: --allocation_interval="1secs" --allocator="HierarchicalDRF" --authenticate="false" --authenticate_slaves="false" --authenticators="crammd5" --framework_sorter="drf" --help="false" --initialize_driver_logging="true" --log_auto_initialize="true" --logbufsecs="0" --logging_level="INFO" --max_slave_ping_timeouts="5" --port="5050" --quiet="false" --recovery_slave_removal_limit="100%" --registry="in_memory" --registry_fetch_timeout="1mins" --registry_store_timeout="5secs" --registry_strict="false" --root_submissions="true" --slave_ping_timeout="15secs" --slave_reregister_timeout="10mins" --user_sorter="drf" --version="false" --webui_dir="/web-ui" --zk_session_timeout="10secs"
I1116 17:27:45.905131     1 master.cpp:417] Master allowing unauthenticated frameworks to register
I1116 17:27:45.905143     1 master.cpp:422] Master allowing unauthenticated slaves to register
I1116 17:27:45.905313     1 master.cpp:459] Using default 'crammd5' authenticator
W1116 17:27:45.905326     1 authenticator.cpp:504] No credentials provided, authentication requests will be refused.
I1116 17:27:45.905334     1 authenticator.cpp:511] Initializing server SASL
I1116 17:27:45.911619    27 master.cpp:1481] The newly elected leader is [email protected]:5050 with id 20151116-172745-822088108-5050-1
I1116 17:27:45.911646    27 master.cpp:1494] Elected as the leading master!
I1116 17:27:45.911658    27 master.cpp:1264] Recovering from registrar
I1116 17:27:45.911751    33 registrar.cpp:313] Recovering registrar
I1116 17:27:45.913300    28 registrar.cpp:346] Successfully fetched the registry (0B) in 1.479936ms
I1116 17:27:45.913645    28 registrar.cpp:445] Applied 1 operations in 133890ns; attempting to update the 'registry'
I1116 17:27:45.915288    37 registrar.cpp:490] Successfully updated the 'registry' in 1.601024ms
I1116 17:27:45.915348    37 registrar.cpp:376] Successfully recovered registrar
I1116 17:27:45.915453    19 master.cpp:1291] Recovered 0 slaves from the Registry (94B) ; allowing 10mins for slaves to re-register

Any ideas what is wrong?

MESOS_ENDPOINT/master/state.json
MESOS_ENDPOINT/master/state-summary
return some json;)
Thanks

npm ERR! peerinvalid

~$ npm install
...
npm ERR! peerinvalid The package react does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer [email protected] wants react@>=0.13
npm ERR! peerinvalid Peer [email protected] wants react@>=0.13.2 || ^0.14
npm ERR! peerinvalid Peer [email protected] wants [email protected]
npm ERR! peerinvalid Peer [email protected] wants react@^0.14.0-0 || ~0.13.x || ~0.12.x
npm ERR! peerinvalid Peer [email protected] wants react@^0.14.3

npm ERR! System Linux 3.19.0-33-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! cwd /home/zmo/Src/docker/mesos-ui
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! code EPEERINVALID
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/zmo/Src/docker/mesos-ui/npm-debug.log
npm ERR! not ok code 0

On package.json:

...
"react": "0.14.3",
...

Provide logs tab for slaves

At the moment we are only showing the logs for master.
We should do the same for the slaves.
We might want to consider to move the logs into a React component and resue it with the specific parameters between master and slaves

Embed/Include external dependencies

I'd like to try mesos-ui, however, I'd be running it on a server that doesn't have access to the internet. Looking at just the index.html, that means some fonts and js wouldn't load.

It would be great if the resources were embedded or included with the release to avoid having to talk to external servers.

Add a theme switcher component

At the moment we are just using default white theme coming from Material-UI for react. We should have a switcher component visible on the screen that allows us to toggle to the dark theme as well as any custom themes defined in ./themes

Support for sandbox task

Support sanbox when clicking on tasks
Can probably create popup with container info plus logs

Unable to access UI

I'm running Mesos 0.28.2 and I just started the standalone-0.1.4 image with:
docker run -p 33000:33000 -e MESOS_ENDPOINT=http://master.mesos:5050 capgemini/mesos-ui:standalone-0.1.4

The output of the container shows some "Starting messages" and the last message says "Finied 'server' after 1.35s".

I try to curl localhost:33000 and also try to browse to my_server:33000 and I get nothing. When I curl, I get curl: (56) Recv failure: Connection reset by peer.

Any thoughts/ideas? I notice the README in the gihtub repo instructions is different than on docker hub, not sure which is correct. Also, on docker hub I just noticed it is compatible with mesos 0.23....is that accurate?

Provide more information around tasks

At the moment we have a single donut widget that shows

  • running tasks
  • staged tasks

We might also want to think about how we visualise

  • finished tasks
  • killed tasks
  • lost tasks
  • failed tasks

Allow the application to run on a URL path other than /

When you deploy this app on a mesos cluster with docker on random port, it's usefull to use a tool like consul-template to configure a ngnix to proxy the call behind a path like /mesos-ui/. Right now the application does not allow it

MESOS_ENDPOINT in case of HA mesos cluster

Hello
your work is very promising!
I was just testing the mesos-ui today, and i get stuck at the point of providing the MESOS_ENDOINT variable.
We have a HA mesos cluster, with 3 Mesos masters.

I tried providing the mesos leader as MESOS_ENDPOINT, it works fine.

I also tried providing a mesos follower as MESOS_ENDPOINT, and it seems redirection to the leader is not working. UI keep refreshing with a "This master is not the leader, redirecting..." message, but nothing shows up.
Can i activate some debug logs for investigation?

Anyway, what about supporting zookeeper urls (zk://mesos1:2181,mesos2:2181,mesos:2181/mesos) as the endpoint, so the UI can always talk to the leader?

Ability to Customize Actions

So before I go into details here on my idea, I want to say that I am not a UI developer, not a web developer, not a JS developer, and know little about node/gulp etc. Thus, this is just an idea/brain storm, and the eventual effort may be way more than is feasible.

I love this UI, it's much more representative than the default UI, but one thing I've noticed with Mesos in general is there is a lot of functionality under the hood. For example, if I want to terminate a framework, I can hit an API, and terminate it, but there is no way to do that in the default UI. So, what if we could create that here, every user/admin may want to play with different things, how hard would it be to add a tab on left that may include all tasks, and then let the user customize a view? That view could show the task, show sandbox logs, show a "terminate" button. This is true of nodes too, there are some maintenance primitives in Mesos now, how nice would it be to click a node and drain it for work? Dynamically assigning roles is another option. Perhaps some dev work needs to be done, so we want to pull from unassigned resources and tag three nodes as dev (there is an API for that). This would need to involve authentication, but perhaps we could do that by for an individual session, allow a user to supply credentials that all API requests would have added... I love all the things we can do with MEsos, it would be neat if as a user, and as I learn to adopt some of the features in our org, we could make "buttons" for them so to speak by customizing a UI like mesos-ui.... this seems complicated, and it probably is, but it would really make mesos-ui an amazing tool for Mesos in general.

Thoughts?

ZOOKEEPER_ADDRESS should accept domain names too

just wasted ages trying to figure out why this wouldn't start.
this works:

ZOOKEEPER_ADDRESS="ip1:2181,ip2:2181,ip3:2181"

this doesn't, but should!

ZOOKEEPER_ADDRESS="some_domain_that_resolves_to_an_ip:2181"

make: *** [build_mesos_image] Error 2

~$ git clone https://github.com/Capgemini/mesos-ui.git mesos-ui
~$ cd mesos-ui/
~$ npm install
~$ export MESOS_VERSION="0.25.0"
~$ export MESOS_UI_VERSION="0.1.1"
~$ make
...
[14:40:18] Finished 'bundle' after 15 s
[14:40:18] Finished 'build' after 15 s
sed "s/VERSION/0.25.0/g" DockerfileMesos > TempDockerfile
sed: can't read DockerfileMesos: No such file or directory
make: *** [build_mesos_image] Error 2

In the end, DockerfileMesos file is not present in the checkout

~$ ls
build            Dockerfile  gulpfile.babel.js  marathon.json  package.json  src             webpack.config.js
CONTRIBUTING.MD  docs        LICENSE            node_modules   README.md     TempDockerfile  wercker.yml

Thanks for the support

UI only ?

Is there a way to run the UI only ?

Meaning a container that does not extend the mesos one (or participate as master/slave)?

I also can't find the tag stand-alone per README.

Any ideas?

Thanks in advance!

Don't require this as the default mesos ui

Say I want to keep the default mesos ui, and present this as the ui I show users via a service discovery solution or something.

Would it be possible to use this and have it reach out to the mesos master via the http api?

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.