Skip to content

hatamiarash7/uptime-webhook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Uptime webhook handler

Release License Image size

It's webhook handler for uptime.com. You can define multiple teams and multiple notifiers for each team.

  1. Uptime.com will monitor our targets ( HTTP/S - ICMP - DNS - API - ... )
  2. Notify our webhook after making a decision
  3. Our webhook handler will send the final alert based on teams and any enabled platform.

design

Installation

  1. Create your configuration file. You can use config.yml.example as a template.

  2. Add your Squadcast configuration to the config.yml file.

  3. Run docker-compose up -d to start the service or run it manually:

    docker run -d \
        --name uptime-webhook \
        -p 8080:8080 \
        -v /path/to/config.yml:/app/configs/config.yml \
        hatamiarash7/uptime-webhook:latest
  4. Go to Uptime dashboard and create a new webhook in Notifications / Integrations section.

  5. Use your deployed webhook URL like this:

    http://<your-host>:8080/api/v1/alert/
    
  6. Wait for alerts 😁 Or you can send a test alert in Uptime dashboard.

Notifiers

You can use multiple notifiers at the same time. Just define them to the config.yml file. There is a config.yml.example file in the configs directory. You can use it as a template.

Squadcast

  1. Create a new Service in Squadcast ( Or use an existing one )

  2. Use Incident Webhook as an alert source

  3. Define that in config.yml file

    notifier:
       squadcast:
          enable: true
          teams:
             team1: "<WEBHOOK-URL>"
             team2: "<WEBHOOK-URL>"

    squadcast

Telegram

Fill your notifier with a telegram section like this:

notifier:
   telegram:
      enable: true
      host: "https://api.telegram.org/bot"
      token: "1234:ABCD"
      teams:
         team1:
            - chat: "-123456789"
         team2:
            - chat: "-124564"
              topic: "56789"
            - chat: "-356457"
              topic: "982456"

Note

You can use multiple chat/topic for each team.

telegram

Slack

  1. Create a new Application in Slack

  2. Use Incoming Webhook as type

  3. Define the webhook in config.yml file

    notifier:
       slack:
          enable: true
          teams:
             team1: "<WEBHOOK-URL>"
             team2: "<WEBHOOK-URL>"

    slack

Custom Webhook

Fill your notifier with a custom section and put your webhook URL like this:

notifier:
   custom:
      enable: true
      teams:
         team1: "<WEBHOOK-URL>"
         team2: "<WEBHOOK-URL>"

Monitoring

We have some metrics for monitoring our service in /metrics path.

Metric name Description
UPTIME_webhook_total_alerts Total number of alerts
UPTIME_webhook_telegram_success Total number of successful Telegram notify
UPTIME_webhook_telegram_failure Total number of failure Telegram notify
UPTIME_webhook_squadcast_success Total number of successful Squadcast notify
UPTIME_webhook_squadcast_failure Total number of failure Squadcast notify
UPTIME_webhook_slack_success Total number of successful Slack notify
UPTIME_webhook_slack_failure Total number of failure Slack notify
UPTIME_webhook_custom_success Total number of successful Custom Webhook notify
UPTIME_webhook_custom_failure Total number of failure Custom Webhook notify
UPTIME_webhook_alert_pool_capacity The alert pool capacity
UPTIME_webhook_alert_pool_running_jobs Total number of active jobs in alert pool

You can configure monitoring in config.yml file:

monitoring:
  enable: true
  path: "/metrics"
  password: "1234"

There is basic authentication for /metrics path with username admin and your chosen password.


Support 💛

Donate with Bitcoin

Donate with Ethereum

Contributing 🤝

Don't be shy and reach out to us if you want to contribute 😉

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request

Issues

Each project may have many problems. Contributing to the better development of this project by reporting them. 👍