A simple synthetics monitor to monitor health of servers with prometheus. Argus goes through the list of endpoints for a configured time interval and checks if configured servers are reachable. It then sends a metric <<server_name>>_down per endpoint configured. This can later be used to configure an alert to indicate if the server is down.
The default exposed /metrics
endpoint is secured with bearer token, scraping config of your prometheus server
config prometheus.yaml
has to be configured like:
global:
scrape_interval: 15s
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: myapp
scrape_interval: 10s
bearer_token: 73a54630bd12a603ad277b2538fc25ee #<-- 🤓 This is where your token goes
static_configs:
- targets: ['localhost:2112']
> cd monitor
> go build -race -o bin/monitor
> ./monitor --help
Usage of ./monitor:
-f string
config file path (default "endpoints.txt")
-i duration
time interval to monitor endpoints (default 1m0s)
-token string
Bearer token value for metrics endpoint authentication
All the endpoints that needs to be monitored can be configured as a csv file containing name,url
github,http://localhost:8080
microsoft,http://localhost:8081
yahoo,http://localhost:8082
google,https://google.com
> ./monitor -token 7cbbe77c63834d6b52251d7dc9b7e7bc -f /home/users/name/endpoints.txt
SLI monitor: 2019/10/12 23:42:53.567567 /Users/shyamz-22/workspace/argus/monitor/main.go:85: yahoo server is down: Get http://localhost:8082: dial tcp [::1]:8082: connect: connection refused
SLI monitor: 2019/10/12 23:42:53.567651 /Users/shyamz-22/workspace/argus/monitor/main.go:85: github server is down: Get http://localhost:8080: dial tcp [::1]:8080: connect: connection refused
SLI monitor: 2019/10/12 23:42:53.567652 /Users/shyamz-22/workspace/argus/monitor/main.go:85: microsoft server is down: Get http://localhost:8081: dial tcp [::1]:8081: connect: connection refused
SLI monitor: 2019/10/12 23:42:54.089784 /Users/shyamz-22/workspace/argus/monitor/main.go:88: google server is up: 200