GithubHelp home page GithubHelp logo

sensu / uchiwa Goto Github PK

View Code? Open in Web Editor NEW
919.0 85.0 175.0 2.39 MB

Uchiwa is a simple yet effective open-source dashboard for the Sensu monitoring framework.

Home Page: https://uchiwa.io

License: MIT License

Go 90.98% HTML 1.78% JavaScript 0.66% Shell 3.35% Ruby 2.82% Dockerfile 0.42%
go uchiwa sensu monitoring

uchiwa's Introduction

Uchiwa

Uchiwa is a simple yet effective open-source dashboard for the Sensu monitoring framework.

This repository contains the backend, written in Go. See uchiwa-web for the AngularJS web frontend.

โš ๏ธ ANNOUNCEMENT - Uchiwa 1.x End-Of-Life on December 31st, 2019

Uchiwa 1.x is currently in maintenance mode (critical bugs and security patch releases only) with no new feature enhancements or additions being planned at this time. The project will be end-of-life on December 31st, 2019 and existing package repositories will become unreachable on January 6th, 2020. Please see our blog post for more details: https://blog.sensu.io/announcing-the-sensu-archives

Uchiwa and Sensu 1.x are both superceded by Sensu Go.

As always, we want to hear from the Community and please reach out on Slack or Discourse if you have any questions or concerns.

Build Status codecov Go Report Download Join the chat at https://slack.sensu.io/

Uchiwa UI

Installation

See Uchiwa Docs.

Configuration

See Uchiwa Docs.

Contributing

See Uchiwa Docs.

Credits

License

MIT (see LICENSE)

uchiwa's People

Contributors

amdprophet avatar ayan4m1 avatar bobtfish avatar br0ch0n avatar ethanhann avatar failshell avatar gillingham avatar grepory avatar jhmartin avatar jpoizat avatar litenull avatar lremurphy avatar palourde avatar pauloconnor avatar pgporada avatar portertech avatar rmc3 avatar roobert avatar rounoff avatar seanclerkin avatar sergk avatar sigwinch28 avatar sjparkinson avatar solarkennedy avatar suhussai avatar tesuvant avatar tjwallace avatar try2codesecure avatar vic3lord avatar willdeed 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  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

uchiwa's Issues

Multi-Sensu

Support multiples Sensu APIs in order to be datacenter/environment aware.

Uchiwa in subdirectory can't locate JS and CSS-files

Hello!

Here is another issue (or mistake on my part). Running nginx as a proxy which seems to work fine. I have placed it under a subdirectory in nginx called /uchiwa/. But as you can see in the picture, the URL path is not correct for the javascript and css-files.

uchiwapath

server {
        listen 80;
        server_name sensu.domain.com;

        charset         utf-8;

        auth_basic "Restricted";
        auth_basic_user_file /opt/graphite/webapp/.htpasswd;

        location /uchiwa/ {
            proxy_pass http://127.0.0.1:3000;
            rewrite /uchiwa/(.*) /$1 break;
            include proxy_params;
        }
}

Or is this an issue with nginx and proxy_pass with rewrite?
It works if I remove the leading slash or if i set the URL manually for each "include"-item in the header.html.

Thanks in advance!

/Daniel

Scheduled stash

Add a crontab like scheduler to add temporary stash every x.

How to enable SSL?

I set ssl: true in the config.js file but then I am not sure what I need to do to have the config use the ssl path?

Checks screen empty

I just installed sensu and uchiwa (from repos), and already have it working with the check-procs check.
The "Checks" list on uchiwa seems empty - even when there's a Critical alert.
checks
What am I missing here?

Thanks.

Question about config - beaglebone black.

I installed uchiwa on a beaglebone black and configured the system in config.js (below).

I launched the app and I can see the web page but it never fills with data from the sensu server. Looking in the sensu api logs I can see some data is being retrieved.

The sensu server is running on a red hat system, and uchiwa is running on a debian wheezy on beaglebone black. This should be fine, right?

I looked around for another forum to ask this question. Apologies if this is not the right place.

Thanks for any tips,
Chris.

module.exports = {
sensu: [
{
name: 'API 1',
host: 'my.sever.xyz',
ssl: false,
port: 4567,
user: 'admin',
pass: 'secret',
path: '',
timeout: 5000
}
],
uchiwa: {
user: 'sensu',
pass: 'secret',
stats: 10,
refresh: 10000
}
}

Side note: I'm running node-red on a beaglebone black and it's working great. For those of you not familiar, check it out.

UI 2.0

We need a new UI in order to:

  • Simplify the AngularJS code (too much hack right now for the grid display)
  • Use more built-in features of AngularJS
  • Easily filter and order clients/events by attributes
  • Display a greater number of clients/events within the same area
  • Fix issues like #37
  • Identify flapping events

In order to achieve these goals, we have to discard the grid view and use a standard table, which will allow us to use the orderBy and other powerful functions of Angular.

Scheduled downtime

Add possibility to create stash for clients/checks in order to permit a scheduled downtime.

Adjustable date format

Would be great to have an additional configuration setting in order to customize the date format.

Socket Hangs

I try to connect to wsocket using "wscat" command and i get this error message.

/uchiwa/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/bin/wscat --connect ws://localhost:3000

error: Error: socket hang up

How i can resolve this?.

Thanks in advance.

Not sure what I am missing

module.exports = {
sensu: [
{
name: 'API 1',
host: 'localhost',
ssl: false,
port: 4567,
user: 'admin',
pass: 'password',
path: '',
timeout: 5000
}
],
uchiwa: {
host: '0.0.0.0',
port: 3100,
user: '',
pass: '',
stats: 10,
refresh: 10000
}
}

I tried it with a blank username/password but to no success. I keep seeing this:

{{dc[$index].name}}
{{EVENT.CHECK.NAME}}
{{EVENT.CLIENT.NAME}}
{{event.check.last_issued}}

What am I doing wrong?

Configurable title

The <title> should be set via a config file so that multiple tabs of uchiwa can be differentiated.

Accessible color schemes

Personally, being red/green color deficient can cause issues with the reds and greens used for various alerts and statuses.

Perhaps we can provide separate themes just for the colors or even make it user configurable and stored in the browser?

Error: Data received by Sensu API was corrupted

We get this error when listing the dashboard, as well as when we want to see the history of a client.

For the listing of the history I've tracked the error down to the callback being called in rest.js:33, with the real error message being [TypeError: Object #<Object> has no method 'filter'].

Is this a known issue?
I'm running sensu 0.13.1

zero clients in uchiwa dash then all clients are healthy

on the main uchiwa dashboard then all systems are stable and there are no events
uchiwa clients dash shows zero clients, if i go to the #clients page is shows all clients correctly, then I force once of the clients stop , the dash updates and show the keepalive event correct for the stopped client , but the clients dash not show there is only one client.
Seems the dash skips all healthy clients. This is true with both sensu 0.12 and 0.13
In previous uchiwa versions it was working correctly.

Support for custom keys/value pairs

Sensu's checks support custom key/value which can be sent as part of the event JSON. It would be nice to have a configuration open to display a specific key and value in an alert.

An example of a use case is a event_detail key which may give more information about the check. Some nagios/sensu scripts only return minimal information, and the concept of contextual alerts means that engineers can get frustrated when a check simply says something like $SERVICE is down.

An example of how this could be beneficial can be seen in the nagios-herald plugin found here:

https://github.com/etsy/nagios-herald

Uchiwa logs don't conform to other sensu component design pattern

Currently the uchiwa logs write to /var/log/uchiwa.log and /var/log/uchiwa.err in an unstructured format. The rest of the sensu components write json format logs to /var/log/sensu/*.log

Would like to see the uchiwa logs follow the json format logging so this can easily be collected by logstash.

Delete a client

Add the possibility to delete a client from the client details view.

Use ngRoute

Using ngRoute will make the front-end site a single-page app. There are various benefits to doing this.

  • Architecturally speaking, the Angular app will be (almost completely) decoupled from the backend.
  • From a performance perspective, after the initial page load subsequent communication to the server will only be via a web socket.
  • Using some built-in Angular directives (e.g. ng-cloak, ng-view, ng-include) will be possible.
  • It may be easier to have deeply linked modals.

Shallow clone is performed for publicConfig

The publicConfig object created to hide password strings from the configuration displayed on the web interface is actually a shallow clone of the config object.

This causes all passwords in the config to be changed to *****.

Dashboard shows standalone true when is false

Hi guys,

Specifically in this line

check.standalone = (_.isUndefined(check.standalone)) ? false : true;

I am afraid if you define standalone = false in the check config, it will display the check as true, as the standalone value is defined, and will be only false if it is not set there. I can see in our dashboard how all our server checks are looking like standalone.

Cheers

Event counts still seem to be off.

Using v0.1.7
Below is a screen capture of my counts.
The total of 6 is right... but the count of unknown vs warning should be the same right?

image

i18n support

Just a little enhancement : add the possibility to add multiple-language support.

Add Grunt task for building Sass themes

Themes that derive from the default theme may break if they are not recompiled after the default theme is modified (see #57). Having a pre-release build task that compiles all Sass source will make this a non-issue.

Ability to link to an incident

I feel like it would be very beneficial if we could get a direct link to an incident that we could add into handlers and/or json.

An example of a use case here is putting the link to an incident directly into a pagerduty alert so the user can simply click on it to get to the problem event,

Long client names protrude from tile

Some of my client names are 60+ characters long and extend past the end of the tile borders.

It would also be nice to have the option of using a classic list rather than the tile grid for events and clients.

Keep up the great work.

Reaching sensu-api through a proxy

Hello!

I'm not sure if this is a bug or if I have configured something wrong. Could also be me just thinking wrong. But here is the problem: our sensu-api is not reachable directly over port 4567, but through nginx instead. We can reach our API on https://monitor.domain.com/api which works fine. HTTP Auth is also enabled.

When I'm trying to run uchiwa, I got this error message:

daniel ~/Prog/uchiwa: node app.js 
   info  - socket.io started
Express server listening on port 3000

undefined:1
<html>
^
SyntaxError: Unexpected token <
    at Object.parse (native)
    at IncomingMessage.<anonymous> (/home/daniel/Prog/uchiwa/lib/rest.js:31:31)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:919:16
    at process._tickCallback (node.js:419:13)

I think this could be a https issue since we rewrite http to https. I guess uchiwa is using http as default?

I removed the http->https redirection and got http://monitor.domain.com/api running instead.

^Cdaniel ~/Prog/uchiwa: node app.js 
   info  - socket.io started
Express server listening on port 3000
Fatal error, Sensu API responded with: 404

If i dump the traffic, it requests http://monitor.domain.com/stashes instead of http://monitor.domain.com/api/stashes. Seems like it doesn't append the path option from the configuration.

This is how the configuration looks like:

module.exports = {
  sensu: {
    host: 'monitor.domain.com',
    port: 80,
    user: 'user',
    pass: 'pass',
    path: '/api',
    timeout: 5000
  },
  uchiwa: {
    user: '',
    pass: '',
    refresh: 10000
  }
}

Thanks in advance!
And by the way, thanks for releasing this dashboard. It is great :)

/Daniel

Deleted stash should be immediately removed from the list

It should be working, here's the output from the console:

TypeError: Cannot read property '0' of undefined
    at h.$scope.deleteStash (http://localhost:3000/js/controllers.js:306:18)
    at http://localhost:3000/js/angular.min.js:172:382
    at http://localhost:3000/js/angular.min.js:189:390
    at h.$eval (http://localhost:3000/js/angular.min.js:108:482)
    at h.$apply (http://localhost:3000/js/angular.min.js:109:235)
    at HTMLElement.<anonymous> (http://localhost:3000/js/angular.min.js:189:372)
    at HTMLElement.x.event.dispatch (http://localhost:3000/js/jquery.min.js:5:10006)
    at HTMLElement.y.handle (http://localhost:3000/js/jquery.min.js:5:6796) 

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.