Simple monitor to watch URLs (HTTP) or ports (TCP, UDP) and update Cachet status.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
Go to file
Samuel Philipp f94e1c9ca3
continuous-integration/drone/push Build is passing Details
Merge pull request 'Update node Docker tag to v16' (#26) from renovate/node-16.x into master
Reviewed-on: #26
2 years ago
.dockerignore added Dockerfile 3 years ago
.drone.yml fix pipeline 3 years ago
.gitignore added Dockerfile 3 years ago
Dockerfile Update node Docker tag to v16 2 years ago
LICENSE added LICENSE 3 years ago
README.md added -Pn flag to nmap (fixes error for hosts blocking nmap) 3 years ago
index.js added -Pn flag to nmap (fixes error for hosts blocking nmap) 3 years ago
package-lock.json initial commit 3 years ago
package.json Update dependency node-cron to v3 2 years ago
renovate.json added -Pn flag to nmap (fixes error for hosts blocking nmap) 3 years ago

README.md

cachet-monitor

Build Status License Docker Pulls

Simple monitor to watch URLs (HTTP) or ports (TCP, UDP) and update Cachet status.

Configuration

cachet-monitor can monitor a list of services. Therefore it requires to setup all services in ./data/config.json. The id of each service has to match the cachet component id you want to update! Each service needs the following attributes (additionally to id and type):

  • type HTTP
    • url
  • type TCP or UDP
    • host
    • port

Optionally you can add the following options to each service, or change the default values globally:

  • retry - number how often the check should be retried if the service is offline (default value 0)
  • waitUntilRetry - number of seconds the retry should be delayed (default value 5)
  • performanceTimeout - time in seconds in which the request has to be completed, otherwise the status will be SLOW (Cachet Performance Issues) (default value 1)
  • requestTimeout - time in seconds in which the request has to be completed, otherwise the status will be offline (default value 30)
  • offlineTimeUntilMajor - time in seconds a service has to be offline until it turns from partial to major outage (default value 300)

You can specify the interval (cron) your services should be checked. You can use the cron syntax from node-cron. Finally you need to provide the information to your cachet instance (api and token).

To change the default values globally you can set the in the defaults object.

Example:

{
	"cron": "0 * * * * *",
	"api": "https://<cachet-url>/api/v1",
	"token": "<user-token>",
	"services": [
		{
			"id": 1,
			"type": "HTTP",
			"url": "https://sp-codes.de",
			"performanceTimeout": 1
		},
		{
			"id": 2,
			"type": "TCP",
			"host": "sp-codes.de",
			"port": 443
		}
	],
	"defaults": {
		"retry": 1,
		"waitUntilRetry": 5,
		"performanceTimeout": 2,
		"requestTimeout": 10,
		"offlineTimeUntilMajor": 600
	}
}

Run with docker

You can use the docker image samuelph/cachet-monitor and mount a volume to /monitor/data to persist cache and config:

docker run -v /your/path/monitor/data:/monitor/data samuelph/cachet-monitor

You also can use it in docker-compose.yml:

services:
  monitor:
    image: samuelph/cachet-monitor
    restart: always
    volumes:
      - /your/path/monitor:/monitor/data

Run from source

  1. clone the repo

    git clone https://git.sp-codes.de/samuel-p/cachet-monitor.git
    
  2. install dependencies

    npm install
    
  3. run

    npm run start
    

    Important: If you want UDP checks, you need to run it as root, because nmap allows UDP scans only for root.

License

GNU GPLv3 Image

cachet-monitor is Free Software: It is licensed under GNU GPL v3 (See LICENSE for more information).