Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thiagobarradas/http-alert
A simple service to do alerts in slack or pushover based on Json response
https://github.com/thiagobarradas/http-alert
alert alerting api docker http http-alert monitoring notification pushover rest slack
Last synced: 14 days ago
JSON representation
A simple service to do alerts in slack or pushover based on Json response
- Host: GitHub
- URL: https://github.com/thiagobarradas/http-alert
- Owner: ThiagoBarradas
- License: mit
- Created: 2019-07-26T20:05:40.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-07-22T11:56:55.000Z (over 1 year ago)
- Last Synced: 2024-11-13T21:46:19.405Z (2 months ago)
- Topics: alert, alerting, api, docker, http, http-alert, monitoring, notification, pushover, rest, slack
- Language: C#
- Homepage: https://hub.docker.com/r/thiagobarradas/http-alert
- Size: 17.6 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Http Alert
Service to make HTTP requests, enforce rules and alert if conditions are not met;
## Running with Docker
Customize your `http_alert.yml` and mount in volume
```
docker run --name http-alert -v ./http_alert.yml:/app/http_alert.yml -d thiagobarradas/http-alert:latest
```https://hub.docker.com/r/thiagobarradas/http-alert
## http_alert.yml
```
# notification channels
notifications:
- name: team_a_channels
slack:
url: https://hooks.slack.com/services/XXXXXXX
pushover:
token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
user: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- name: team_b_channels
slack:
url: https://hooks.slack.com/services/YYYYYY
pushover:
token: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
user: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
- name: all_company
slack:
url: https://hooks.slack.com/services/ZZZZZZZ# monitoring config collection
http_configs:
# first config
- code: xxx-monitor
url: http://xxx.yyy.com/resource
user: my-basic-auth-user
pass: my-basic-auth-pass
timeout_seconds: 60
headers:
Application: HttpMonitoring
stop_in_first_alert: false
alert_in:
- team_a_channels
- all_company
alert_when_exception: true# rules to validate http response
rules:
- condition: '"{state}" = "running"'
error_title: 'Very high messages count for {vhost}/{name} '
error_message: 'Messages is very high ({messages} messages) with publish rate {message_stats.publish_details.rate}/s and deliver rate {message_stats.deliver_get_details.rate}/s'
alert_in:
- team_a_channels
alert_when_exception: true
- condition: '"{state}" = "idle"'
error_title: 'Very low messages count for {vhost}/{name} '
error_message: 'Messages is very low ({messages} messages) with publish rate {message_stats.publish_details.rate}/s and deliver rate {message_stats.deliver_get_details.rate}/s'
alert_in:
- team_b_channels
alert_when_exception: true
# second config
- code: yyy-monitor
url: http://xxx.yyy.com/resource
user: my-basic-auth-user
pass: my-basic-auth-pass
timeout_seconds: 60
headers:
Application: HttpMonitoring
stop_in_first_alert: false
alert_in:
- team_a_channels
- all_company
alert_when_exception: true# rules to validate http response
rules:
- condition: '"{state}" = "running"'
error_title: 'Very high messages count for {vhost}/{name} '
error_message: 'Messages is very high ({messages} messages) with publish rate {message_stats.publish_details.rate}/s and deliver rate {message_stats.deliver_get_details.rate}/s'
alert_in:
- team_a_channels
alert_when_exception: true
- condition: '"{state}" = "idle"'
error_title: 'Very low messages count for {vhost}/{name} '
error_message: 'Messages is very low ({messages} messages) with publish rate {message_stats.publish_details.rate}/s and deliver rate {message_stats.deliver_get_details.rate}/s'
alert_in:
- team_b_channels
alert_when_exception: true
```see here: [http_alert.yml](HttpAlerts/http_alert.yml);
## Conditions / Rules
We use [Flee](https://github.com/mparlak/Flee/wiki) to parser conditions expressions. Write conditions in your format using any json property path;
Samples:
- `"{state}" = "running"` string equals
- `"{state}" != "running"` string not equals
- `{messages.count} > 10` number gt
- `{messages.count} = 10` number equals
- `{messages.count} >= 10` number gte
- `{messages.count} < 10` number lt
- `{messages.count} <= 10` number lte
- `"{state}" = "running" OR {count} > 10` or operation
- `"{state}" = "running" AND {count} > 10` and operation## How can I contribute?
Please, refer to [CONTRIBUTING](.github/CONTRIBUTING.md)
## Found something strange or need a new feature?
Open a new Issue following our issue template [ISSUE_TEMPLATE](.github/ISSUE_TEMPLATE.md)
## Did you like it? Please, make a donate :)
if you liked this project, please make a contribution and help to keep this and other initiatives, send me some Satochis.
BTC Wallet: `1G535x1rYdMo9CNdTGK3eG6XJddBHdaqfX`
![1G535x1rYdMo9CNdTGK3eG6XJddBHdaqfX](https://i.imgur.com/mN7ueoE.png)