Giter Site home page Giter Site logo

statping-ng / statping-ng Goto Github PK

View Code? Open in Web Editor NEW

This project forked from statping/statping

1.4K 12.0 140.0 28.92 MB

An updated drop-in for statping. A Status Page for monitoring your websites and applications with beautiful graphs, analytics, and plugins. Run on any type of environment.

Home Page: https://statping-ng.github.io

License: GNU General Public License v3.0

Shell 0.30% Go 46.49% CSS 2.86% Dockerfile 0.20% Makefile 1.66% HTML 0.05% Vue 46.51% SCSS 1.93%
status-page status go vuejs ping website-monitoring monitoring monitoring-server uptime-monitor uptime

statping-ng's Introduction

Statping-ng

Statping-ng - Web and App Status Monitoring for Any Type of Project

Website | Wiki
Linux | Windows | Mac | Containers

Statping-ng - Status Page & Monitoring Server

An easy to use Status Page for your websites and applications. Statping will automatically fetch the application and render a beautiful status page with tons of features for you to build an even better status page. This Status Page generator allows you to use MySQL, Postgres, or SQLite on multiple operating systems.

Statping-ng aims to be an updated drop-in replacement of statping after development stopped on the original fork.

License

Last Commit Dev Build Status Unstable Build Status Stable Build Status

Docker Pulls Docker Image Size

Go Version Go Report


About Statping-ng

A Future-Proof Status Page

Statping-ng strives to remain future-proof and remain intact if a failure is created. Your Statping-ng service should not be running on the same instance you're trying to monitor. If your server crashes your Status Page should still remaining online to notify your users of downtime.

Try Statping-ng via Play with Docker - Login is admin, password admin.



No Requirements - Run on Any Server

Statping-ng is built in Go Language so all you need is the pre-compiled binary based on your operating system. You won't need to install anything extra once you have the Statping binary installed. Windows, Linux or Mac, We compile to all the popular systems, including Raspberry Pi!

Linux Windows Apple Mac Containers Android Play Store Apple Apps Store




Lightweight and Fast

Statping-ng is a very lightweight application and is available for Linux, Mac, and Windows. The Docker image is only ~20Mb so you know that this application won't be filling up your hard drive space. The Status binary for all other OS's is ~17Mb at most.




Want easy containers?

No Worries, we provide docker containers for many different system architectures, with multiple docker-compose files to suit your needs, you can even bring your own SSL Certificate or automatically leverage Lets Encrypt to keep things secure. But it's can be as simple as a docker run!



Custom SASS Styling

Statping-ng will allow you to completely customize your Status Page using SASS styling with easy to use variables. The container image actually contains a pre-built SASS binary so you won't even need to setup anything!



Compatible with the Statping App

Statping-ng is 100% compatible with the statping app which is available on the Apple App Store and Google Play for free. The app will allow you to view services, receive notifications when a service is offline, update groups, users, services, messages, and more! Start your own Statping-ng server and then connect it to the app by scanning the QR code in settings.

The mobile app is not maintained by statping-ng and includes in-app purchases to the developer of statping.



Notifications - Slack, Email, Twilio and more

Statping-ng includes email notification via SMTP and Slack integration using Incoming Webhook. Insert the webhook URL into the Settings page in Statping-ng and enable the Slack integration. Anytime a service fails, the channel that you specified on Slack will receive a message.

View the Plugin Wiki to see detailed information about Golang Plugins. Statping-ng isn't just another Status Page for your applications, it's a framework that allows you to create your own plugins to interact with every element of your status page. Notifier's can also be create with only 1 golang file.




Easy to use Dashboard

Having a straight forward dashboard makes Statping-ng that much better. Quickly and Easy view statuses. Monitor your websites and applications with a basic HTTP GET request, or add a POST request with your own JSON to post to the endpoint.





Quick Start

Here's a few quick start guides to get you going, fast.

Docker

Use the Statping Docker Image to create a status page in seconds. Checkout the Docker Wiki to view more details on how to get started using Docker.

docker run -it -p 8080:8080 adamboutcher/statping-ng

Docker Compose

In the root (base) folder there is a standard docker-compose file that includes nginx, postgres, and Statping-ng.

docker-compose up -d

Docker Compose with Automatic SSL

You can automatically start a Statping-ng server with automatic SSL encryption using this docker-compose file. First point your domain's DNS to the Statping-ng server, and then run this docker-compose command with DOMAIN and EMAIL. Email is for letsencrypt services.

LETSENCRYPT_HOST=mydomain.com \
    [email protected] \
    docker-compose -f docker-compose-ssl.yml up -d

Once your instance has started, it will take a moment to get your SSL certificate. Make sure you have a A or CNAME record on your domain that points to the IP/DNS of your server running Statping-ng.

Prometheus Exporter

Statping-ng includes a Prometheus Exporter so you can have even more monitoring power with your services. The Prometheus exporter can be seen on /metrics, simply create another exporter in your prometheus config. Use your Statping-ng API Secret for the Authorization Bearer header, the /metrics URL is dedicated for Prometheus and requires the correct API Secret has Authorization header.

scrape_configs:
  - job_name: 'statping'
    bearer_token: 'MY API SECRET HERE'
    static_configs:
      - targets: ['statping:8080']

Contributing

Statping-ng accepts Push Requests to the dev branch!

Feel free to add your own features and notifiers.You probably want to checkout the Notifier Wiki to get a better understanding on how to create your own notification methods for failing/successful services.

Testing on Statping-ng will test each function on MySQL, Postgres, and SQLite. I recommend running MySQL and Postgres Docker containers for testing.

You can find multiple docker-compose files in the dev directory.

statping-ng's People

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

statping-ng's Issues

Scheduled downtime

First off, very excited to see this be taken over and actively developed again. So god speed to that.

To the topic at hand, simply put would be nice to be able to schedule either for a group or an individual monitor a specific downtime window where the testing gets paused and the status gets updated to say "Under Maintenance" (or similar, hell just make it a customizable string). Don't imagine this is a major task but surprisingly I still can't find a system that has this feature.

Cheers!

Feature Request: Better looking Discord notifications by default

With the default Discord message template, the messages on Discord can be difficult to understand at a glance. Some users may know how Discord webhooks work and can change it for themselves, but it would be better to have it easier to read by default.

This is the Success template I created (The icon URL will need to be changed, I just used the GitHub profile icon for statping-ng):

{
  "username": "{{.Core.Name}}",
  "avatar_url": "https://avatars.githubusercontent.com/u/88886654?s=200&v=4",
  "embeds": [
    {
      "author": {
        "name": "{{.Service.Name}}",
        "url": "{{.Core.Domain}}/service/{{.Service.Id}}"
      },
      "description": "**{{.Service.Name}}** is back **online**.",
      "color": 65280,
      "fields": [
        {
          "name": "Offline Duration",
          "value": "**`{{.Service.Downtime.Human}}`**",
          "inline": true
        }
      ]
    }
  ]
}

The resulting message looks like this on Discord. The name of the bot is set to the Status Page Name, in my case, it's Home Servers. Additionally, I included a link to the status page (in the "author" portion) making it easier to go to the service that sent a notification (Similar to the email notification). The offline duration is separated into what Discord calls fields. A full example of Discord webhooks can be found Here.
Success

The Failure template I created:

{
  "username": "{{.Core.Name}}",
  "avatar_url": "https://avatars.githubusercontent.com/u/88886654?s=200&v=4",
  "embeds": [
    {
      "author": {
        "name": "{{.Service.Name}}",
        "url": "{{.Core.Domain}}/service/{{.Service.Id}}"
      },
      "description": "**{{.Service.Name}}** is **offline**.",
      "color": 16711680,
      "fields": [
        {
          "name": "Offline Duration",
          "value": "**`{{.Service.Downtime.Human}}`**",
          "inline": true
        },
       {
          "name": "Reason:",
          "value": "`{{.Failure.Issue}}`",
          "inline": false
        }
      ]
    }
  ]
}

Failure

With the two types of messages color-coded and a more organized offline duration and reason sections, it is easier to tell what is going on at a glance compared to what the default sends:
Old Style
New Style

Tag new statping-ng/emails version as v1.0.2

Golang still thinks the ng version of this depends on old version because it imports the old version of statping-emails.

I'll attach a pull request with changes to import the new version of the emails package, but importing that package still wont work as you will get a:

go: github.com/statping-ng/statping-ng/notifiers imports
        github.com/statping-ng/emails: github.com/statping-ng/[email protected]: parsing go.mod:
        module declares its path as: github.com/statping/emails
                but was required as: github.com/statping-ng/emails

The code itself has been updated but golang dep management doesn't know to grab the new version since it fetches based off of version tags. Once you tag the repo with the new version it should be possible to add new version to the go.mod and go.sum

database is locked

Hi all, thanks for your work to keep this project going, much appreciated.

Recently I'm having an issue whereby, whilst the app still carries out checks and alerts when services are down, the frontend does not load nor the dashboard portion either.

Following the docker-compose logs I see this:
statping | (/go/src/github.com/statping-ng/statping-ng/database/database.go:375) statping | [2021-12-03 16:49:26] database is locked statping | statping | (/go/src/github.com/statping-ng/statping-ng/database/database.go:351) statping | [2021-12-03 16:49:26] database is locked statping | ERRO[0517] database is locked device="map[arch:amd64 num_cpu:1]" os="map[name:linux]" runtime="map[go_maxprocs:1 go_numcgocalls:48356 go_numroutines:52 name:go version:go1.14.15]" type=service statping | INFO[0517] Service #13 'videoscape-europe.com' Successful Response: 11089 ms | Lookup in: 4580 ms | Online: true | Interval: 60 seconds device="map[arch:amd64 num_cpu:1]" os="map[name:linux]" runtime="map[go_maxprocs:1 go_numcgocalls:48356 go_numroutines:52 name:go version:go1.14.15]" type=service statping | statping | (/go/src/github.com/statping-ng/statping-ng/database/database.go:439) statping | [2021-12-03 16:49:26] database is locked statping | statping | (/go/src/github.com/statping-ng/statping-ng/database/database.go:439) statping | [2021-12-03 16:49:26] database is locked statping | ERRO[0528] database is locked device="map[arch:amd64 num_cpu:1]" os="map[name:linux]" runtime="map[go_maxprocs:1 go_numcgocalls:48891 go_numroutines:46 name:go version:go1.14.15]" type=service statping | INFO[0529] Service #37 'mediatel.co.uk' Successful Response: 6671 ms | Lookup in: 2165 ms | Online: true | Interval: 60 seconds device="map[arch:amd64 num_cpu:1]" os="map[name:linux]" runtime="map[go_maxprocs:1 go_numcgocalls:48891 go_numroutines:46 name:go version:go1.14.15]" type=service statping | statping | (/go/src/github.com/statping-ng/statping-ng/database/database.go:375) statping | [2021-12-03 16:49:37] database is locked statping | statping | (/go/src/github.com/statping-ng/statping-ng/database/database.go:375) statping | [2021-12-03 16:49:37] database is locked statping | statping | (/go/src/github.com/statping-ng/statping-ng/database/database.go:439) statping | [2021-12-03 16:49:38] database is locked statping | statping | (/go/src/github.com/statping-ng/statping-ng/database/database.go:351) statping | [2021-12-03 16:49:38] database is locked fstatping | ERRO[0536] database is locked device="map[arch:amd64 num_cpu:1]" os="map[name:linux]" runtime="map[go_maxprocs:1 go_numcgocalls:49138 go_numroutines:56 name:go version:go1.14.15]" statping | ERRO[0537] database is locked device="map[arch:amd64 num_cpu:1]" os="map[name:linux]" runtime="map[go_maxprocs:1 go_numcgocalls:49143 go_numroutines:60 name:go version:go1.14.15]" statping | statping | (/go/src/github.com/statping-ng/statping-ng/database/database.go:355) statping | [2021-12-03 16:49:47] database is locked

I took a copy of the sqlite db offline and opened it using DBeaver, opens no problem. I ran the sqlite pragma test again it and all ok.
But still this issue persists.

Any ideas?

docker-compose.yml
`version: '2.3'

services:
statping:
container_name: statping
image: adamboutcher/statping-ng:v0.90.78
restart: always
volumes:
- statping_data:/app
environment:
DB_CONN: sqlite
ports:
- 8080:8080

volumes:
statping_data:`

Support Docker secrets

I couldn't find any documentation on using docker secrets instead of regular environment variables for all the sensitive data. I found some discussion on secrets but concerning GH workflows: #2 (comment)

##What would you like on Statping-ng?

Docker secrets are supported in regular docker compose files, which work perfectly to set up e.g. statping-ng and no swarm is needed to make use of secrets. Docker secrets are awesome since I don't wantto have secret stuff (such as the DB password) in my regular .env file.

Documentation: https://docs.docker.com/compose/compose-file/compose-file-v3/#secrets

##Describe the solution you'd like

Either by adding new environment variables such as DB_PASS_FILE which actually does a cat /run/secrets/DB_PASS_FILE inside the container - or we could have some logic that checks whether /run/secrets/DB_PASS exists and overwrites whatever is in environment variable DB_PASS.

##Describe alternatives you've considered

Have secrets in my .env file

I raised the same issue on the original statping repo, but suppose that nothing will happen there as it seems pretty stale: statping#1070

Private groups/services are not listed via API

Just switched from statping to statping-ng since development seems to be stalled in the original repository.
Copy/Pasting the issue of @thatInfrastructureGuy from statping#892 since the behavior hasn't changed in statping-ng.


Describe the bug

When retrieving list of groups/services via authenticated API endpoint, I can only see public groups/services. Private groups/services don't show up.

curl --location --request GET '{{endpoint}}/api/groups'

Use bearer token: {{api_key}}

However, I can view the private service/group, if I know the id:

curl --location --request GET '{{endpoint}}/api/groups/1' \
--header 'Content-Type: application/json'

Use bearer token: {{api_key}}

Probably Related: statping#836

To Reproduce

Steps to reproduce the behavior:

  1. Create a private and public group. Set up a API Key.
  2. Hit list groups endpoint with correct API Key. You should see only public group.
  3. Get the private group id from database or UI. Hit view group endpoint with correct API Key. You should see private group details.

Expected behavior

If I am authenticated via API Key, I expect to see all services and groups (public and private) when I LIST them.

UTC Time in notifiers

Describe the bug

Every notifiers seem to report failure/success time in UTC and there are no possibility to change to other timezone.

To reproduce

Steps to reproduce the behavior:

  1. I'm using version: 0.90.78 (90b5233)
  2. Tested using Webhook and Slack
  3. Tested with {{.Service.LastOnline}} and {{.Service.LastOffline}}

There may be an option to choose the timezone for to report inside notifiers settings, or in the general settings?

That's can be so useful.

Thanks

statping-utc-2
statping-utc-1

Suggestion: make the main page static.

I moved away from Statping due the awful response times to render the main page:

image

30 seconds or more to render this page it's not unheard of.

If you are willing to go on with this project, please take this in consideration: There are exactly ZERO reasons to make the main page:

  • dynamic;
  • database-backed; or
  • run any goddamn JavaScript

Any status page project doing any of above things are in a state of sin.

Of course I'm not talking here about the dashboard/administrative area of the app. Just the main (status) page.

The main page must load instantly. Probably, pre-rendered by a background service.

Anyone going to that page is probably already worried with something not working. Seeing the VERY STATUS PAGE taking forever to load only aggravates the entire situation.

Use CDN Broken

Version 0.90.78 if you enable the "Use CDN" option breaks the webui with a java script error.

"View Service" API Request don't return service "type"

As in object, the api request called with "{{endpoint}}/api/services/SERVICEID" don't return the "type" of the service (http, icmp, tcp, ecc)

Can be useful to add this, for example for perform mass updating, by api, of just some kind of service.

Restarted Statping docker container always invokes setup page

Hi.

I run Statping-ng in docker with a persisted volume:

docker run -d \
  -v statping_data:/app \
  adamboutcher/statping-ng

However, if I restart the container (or create a new one with the same volume attached), Statping always lands on the /setup page asking for basic info. It doesn't "remember" info on the setup page, I have to reenter it every time.
Can we persist data in the /setup page too?

FYI, this problem existed in the original statping/statping repo too.
I hope it can be fixed here.

Thanks!

How to check uptime of HTTP URL returning application/octet-stream

Hi guys,

I'm using your software, instead of the original one, but had a question I am not being able to resolve on either.
I would like to monitor an HTTP URL that gives me Content-Type=application/octet-stream.

If I do a curl on bash, I get a 200 response code.

curl -i https://domain.ext/mypath
HTTP/2 200 
content-type: application/octet-stream
date: Fri, 27 Aug 2021 06:51:55 GMT

But if I add service to statping it always tells me that it is down.

image

What options, headers and body regex should I be using to be able to monitor this flux ?
I would like to be sure that status_code = 200 and content_type = application/octet-stream, to set the service as "online".

Anyone has any clue ?
Thank you very much.

snap on armhf platform seems to be using wrong binary?

Hello, I tried to use the snap of Statping-ng on the armhf platform (Raspberry Pi 2 - Raspberry Pi OS), but it looks to actually be installing the Intel 386 compiled version.

Here is the command I used to install it.
UBUNTU_STORE_ARCH=armhf snap install statping-ng

However there is this error in /var/log/daemon.log when I try to start it.

Nov 27 12:53:40 raspberrypi statping-ng.statping[22894]: /snap/statping-ng/66/snap/command-chain/snapcraft-runner: 4: exec: /snap/statping-ng/66/bin/statping: Exec format error
Nov 27 12:53:40 raspberrypi systemd[1]: snap.statping-ng.statping.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Nov 27 12:53:40 raspberrypi systemd[1]: snap.statping-ng.statping.service: Failed with result 'exit-code'.
Nov 27 12:53:40 raspberrypi systemd[1]: snap.statping-ng.statping.service: Scheduled restart job, restart counter is at 5.
Nov 27 12:53:40 raspberrypi systemd[1]: Stopped Service for snap application statping-ng.statping.

running file seems to indicate it's an Intel 80386 version, shouldn't that indicate armhf? (or at least some flavor of arm)

root@raspberrypi:/home/pi# file /snap/statping-ng/58/bin/statping
/snap/statping-ng/58/bin/statping: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, Go BuildID=HgEpfJOsuXsIOyJAmixb/3oznP0_K17oABk9R7WVJ/vYvM1rOAOhtuBji_o1n9/oa3S_iWc1iRu8_K993wC, BuildID[sha1]=b702227a35c7ef34d3d5e2d715a33eb930e7ba54, stripped

Thanks.

In the meantime I'll try to use the tarball linked to on the Wiki for Raspberry Pi OS, it was just nice not to have to manually create the systemd service :)

statping help section

The help section in the main application needs some updates to it; although some of it is probably useless if you're already running the application.

Amazon AWS Image

Hi,
I am currently trying to install StatPing-NG on Amazon AWS following your documentation. The instance seems to start but never finishes installation. I cannot reach a web server using the instances public URL. Before I investigate further: is this currently functional?

Thanks!

Wrong average response in dashboard

Hello,

I have a bug with the average response time show in the dashboard

To Reproduce

Steps to reproduce the behaviour:

  1. I'm using the latest version:

Expected Behavior

The average response is wrong in all service
You can see the screenshot.

The value in log is ok : Response: 22 ms | Lookup in: 1097 μs | Online: true |

Screenshots

image

Snap is an app and not a service.

The statping-ng snap is setup as an app and not a service. This is obviously isn't the best deployment for it via Snaps, however it works for now but needs further work.

See #31 and #30

When I tried with a service is complained it started too fast 😆 so it probably needs some tweaking.

Never stops sending "online" notifications

I installed last statping-ng release (from docker) and all works quite fine except by the notification system.

I configured as service as "Only notify one time when service hits an error" but application ignores this flag and never stop sending notifications (both... offline and online).

And this is not a problem when a service is down (you like to be warned) but not when the service is recovered.

As an example, I made a test on Friday and I recover the service... So the service is up, but I'm getting "your service is online" mails every hour since then and the only solution I see is stop the container and rise it again.

Thanks for your time,
m.

Alpine binary

The original statping docs refer to a statping binary for alpine,we're currently not providing one, however I thought it would be the same as the ones we already build, am I wrong? Do we need to provide one if they're different?

Check-in bugs

Hi, I found this project from the original statping.
Is it the correct place for bug fixing requests?

(1)
This bug was open since last year:
statping#824
In short, currently, check-in does not affect the parent service (whether to go online or offline after X successes\fails)

(2)
Deleting (and also sometimes creating) Check-in, will not be updated until next restart.
(using docker+sqlite)

Thank in advance.

Invalid notification

My service config:

mysql> select id, expected_status, check_interval, check_type, method, timeout, notify_after from services where id = "113";
+-----+-----------------+----------------+------------+--------+---------+--------------+
| id  | expected_status | check_interval | check_type | method | timeout | notify_after |
+-----+-----------------+----------------+------------+--------+---------+--------------+
| 113 |             200 |             60 | http       | GET    |      30 |            5 |
+-----+-----------------+----------------+------------+--------+---------+--------------+

Failures:

mysql> select service, error_code, reason, created_at from failures where service = "113";
+---------+------------+-------------+---------------------+
| service | error_code | reason      | created_at          |
+---------+------------+-------------+---------------------+
|     113 |        504 | status_code | 2021-12-13 20:54:39 |
|     113 |        504 | status_code | 2021-12-14 19:34:39 |
|     113 |        504 | status_code | 2021-12-14 19:49:39 |
|     113 |        504 | status_code | 2021-12-14 20:14:39 |
|     113 |        504 | status_code | 2021-12-14 20:23:39 |
|     113 |        504 | status_code | 2021-12-14 20:27:39 |
|     113 |        504 | status_code | 2021-12-14 20:32:39 |
|     113 |        504 | status_code | 2021-12-14 20:35:39 |
|     113 |        504 | status_code | 2021-12-14 21:30:39 |
|     113 |        504 | status_code | 2021-12-14 22:12:39 |
|     113 |        504 | status_code | 2021-12-14 22:15:39 |
|     113 |        504 | status_code | 2021-12-14 22:57:39 |
|     113 |        504 | status_code | 2021-12-14 23:02:39 |
|     113 |        504 | status_code | 2021-12-14 23:04:39 |
|     113 |        504 | status_code | 2021-12-14 23:15:39 |
|     113 |        504 | status_code | 2021-12-14 23:27:39 |
|     113 |        504 | status_code | 2021-12-14 23:42:39 |
|     113 |        504 | status_code | 2021-12-14 23:44:39 |
|     113 |        504 | status_code | 2021-12-14 23:50:39 |
|     113 |        504 | status_code | 2021-12-15 00:20:39 |
|     113 |        504 | status_code | 2021-12-15 01:16:39 |
|     113 |        504 | status_code | 2021-12-15 01:21:39 |
|     113 |        504 | status_code | 2021-12-15 02:06:39 |
|     113 |        504 | status_code | 2021-12-15 02:29:39 |
|     113 |        504 | status_code | 2021-12-15 02:34:39 |
|     113 |        504 | status_code | 2021-12-15 03:34:39 |
|     113 |        504 | status_code | 2021-12-15 03:36:39 |
+---------+------------+-------------+---------------------+

As can be seen, there aren't any 5 consecutive failures, however my team was notified as if this server was off.

Is 504 a special case that instantly triggers notification? Or am I missing something?

I'm currently using v0.90.74.

I can confirm that we were notified at the following times:

  • 2021-12-14 20:27:39
  • 2021-12-14 23:27:39
  • 2021-12-15 03:36:39

Statping app iOS not available

I'm trying to install the iOS app for my iPhone but fail to do so because it's not available in my country.
Is there any way around this or can I find the IPA somewhere?

Disabling TLS/SSL for the SMTP Mail Notifier does not work

I have deployed a container using the latest statping-ng image available.

Disabling the TLS/SSL for the SMTP notifier just hang loading.

In the browser console I get the following error message:

Failed to load resource: the server responded with a status of 422 (Unprocessable Entity)

Error: Request failed with status code 422
    at t.exports (vendor.chunk.js:23)
    at t.exports (vendor.chunk.js:48)
    at XMLHttpRequest.d.onreadystatechange (vendor.chunk.js:23)
$t @ vendor.chunk.js:7

The server outputs the following error message:
ERRO[0114] sending error response for /api/notifier/email: could not decode incoming JSON code=422 device="map[arch:amd64 num_cpu:8]" method=POST os="map[name:linux]" runtime="map[go_maxprocs:8 go_numcgocalls:1 go_numroutines:15 name:go version:go1.14.15]" type=handlers url=/api/notifier/email

The bug can also be reproduced locally. Just starting the container and trying to disable the TLS for the notifier doesn't work.

docker

WARN[0619] Service Private Service Failing: HTTP Status Code 526 did not match 200 | Lookup in: 603 μs type=service
PING 192.168.80.91 (192.168.80.91): 56 data bytes
ping: permission denied (are you root?)
WARN[0624] Service BP Failing: Could not send ICMP to service 192.168.80.91, exit status 1 | Lookup in: 0 μs type=service

[Question][Feature] Change the default time ranges

Hi,
Great product and thanks for making it. I was wondering if it is possible to change the ranges on the reports.

Right now it is 90 days, and as far as I can tell, no way of changing it.
Also the plots are always 3 days.

Any option to change this somewhere?

Thasnks

iOS App UK

Any plans for the iOS app to be available in the UK store.

It wont let me download it and says its not available in my region!

Graphs colors ara not clear

Probably it's me, but I don't understand what the orange/green colors means in the latency graphic of the services:
image

Is it possible to add a legend to make it clear? Or explain it somewhere in the documentation?

Thanks in advance,
m.

Unable to login as admin - stuck loading

We notice that after some week from a fresh installation, both sqlite and mysql, we are unable to login as admin, this remain in loading state forever.

We notice that also the home page of statping, the one showing all service status, remain in loading state forever.

Checking logs, stateping is working normally, it's checking service and so on, but we still face this problem.

We have many services, a mysqldump it's around 70mb, machine load and resources are good.

docker port change value broken atleast on unraid

At least when using this docker image in Unraid, web port value does not change the webserver port

There is the command it is executing:

root@localhost:# /usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker run -d --name='Statping-ng' --net='br0' --ip='10.0.0.5' -e TZ="Europe/Kiev" -e HOST_OS="Unraid" -e HOST_HOSTNAME="R320" -e HOST_CONTAINERNAME="Statping-ng" -e 'TCP_PORT_8080'='80' -l net.unraid.docker.managed=dockerman -l net.unraid.docker.webui='http://[IP]:[PORT:8080]/' -l net.unraid.docker.icon='https://raw.githubusercontent.com/CorneliousJD/Docker-Templates/master/icons/statping.png' -v '/mnt/user/appdata/statping-ng':'/app':'rw' --user 99:100 'adamboutcher/statping-ng'
1188e35da2e293de6bc02ef488b149a488a720d45d55cb2ca5c60ec359f21910

The command finished successfully!

However, the port does not change. The webserver does not start on port 80, it starts on default 8080.

No visible page content. Website blank

Hey,
Just switched from statping/statping docker container. But now there is no visible content anymore. Website is just white.

Log of first start with statping-ng

INFO[0000] Starting Statping v0.90.78                    type=cmd
INFO[0000] Attempting to read config file at: /app/config.yml  type=configs
INFO[0000] Database mysql connection was successful.     type=configs
INFO[0000] Migrating Database Tables...                  type=configs
INFO[0000] Migrating App to version: 0.90.78 (90b5233c6768045afebbab0971563928eb03bfcb)  type=configs
INFO[0000] Statping Database Tables Migrated             type=configs
INFO[0000] Database Indexes Created                      type=configs
INFO[0000] Error Reporting initiated, thank you!        
INFO[0000] Notifier 'mattermost' was not found, adding into database...  type=notifier
INFO[0000] Starting monitoring process for 6 Services    type=service
INFO[0001] Database Cleanup runs every 1h0m0s and will remove records older than 2160h0m0s  type=database
INFO[0001] Statping HTTP Server running on http://0.0.0.0:8080/  type=handlers

Log for request: GET /dashboard

web_1  | INFO[0287] /js/dashboard~service.chunk.js (GET) | IP: foo.bar  load_micro_seconds=135 method=GET type=handlers url="/js/dashboard~service.chunk.js"
web_1  | INFO[0287] /js/dashboard.chunk.js (GET) | IP: foo.bar load_micro_seconds=680 method=GET type=handlers url=/js/dashboard.chunk.js

Errors in web-browser

TypeError: e[t] is undefined
    u https://statping-ng.github.io/assets/hosted/bundle.js:1
    yt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:6
    o https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    f https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    h https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    mt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43

TypeError: e[t] is undefined
    u https://statping-ng.github.io/assets/hosted/bundle.js:1
    promise callback*component https://statping-ng.github.io/assets/hosted/main.chunk.js:1
    dt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    pt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    pt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    pt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    dt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    f https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    i https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    i https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    i https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    f https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    Vtdi https://statping-ng.github.io/assets/hosted/main.chunk.js:1
    f https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    i https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    ft https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    confirmTransition https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    transitionTo https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    init https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    beforeCreate https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    Rt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:31
    Qe https://statping-ng.github.io/assets/hosted/vendor.chunk.js:31
    _init https://statping-ng.github.io/assets/hosted/vendor.chunk.js:31
    _n https://statping-ng.github.io/assets/hosted/vendor.chunk.js:31
    Vtdi https://statping-ng.github.io/assets/hosted/main.chunk.js:1
    u https://statping-ng.github.io/assets/hosted/bundle.js:1
    r https://statping-ng.github.io/assets/hosted/bundle.js:1
    t https://statping-ng.github.io/assets/hosted/bundle.js:1
    <anonymous> https://statping-ng.github.io/assets/hosted/main.chunk.js:1
    yt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:6
    o https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    f https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    h https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    mt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    (Async: promise callback)
    dt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    pt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    pt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    pt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    dt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    f https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    i https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    i https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    i https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    f https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    Vtdi https://statping-ng.github.io/assets/hosted/main.chunk.js:1
    f https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    i https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    ft https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    confirmTransition https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    transitionTo https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    init https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    beforeCreate https://statping-ng.github.io/assets/hosted/vendor.chunk.js:43
    Rt https://statping-ng.github.io/assets/hosted/vendor.chunk.js:31
    Qe https://statping-ng.github.io/assets/hosted/vendor.chunk.js:31
    _init https://statping-ng.github.io/assets/hosted/vendor.chunk.js:31
    _n https://statping-ng.github.io/assets/hosted/vendor.chunk.js:31
    Vtdi https://statping-ng.github.io/assets/hosted/main.chunk.js:1
    u https://statping-ng.github.io/assets/hosted/bundle.js:1
    r https://statping-ng.github.io/assets/hosted/bundle.js:1
    t https://statping-ng.github.io/assets/hosted/bundle.js:1
    <anonym> https://statping-ng.github.io/assets/hosted/main.chunk.js:1

OAuth callbacks are incorrect

I am standing up a Statping instance behind a reverse proxy (https://my-domain/status -> my-statping-container:8080), so I need to set the BASE_PATH variable to make URLs work in Statping. I also use an OAuth provider that requires the scheme (http or https) at the start of the callback URL. Statping's OAuth options don't allow for either of these.

Expected Behavior

  1. I click Login with (my OAuth provider)
  2. Statping redirects to my OAuth provider with the callback URL https://my-domain/status/oauth/custom
  3. The OAuth provider recognizes the callback URL and continues to authenticate the user.

Actual Behavior

  1. I click Login with (my OAuth provider)
  2. Statping instead sends the callback URL my-domain/oauth/custom (not the correct path, and no scheme)
  3. The OAuth provider rejects the URL and I can't log in.

Steps to Reproduce the Problem

  1. Stand up a Statping instance with the BASE_PATH set
  2. Log in and set up the Custom OAuth option with an OAuth provider.
  3. Log out and try to log in with the external provider.

Specifications

Version: Statping v0.90.77
Platform: like RHEL 7
Subsystem: Podman (like Docker)

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.