Monitoror is an unified monitoring wallboard with support for basic HTTP requests, ICMP ping, port scanning, Azure DevOps Github, Gitlab, Jenkins and Pingdom support. With these features you could create a dashboard for monitoring everything in your development pipeline. My usecase is a bit simpler: monitoring my VPN & internet connection and some development services.
My current setup is similar to this:
- Internet: ping public DNS servers (CloudFlare, Google, OpenDNS etc.), HTTP GET request for Google.
- LAN: Ping router, Raspberry Pi & homeserver
- Work: private & public internal services
- Other: current IP via AWS check IP, ping CF DNS server and check if port 8080 is open on local machine.
With this setup I can quickly see what would be causing issues and get answers for the following troubleshooting questions:
- Does my router respond to ping?
- Does the Raspberry Pi respond to ping & HTTP GET?
- Does Google respond to HTTP GET?
- Is the recursive public DNS server up?
- Do services behind the VPN respond?
In case of issues, I can directly see the possible source for issues. For example I was looking after a friend’s puppy and the dog managed to nudge the ethernet cable coming from the wall and the connection stopped working. All the non-local sources in Monitoror errored out and the culprit was instantly narrowed down to ISP issues or the cable coming to my router’s WAN port.
Example .env:
MO_PORT=8889
MO_ADDRESS=127.0.0.1
MO_CONFIG=./config.json
Example config.json:
{
"version": "2.0",
"columns": 2,
"tiles": [
{
"type": "GROUP",
"label": "Internet",
"tiles": [
{ "type": "PING", "label": "Google DNS 1", "params": { "hostname": "8.8.8.8" } },
{ "type": "PING", "label": "Google DNS 2", "params": { "hostname": "8.8.4.4" } },
{ "type": "PING", "label": "Cloudflare DNS 1", "params": { "hostname": "1.1.1.1" } },
{ "type": "PING", "label": "Cloudflare DNS 2", "params": { "hostname": "1.0.0.1" } },
{ "type": "PING", "label": "OpenDNS 1", "params": { "hostname": "208.67.222.222" } },
{ "type": "PING", "label": "OpenDNS 2", "params": { "hostname": "208.67.220.220" } },
{ "type": "PING", "label": "Quad9 DNS", "params": { "hostname": "9.9.9.9" } },
{ "type": "HTTP-STATUS", "params": { "url": "http://google.com/", "statusCodeMax": 299 } }
]
},
{
"type": "GROUP",
"label": "LAN",
"tiles": [
{ "type": "PING", "label": "Ping Router 192.168.2.1", "params": { "hostname": "192.168.2.1" } },
{ "type": "PING", "label": "Ping Pi 192.168.2.2", "params": { "hostname": "192.168.2.2" } },
{ "type": "PORT", "label": "Port 53 Pi DNS server", "params": { "hostname": "192.168.2.2", "port": 53 } }
]
},
{ "type": "PING", "label": "Cloudflare DNS 1", "params": { "hostname": "1.1.1.1" } },
{ "type": "HTTP-RAW", "label": "IP", "params": { "url": "https://checkip.amazonaws.com/" } },
{ "type": "PORT", "label": "localhost:8080", "params": { "hostname": "127.0.0.1", "port": 8080 } }
]
}