Giter Site home page Giter Site logo

debugloop / saltobserver Goto Github PK

View Code? Open in Web Editor NEW
13.0 2.0 7.0 839 KB

a simple webapp for presenting data as offered by Salt's Redis returner

Home Page: https://pypi.python.org/pypi/saltobserver/

License: MIT License

Makefile 3.04% Python 52.01% Shell 1.54% CSS 9.93% HTML 33.49%

saltobserver's Introduction

Salt Observer img

This is a simple webapp for presenting data as offered by Salt's Redis Returner written in Flask.

A static demo is available here.

Screenshot of Saltobserver (17-12-2014)

Features

  • a simple and responsive interface based on purecss (and their example email layout to be exact)
  • three main views:
    • a function view showing all minions that ran a particular function (as shown on the screenshot)
    • a history view for looking at a minion's history with a specific function
    • a job view listing all minions which ran a specific job
  • a customizable navbar, which links to function views
  • searchpages for everything
  • live updates for the function view using websockets and Redis' Keyspace Notifications
  • a collapsible representation of raw job data using the awesome renderjson

Running it from PyPI

Just install it using pip install saltobserver. As always, it is recommended to do so in a virtualenv. After that, the command run_saltobserver will be available within this virtualenv. If you want to use non-default settings (at least look at the defaults) prefix the command with export SALTOBSERVER_SETTINGS=/path/to/config. Other than that, you may pass gunicorn options to the run_saltobserver command, they will be passed on so that you can configure gunicorn for use with a proxy server.

A typical deployment could use this command with supervisord:

$ export SALTOBSERVER_SETTINGS=/home/saltobserver/config.cfg run_saltobserver -u saltobserver --bind unix:/var/run/saltobserver/socket

Running it with Docker

Install a recent docker version (at least 1.2) and run

git clone https://github.com/analogbyte/saltobserver.git
cd saltobserver
docker build -t saltobserver .
docker run -d --restart=always --name=saltobserver -p 8000:8000 -e REDIS_HOST=redis.example.org saltobserver

This exposes saltobserver to port 8000 and it tries to connect to redis.example.org as redis host. Change the env var or use docker links as suits your needs. Instead of building it yourself, feel free to use automated build from Docker Hub: docker pull analogbyte/saltobserver

Running it from Source

If your minions return their data to some Redis instance, it is as simple as cloning this repo running scripts/run_saltobserver (and putting that behind a reverse proxy, if needed). This uses Gunicorn, which is pretty flexible and can be configured for pretty much any setup.

Note that your Redis instance has to have a version greater than v2.8.0 for the live updates to work.

Also look at the configuration in saltobserver/config.py.

saltobserver's People

Contributors

asmaps avatar danieljn avatar debugloop avatar mfa avatar

Stargazers

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

Watchers

 avatar  avatar

saltobserver's Issues

requirements.txt is missing

A requirements.txt file with the pip requirements is missing. It's difficult to guess what packages you need...

\n in state log

If e.g. a script runs in a state and generates output this output is badly formatted because \n is not converted to linebreaks.
See attached screenshot.
salt observer 20140814113830319314

Searching for a job ID that does not exist causes Error 500

If you enter a job id that does not exist it will cause an internal server error with the following traceback:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/code/saltobserver/views.py", line 27, in jobs
    function = data.get('fun')
UnboundLocalError: local variable 'data' referenced before assignment

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.