Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/perryflynn/minimon
ICMP, HTTP and TCP Monitoring in one Bash Script
https://github.com/perryflynn/minimon
bash icmp icmp-ping monitoring-application monitoring-scripts monitoring-tool ping
Last synced: about 1 month ago
JSON representation
ICMP, HTTP and TCP Monitoring in one Bash Script
- Host: GitHub
- URL: https://github.com/perryflynn/minimon
- Owner: perryflynn
- License: mit
- Created: 2020-11-04T22:51:09.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-07-12T16:23:01.000Z (6 months ago)
- Last Synced: 2024-07-12T18:38:37.657Z (6 months ago)
- Topics: bash, icmp, icmp-ping, monitoring-application, monitoring-scripts, monitoring-tool, ping
- Language: Shell
- Homepage: https://serverless.industries/2020/11/07/tcp-service-checks-curl.html
- Size: 85 KB
- Stars: 12
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# minimon
Bash script to monitor HTTP and generic TCP services.
- Only requires `curl` and `ping` (Linux and Windows is supported)
- Supports ICMP, HTTP(S) and generic TCP connections
- Enforce IPv4 or IPv6 for single checks
- Define a alias name behind the URL
- Send a [ASCII Bell](https://en.wikipedia.org/wiki/Bell_character) on state changes
- Works on Git Bash (MinGW) on Windows
- Limit the number of checks to use the script as healthcheck in CI pipelines
- Use simple shell scripts as check plugins
- Executes checks in parallel (controlled by `--parallel` option)
- Load settings from a json file (see `--config`, requires `jq`)## Download
```sh
curl -L https://github.com/perryflynn/minimon/raw/master/minimon.sh > minimon.sh && chmod a+x minimon.sh
```## Usage
```txt
minimon by Christian Blechert
https://github.com/perryflynn/minimonUsage: ./minimon.sh [--interval 30] [--tcp "example.com:4242[;aliasname]"]
--interval n Delay between two checks
--tcp host:port Check a generic TCP port
--tcp4 host:port Check a generic TCP port, force IPv4
--tcp6 host:port Check a generic TCP port, force IPv6
--http url Check a HTTP(S) URL
--http4 url Check a HTTP(S) URL, force IPv4
--http6 url Check a HTTP(S) URL, force IPv6
--icmp host Ping a Hostname/IP
--icmp4 host Ping a Hostname/IP, force IPv4
--icmp6 host Ping a Hostname/IP, force IPv6
--script script Path to a script to use as a checkAppend a alias name to a check separated by a semicolon:
--icmp "8.8.8.8;google"Load settings from json files:
--config some-config.jsonSchema for editors like VSCode:
https://files.serverless.industries/schemas/minimon.jsonA script must output one line of text
and must set a exit code like so:
0=OK; 1=WARN; 2=NOK; 3=UNKNOWN--max-checks n Only test n times
exit 0 = all ok; exit 1 = partially ok; exit 2 = all failed--no-redirect Do not follow HTTP redirects
--invalid-tls Ignore invalid TLS certificates
--timeout curl operation timeout
--connect-timeout curl connect timeout
--parallel 10 number of checks execute in parallel
--no-timestamps disable timestamps
--short-timestamps only show time, not the date
--time-spacer 30 add a spacer line if n seconds was no state change-v, --verbose Enable verbose mode
-w, --warnings Show warning output
-e, --errors Show error output
-h, --help Print this help
-V, --version Print the version
``````sh
./minimon.sh --interval 60 \
--tcp "localhost:22" \
--tcp "files:445;fileserver" \
--http "https://google.com;google" \
--http "https://example.com" \
--script "./myscript arg1;scriptname" \
--icmp "8.8.8.8;google"
```Output:
```txt
[2020-11-04T23:44:12+01:00] http_google - https://google.com - OK (0) - HTTP 200
[2020-11-04T23:44:13+01:00] http - https://example.com - OK (0) - HTTP 200
[2020-11-04T23:44:14+01:00] tcp - localhost:22 - NOK (2) - Connect failed
[2020-11-04T23:44:14+01:00] icmp_google - 8.8.8.8 - OK (0) - Ping succeeded (0% loss)
[2020-11-04T23:44:15+01:00] tcp_fileserver - files:445 - OK (0) - Connect successful
[2020-11-04T23:45:17+01:00] tcp - localhost:22 - OK (0) - Connect successful - changed after 63s
```Verbose output:
```txt
[DEBUG] check_http https://google.com
0,179706 200 2 0
[2020-11-07T12:13:06+01:00] http_google - https://google.com - OK (0) - HTTP 200
[DEBUG] check_http https://example.com
0,436060 200 1 0
[2020-11-07T12:13:07+01:00] http - https://example.com - OK (0) - HTTP 200
[DEBUG] check_tcp localhost:22
* Rebuilt URL to: telnet://localhost:22/
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 22 (#0)
[2020-11-07T12:13:08+01:00] tcp - localhost:22 - OK (0) - Connect successful
[DEBUG] check_tcp files:445
* Rebuilt URL to: telnet://files:445/
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 192.168.99.104...
* TCP_NODELAY set
* Connected to files (192.168.99.104) port 445 (#0)
[2020-11-07T12:13:09+01:00] tcp_fileserver - files:445 - OK (0) - Connect successful
[DEBUG] check_icmp 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=11.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=11.7 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=12.9 ms--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 11.585/12.084/12.968/0.633 ms
```