Giter Club home page Giter Club logo

monitorr's Introduction

monitorr

- Monitorr is a webfront to live display the status of any webapp or service

GitHub Master-release [MASTER]

Docker build [DOCKER]

GitHub (pre-)release [DEVELOP]

NOTICE (27 June 18): If updating to version 1.7 from ANY previous version, BEFORE updating backup your custom.css file located at: [Monitorr install path]/assets/data/css/custom.css . After the update is complete, simply restore the custom.css file to the same location overwriting the custom.css file that was updated. This is due to a bug which has been resolved in version 1.7 therefore this process will no longer be needed in future updates. See the WiKi Update Notice for more information.

Features:

Latest major change: Multi HD display / Service ping response time display

  • LIVE! (w/ option to pause live updating)
  • Self-hosted.
  • Responsive mobile display.
  • Monitor any app/service on any domain (Curl as primary check, fsockopen as fallback).
  • Enable/disable hot linking for each service.
  • Service ping response time display. (NEW)
  • Host system resources display (CPU, MEM, HD, PING, Uptime) (UPDATED)
  • Integrated settings page w/ authentication.
  • User customizable system threshold colors.
  • Custom CSS tool. (NEW)
  • Server DTG data. (UPDATED)
  • Update tool via web UI / branch switching w/ update notification.
  • Minimal UI for iFrame displays. (See: WIKI)

Features in development:

Screenshots:

Monitorr Screenshot

Mobile:

Monitorr Mobile SS

Prerequisites:

  1. PHP (7.1+ recommended)
  2. PHP cURL
  3. PHP ZipArchive
  4. PHP PDO
  5. SQLite
  6. GIT (Recommended for Windows hosts (see wiki)

Quick Start:

  1. Clone/download the Monitorr repository to your webserver. (Docker image available here: Docker build )
  2. Browse to: [localhost\domain]/monitorr/index.php
  3. Establish data directory, and user database via secure registration tool.
  4. Log in and configure Monitorr via secure settings UI.
  5. Chill

Feature Requests:

Feature Requests

Current feature requests:

Feature Requests

Connect:

About Us:

Credits:

- Causefx - christronyxyocum - rob1998 - Roxedux -

Libraries used in this project:

monitorr's People

Contributors

gitter-badger avatar jonathanfinley avatar lucidonlinenet avatar rob1998 avatar roxedus avatar savageaus avatar seanvree avatar tronyx avatar unimatrix0 avatar wjbeckett 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

monitorr's Issues

FEAT: Add SystemInfo

This is gonna be a big feature, but I think it's really needed.

one tile that will list server/system resources, don't wanna get to crazy with this, just the basics here. a quick list right now:

  • CPU
  • MEM
  • UPtime
  • PING RT

FEAT: Settings page

Updated: jonfinley 3/5
Feature: Integrated Settings Page

STATUS: Pushing to master

Current Branch: Develop

BUGS:

Progress:

  • (Complete) Development
  • (Complete) Functionality
  • (Complete) Pushed to Alpha
  • (Complete) Test: Windows
  • (Complete) Test: Docker
  • (Complete) Test: Linux
  • (Complete) UI Android
  • (Complete) UI iOS:
  • (Complete) Merged to DEV
  • (Pending) Merged with master
  • (Pending) Release published

Individual setting pages:

  1. Info:
  • PHPInfo
  • Update check/execute
  • Github link / Docker Hub link
  • Donate Link
  • CSS
  1. User Preferences:
  • Site Title

  • Site URL

  • Language??

  • Time Standard

  • Time Zone (!issue)

  • Update Branch

  • UN & PW

  • CSS

  1. Monitorr Settings:
  • Alert Banner enable/disable
  • Refresh sysinfo
  • Refresh Time
  • Ping Host
  • Ping Port
  • CPU OK
  • CPU Warn
  • RamOK
  • RamWarn
  • HD OK
  • HD Warn
  • CSS
  1. Services:
  • Service Title
  • Service Image
  • Check Type
  • Check URL – DONE
  • Link URL – DONE
  • Offline Link URL - LATER
  • Authentication - LATER
  • CSS

Sticky: ReadMe changes

  • Add link to wiki
  • Remove Config and replace with wiki?
  • Add small blurb of HOW Monitorr works
  • Add link to Logarr
  • Credits (Leram, Causefx)

Uptime is not working (Shows 00:00:00:00)

Server Specs:
Windowns 10 - Version 1703 (OS Build 15063.674)
nginx version 1.13.6
PHP version 7.1.11

PHP block in nginx.conf:

  ## Enable PHP
    location ~ \.php$ {
  	try_files $uri =404;
  	fastcgi_param HTTPS on;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  	fastcgi_param REMOTE_ADDR $http_x_real_ip;
        include fastcgi_params;
  }

Color picker for status icons

Color picker or box in settings page.
Users enter #123456 and it will update the color of the online/offline icons

FEAT: 12HR Clock Format

Just like the title states. Would like to have an option to choose between 12/24hr clock in the assets/config.php file and option to remove seconds and be able to use am/pm

BUG: Time refresh variable in config.php is not functional.

BUG: Time refresh variable (RFTIME) in config.php is not functional.

STATUS:

  • (OK) Development: Complete
  • (OK) Functionality
  • (In-progress) Test: Windows
  • (Pending) Test: Linux
  • (OK) UI Android: N/A
  • (OK) UI iOS: N/A
  • (Pending) Pushed to DEV
  • (Pending) Merged with master
  • (Pending) Release published

Solution:

Will be added when settings version is released.

Quick fix: Change the following block in index.php:

    <script type= "text/javascript">
        $(document).ready(function() {
            function update() {
            $.ajax({
            type: 'POST',
            url: 'assets/php/timestamp.php',
            timeout: 5000,
            success: function(data) {
                $("#timer").html(data); 
                window.setTimeout(update, 2000);
                }
            });
            }
            update();
        });
    </script>

Change to:

window.setTimeout(update, <?php echo $config['rftime']; ?>);

To do (Style Stuff)

  1. Spacing of tiles - Need to somehow define relative spacing to browser window (like the old .HTML version was) See below. IF you have a lot of tiles, it looks fine, but if you only have a few and are viewing the page on wide zoom config, it looks bad...too much padding

image

  1. Need offline link function (I really think this is a good feature. I know not everyone uses uptime robot, but if the service is offline, need to send the request to some type of user-defined offline page, in fact, we can make a very simple one as a default / place holder that will live in the repo base DIR, and the user can change it if they want - OR we can simply redirect them back to the base URL)

  2. Need to add link to the bottom of index.php which shows GIT version, like this:
    image

  3. Need to possibly rethink the auto-generation of the images based on the user-defined link in conig.php. SOME users may not use the most common names. For example, I don't use "OMBI" (because no one knows what the F that stands for) - so IF I want the service title to be "plex request" but show the OMBI icon, you'd have to define that.

  4. let's go ahead and merge PHP with Dev, and push dev to master.

Thanks it for now, great work @jonfinley @wjbeckett !!! SICK!

Change config.php delivery

Need to change the way we supply the config file so that updates do not overwrite a users config.

  • Change the config.php to config.php.sample
  • Update README to reflect the new config setup (copy config.in.sample to config.ini)

Gogs

My gogs server is always showing offline

FEAT: Custom Buttons

Would be great to add these right next to CPU/RAM/UPTIME, above or below them.

One button can be Contact to allow users to contact us directly. Another one for About that can redirect users to another page to get info about server, how to request access etc etc.

FEAT: Create Default offline page for DOWN services.

The OFFLINE image already denotes that's it's down, but it will still be a hyperlink to the DOWN link, so we just need to point that link somewhere, either BACK to the index.php, or I would say let's create a quick offline page that the user can change via the settings.php page

BUG: Column / Row Distribution

Issue: Service tiles are not populating in rows and columns properly

Suggestion:

Default: Need to set default display of 6 tiles wide
Interim: Possible use tables?
End result: Be able to define ROWs for each service via the /assets/config file.

Can't use bg gradient and can't change button radius

If I use bg gradient in the body section of main.css, I get a page with background tiling vertically into 3 rows. A single background color works properly with no tiling.

And no matter what radius I use for btnonline and btnoffline, I can't change the shape of the buttons.

[NOTES]: TO DO

to do list (on-going):

  • Fix clock/timer .jS so analog and digital are server local DTG
    -- Uncaught ReferenceError: $config is not defined
    at clock.js:52

Ram percentage higher than 100%

System stats:
PHP 5.6.12
Win 10 v. 1703 (OS Build 15063.674)
CPU: Ryzen 1700
32 GB Ram

image

CPU seems correct, ping seems correct, uptime is stuck at 0, RAM is over 100%

List of services/apps known to NOT work with Monitorr

BLUF: Apps that are known to NOT work with Monitor (PHP-CURL)r:

  • DD-WRT
  • NZBGet
  • Mattermost

Background: Monitorr uses CURL to receive HTTP status codes from services in order to determine UP/DOWN status. This is a bit more advanced than a simple ping. CURL actually checks to see if the webapp/site is responding whereas PING simply checks to see if there is ANY response on that port.

ISSUE: There are some services that will NOT respond to CURL requests. We assume this is for security as to combat DDOS attacks or PING flood. Unfortunately, there's no way around this right now other than to ask the software developer to build CURL responses into their software/UI.

You can test this by running the following command in a terminal ON THE SERVER that is hosting Monitorr. You will want to use the same exact address you use in your Monitorr/assets/config.php file.

curl -I -L http://192.168.1.1

You'll see the response below that this particular device (in this case DDWRT) rejects the curl request. So even tho the user can access that exact address from a browser, Monitorr would report this service as DOWN.

Response:


C:\WINDOWS\system32>curl -I -L http://192.168.1.1
curl: (52) Empty reply from server

These are examples of successful CURL responses:
(The below example is to PLEX, even tho the response is "unauth" the website IS responding, therefore Monitorr would report it as UP.)


C:\WINDOWS\system32>curl -I -L localhost:32400
HTTP/1.1 401 Unauthorized
Content-Length: 193
Content-Type: text/html
X-Plex-Protocol: 1.0
Cache-Control: no-cache
Date: Thu, 04 Jan 2018 18:55:04 GMT


And below are normal successful responses:

C:\WINDOWS\system32>curl -I -L localhost:80
HTTP/1.1 301 Moved Permanently
Content-Length: 144
Content-Type: text/html; charset=UTF-8
Location: http://localhost/home
Server: Microsoft-IIS/10.0
 Access-Control-Allow-Origin: Access-Control-Allow-Origin: http://www.yourdomain.com
Date: Thu, 04 Jan 2018 18:55:15 GMT

HTTP/1.1 301 Moved Permanently
Content-Length: 145
Content-Type: text/html; charset=UTF-8
Location: http://localhost/home/
Server: Microsoft-IIS/10.0
 Access-Control-Allow-Origin: Access-Control-Allow-Origin: http://www.yourdomain.com
Date: Thu, 04 Jan 2018 18:55:15 GMT

HTTP/1.1 200 OK
Content-Length: 8118
Content-Type: text/html
Last-Modified: Wed, 27 Dec 2017 02:26:49 GMT
Accept-Ranges: bytes
ETag: "aea44b26ba7ed31:0"
Server: Microsoft-IIS/10.0
 Access-Control-Allow-Origin: Access-Control-Allow-Origin: http://www.yourdomain.com
Date: Thu, 04 Jan 2018 18:55:15 GMT

Suggestion: There are a few workarounds:

  1. For a service that reports as DOWN (non-reverse proxied service) despite it actually being UP - set the monitored link in config.php to a reverse proxy link - this will allow you to have a working link on your Monitorr UI given the service is actually UP.

  2. If reverse proxy is NOT an option - you can edit the Monitorr CSS HTML code so that you don't see the ugly "RED" on your Monitorr UI and to always show an UP status.

Way ahead:

We are looking into a few options such as backup simple PING, LINX, or custom response codes. If you have any ideas. Hit us up on Discord!

NOTE: /assets/php/check.php ADD the following line to NOT allow Monitorr to check beyond your reverse proxy:

 curl_setopt($handle, CURLOPT_FOLLOWLOCATION, FALSE);

Rewrite Index and Functions files

Layout issues with Bootstrap are making me want to rewrite it from scratch.
Putting this in for v1 as it'll require a considerable amount of work as the functions file needs to be rewritten/condensed too.

FEAT: Remove URL from icons option

Your environment:

  • Operating system: Docker Container (Official)

  • Monitorr Branch: Master

Describe your issue:

The goal would be to allow the user to REMOVE the hyperlink behind certain icons or even all icons. Specifically, I display this at the top of a screen in Organizr. When a user logs in, I show them Plex, Requests, NZBget, Sonarr, Radarr statuses. The goal is to show that all systems are up and available or if not, that there is an issue obviously. I'd like to remove the links though for NZBget/Radarr/Sonarr - because they won't have access and I don't want them to click on it and think something is broken.

BUG: Spacing of tiles

Spacing of tiles - Need to somehow define relative spacing to browser window (like the old .HTML version was) See below. IF you have a lot of tiles, it looks fine, but if you only have a few and are viewing the page on wide zoom config, it looks bad...too much padding

image

FEAT: Publish T-shooting Wiki

  • Limitations:
    a. Internet Explorer....ooofff
    b. iOS Safari?
    c. Services don't respond to CURL (NZBGET, DDWRT)
    d. Mobile Display - Bootstrap in development

  • PHP issues: Users needs to check /monitorr/assets/php/phphpinfo

  • False up/down status
    a. Webserver Authentication
    b. Base URLs: Depending on servcie/app, user must config base URL after PORT (Example: (PlexPY): 127.0.0.1:32500 will report as DOWN, 127.0.0.1:32500/PLEXPY will report as UP).
    c. testing return codes with curl:

curl -I -L http://192.168.1.1

To check a resource which required authentication, the following can be used:

curl -I -L -u username:password http://yoursite.com

https://curl.haxx.se/libcurl/c/libcurl-errors.html

  • Org / auth breaks monitorr
    a. application/API work-around?

  • Browser cache/CSS issues after update.

  • Customizations:
    a. Adding custom images
    b. Turn off scrolling on min site

testing issue template

Your environment:

  • Operating system: test

  • Webserver: NGIX v. 3.8 test

  • PHP Version: 7.2.1 x64 NTS

  • Monitorr Branch: master

Describe your issue:

Hi. this is a test issue to test the issue template

BUG: Unraid Ram Usage

Running this using unraid under a nginx docker container and memory usage shows 98.49%. I have a total of 128gb ram and I know for a fact that amount is not accurate.

FEAT: Move refresh times to config file

Issue: Users will want to config their own refresh times for assets (time, service, system info)

Suggestion: Move all refresh times for all assets to config.php

FEAT: Get Logo

"The monitor lizards are large lizards in the genus Varanus. They are native to Africa, Asia and Oceania, but are now found also in the Americas as an invasive species"

Thinking a lizard with big buggy eyes. You know, cuz he's watching your shit.

Kinda like this:
a651bd74667e110b98fa6c68bedc6441--monitor-lizard-lizards

Display System Info

Add system info to Monitorr UI.
Needs to represent:

  • CPU
  • RAM
  • Network
  • HDD
    Must be OS agnostic as well.

Update Readme

The README is a little confusing at the moment so might be good to reorganize it and make the instructions a little clearer for new users.

Tasks:

  • Editing Config file instructions
  • Adding custom images instructions
  • Display major known bugs
  • Add main features
  • Donation link

FEAT: PING Fallback

Feature: PING Fallback

STATUS: In-development

Current Branch: none

Progress:

  • (In-progress) Development
  • (Pending) Functionality
  • (Pending) Pushed to TEST
  • (Pending) Test: Windows
  • (Pending) Test: Linux
  • (Pending) UI Android: N/A
  • (Pending) UI iOS: N/A
  • (Pending) Merged to DEV
  • (Pending) Merged with master
  • (Pending) Release published

Functionality changes:
1: All services MUST have PORT identified.
2: Sub DIR work so localhost:80/applicaiton is good.

Issues:

  • Fallback Method:
    a. The alternate fallback method currently being tested is "file_get_contents" which supports HTTP/S, PORT, and PATH URLs. Does NOT support AUTH.
    b. need to further develop this to ultimately use fsockopen. However, will need to build a function to first strip away the protocol and any subpaths after :PORT. This can be done with parse_url() which can then pass a "sterile" URL to fsockopen for fallback "ping" check.
    c. Can fsockopen use identified PORT?

  • Using fallback method as primary method
    a. need a way to define "method" in config file to pass to assets/php/loop.php .

TO DO:

  • CURL: Ignore hostname mismatch -> Change check.php to
"curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, 0);
  • Add PING as fallback to CURL
  • Add authentication option
  • Add option to select PING as primary method (ISSUE!)
  • Add growler notifications on error?

Docker branch dont get updates

Docker braanch is stuck on the version it got forked from. When you use the inbuilt updater it works until you rebuild the docker. (think of it like a snapshot)

Proposed change: add the dockerfile to each branch. OR update docker branch whem master gets updates.

FEAT: Add Disable Auto-refresh

Feature addition: small toggle switch to disable auto-refresh.
Code Reference: https://codemyui.com/toggle-switch-collection-using-pure-css-custom-properties/
Status: TESTING

STATUS:

  • (OK) Functionality
  • (OK) UI Desktop browsers: Looks dope.
  • (OK) UI Android: Looks dope
  • (OK) UI iOS: looks dope. FIXED: Displays switch on top of TITLE. Need to figure out how to AUTO-adjust title to smaller font size on smaller screens so there is no overlap.
  • (Pending) Pushed to DEV
  • (Pending) Merged with master
  • (Pending) Wiki updated
  • (Pending) Release published

Wiki changes for Org plug in need to change to this:

    <div style="overflow:hidden; height:270px">    
        <embed style="height:100%" width='100%' src='https://yourdomain.com/monitorr/index.min.php' />
    </div>

image

Update Readme

Add:

  • Major Bugs

Add:

  • Features

Change config

  • adding custom images

Feedback:

I installed a turnkey-LAMP container on one of my Proxmox servers. What I was initally confused is follows:
Clone/download repository to your webserver (Suggested a Sub DIR), (So like any webserver)
Replace "YOUR SERVER NAME HERE" in assets/config.php, - (Replace with what? Just what I want to call it)
Replace "http://github.com/seanvree/monitorr" in assets/config.php, - (Replace with what?)
I also got it working once I manually installed php-curl. I know that was listed as the prereq. Just thought it could be a little clearer.

Docker Image

I created a Docker image for the project. It's a little tweaky because of needing to edit the config, but it works. It would be better if we could populate the config via environment variables or just use the UI to edit the settings, but again, it works.

It can be found here: https://github.com/binaryronin/monitorr-docker

FEAT: CSS Re-write (Bluma)

Feature suggestion: Convert from bootstrap to Bluma

Status: Early development

Current Branch: https://github.com/Monitorr/Monitorr/tree/bluma

Progress:

  • (in-dev) working branch published: https://github.com/Monitorr/Monitorr/tree/bluma
  • (pending) Functionality
  • (Pending) UI Desktop browsers: x
  • (Pending) UI Android: x
  • (Pending) UI iOS: x
  • (Pending) Pushed to DEV
  • (Pending) Merged with MASTER
  • (Pending) Release published

To Do:

  • Move clock to top left
  • Add overview to top right? ie: 0/4 services "offline" type of deal?
  • move refresh switch to bottom
  • Add manual curl/ping function feature to run a manual check of any service via simple input form with HOST: PORT which could be accessed by "drop down/radio button, etc (TBD)"

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.