{"id":15564312,"url":"https://github.com/hatamiarash7/uptime-webhook","last_synced_at":"2025-04-23T23:21:19.682Z","repository":{"id":175049194,"uuid":"646731167","full_name":"hatamiarash7/uptime-webhook","owner":"hatamiarash7","description":"Webhook handler for Uptime.com","archived":false,"fork":false,"pushed_at":"2025-04-08T14:36:24.000Z","size":1139,"stargazers_count":1,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-08T15:36:40.319Z","etag":null,"topics":["uptime","webhook","webhook-handler","webhook-receiver"],"latest_commit_sha":null,"homepage":"https://uptime.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hatamiarash7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-29T08:02:21.000Z","updated_at":"2025-04-08T14:35:21.000Z","dependencies_parsed_at":"2023-09-05T02:16:07.420Z","dependency_job_id":"343dc250-1ffa-4d55-84c1-bf11e0489ee8","html_url":"https://github.com/hatamiarash7/uptime-webhook","commit_stats":null,"previous_names":["hatamiarash7/uptime-webhook"],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hatamiarash7%2Fuptime-webhook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hatamiarash7%2Fuptime-webhook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hatamiarash7%2Fuptime-webhook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hatamiarash7%2Fuptime-webhook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hatamiarash7","download_url":"https://codeload.github.com/hatamiarash7/uptime-webhook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250529896,"owners_count":21445690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["uptime","webhook","webhook-handler","webhook-receiver"],"created_at":"2024-10-02T16:40:31.922Z","updated_at":"2025-04-23T23:21:19.644Z","avatar_url":"https://github.com/hatamiarash7.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Uptime webhook handler\n\n[![Release][release_badge]][release_link]\n[![License][badge_license]][link_license]\n[![Image size][badge_size_latest]][link_docker_hub]\n\n- [Uptime webhook handler](#uptime-webhook-handler)\n  - [Installation](#installation)\n  - [Notifiers](#notifiers)\n    - [Squadcast](#squadcast)\n    - [Telegram](#telegram)\n    - [Slack](#slack)\n    - [Custom Webhook](#custom-webhook)\n  - [Monitoring](#monitoring)\n  - [Support 💛](#support-)\n  - [Contributing 🤝](#contributing-)\n  - [Issues](#issues)\n\nIt's webhook handler for [uptime.com](https://uptime.com). You can define multiple teams and multiple notifiers for each team.\n\n1. Uptime.com will monitor our targets ( HTTP/S - ICMP - DNS - API - ... )\n2. Notify our webhook after making a decision\n3. Our webhook handler will send the final alert based on teams and any enabled platform.\n\n![design](.github/design.jpeg)\n\n## Installation\n\n1. Create your configuration file. You can use [`config.yml.example`](./configs/config.yml.example) as a template.\n2. Add your Squadcast configuration to the `config.yml` file.\n3. Run `docker-compose up -d` to start the service or run it manually:\n\n   ```bash\n   docker run -d \\\n       --name uptime-webhook \\\n       -p 8080:8080 \\\n       -v /path/to/config.yml:/app/configs/config.yml \\\n       hatamiarash7/uptime-webhook:latest\n   ```\n\n4. Go to Uptime dashboard and create a new webhook in *Notifications / Integrations* section.\n5. Use your deployed webhook URL like this:\n\n   ```text\n   http://\u003cyour-host\u003e:8080/api/v1/alert/\n   ```\n\n6. Wait for alerts 😁 Or you can send a test alert in Uptime dashboard.\n\n## Notifiers\n\nYou can use multiple notifiers at the same time. Just define them to the `config.yml` file. There is a [config.yml.example](./configs/config.yml.example) file in the `configs` directory. You can use it as a template.\n\n### Squadcast\n\n1. Create a new Service in Squadcast ( Or use an existing one )\n2. Use `Incident Webhook` as an alert source\n3. Define that in `config.yml` file\n\n   ```yaml\n   notifier:\n      squadcast:\n         enable: true\n         teams:\n            team1: \"\u003cWEBHOOK-URL\u003e\"\n            team2: \"\u003cWEBHOOK-URL\u003e\"\n   ```\n\n   ![squadcast](.github/squadcast.png)\n\n### Telegram\n\nFill your `notifier` with a `telegram` section like this:\n\n```yaml\nnotifier:\n   telegram:\n      enable: true\n      host: \"https://api.telegram.org/bot\"\n      token: \"1234:ABCD\"\n      teams:\n         team1:\n            - chat: \"-123456789\"\n         team2:\n            - chat: \"-124564\"\n              topic: \"56789\"\n            - chat: \"-356457\"\n              topic: \"982456\"\n```\n\n\u003e [!NOTE]\n\u003e You can use multiple chat/topic for each team.\n\n![telegram](.github/telegram.png)\n\n### Slack\n\n1. Create a new Application in Slack\n2. Use `Incoming Webhook` as type\n3. Define the webhook in `config.yml` file\n\n   ```yaml\n   notifier:\n      slack:\n         enable: true\n         teams:\n            team1: \"\u003cWEBHOOK-URL\u003e\"\n            team2: \"\u003cWEBHOOK-URL\u003e\"\n   ```\n\n   ![slack](.github/slack.png)\n\n### Custom Webhook\n\nFill your `notifier` with a `custom` section and put your webhook URL like this:\n\n```yaml\nnotifier:\n   custom:\n      enable: true\n      teams:\n         team1: \"\u003cWEBHOOK-URL\u003e\"\n         team2: \"\u003cWEBHOOK-URL\u003e\"\n```\n\n## Monitoring\n\nWe have some metrics for monitoring our service in `/metrics` path.\n\n| Metric name                              | Description                                      |\n| ---------------------------------------- | ------------------------------------------------ |\n| `UPTIME_webhook_total_alerts`            | Total number of alerts                           |\n| `UPTIME_webhook_telegram_success`        | Total number of successful Telegram notify       |\n| `UPTIME_webhook_telegram_failure`        | Total number of failure Telegram notify          |\n| `UPTIME_webhook_squadcast_success`       | Total number of successful Squadcast notify      |\n| `UPTIME_webhook_squadcast_failure`       | Total number of failure Squadcast notify         |\n| `UPTIME_webhook_slack_success`           | Total number of successful Slack notify          |\n| `UPTIME_webhook_slack_failure`           | Total number of failure Slack notify             |\n| `UPTIME_webhook_custom_success`          | Total number of successful Custom Webhook notify |\n| `UPTIME_webhook_custom_failure`          | Total number of failure Custom Webhook notify    |\n| `UPTIME_webhook_alert_pool_capacity`     | The alert pool capacity                          |\n| `UPTIME_webhook_alert_pool_running_jobs` | Total number of active jobs in alert pool        |\n\nYou can configure monitoring in `config.yml` file:\n\n```yaml\nmonitoring:\n  enable: true\n  path: \"/metrics\"\n  password: \"1234\"\n```\n\nThere is basic authentication for `/metrics` path with username `admin` and your chosen password.\n\n---\n\n## Support 💛\n\n[![Donate with Bitcoin](https://img.shields.io/badge/Bitcoin-bc1qmmh6vt366yzjt3grjxjjqynrrxs3frun8gnxrz-orange)](https://donatebadges.ir/donate/Bitcoin/bc1qmmh6vt366yzjt3grjxjjqynrrxs3frun8gnxrz)\n\n[![Donate with Ethereum](https://img.shields.io/badge/Ethereum-0x0831bD72Ea8904B38Be9D6185Da2f930d6078094-blueviolet)](https://donatebadges.ir/donate/Ethereum/0x0831bD72Ea8904B38Be9D6185Da2f930d6078094)\n\n\u003cdiv\u003e\u003ca href=\"https://payping.ir/@hatamiarash7\"\u003e\u003cimg src=\"https://cdn.payping.ir/statics/Payping-logo/Trust/blue.svg\" height=\"128\" width=\"128\"\u003e\u003c/a\u003e\u003c/div\u003e\n\n## Contributing 🤝\n\nDon't be shy and reach out to us if you want to contribute 😉\n\n1. Fork it!\n2. Create your feature branch: `git checkout -b my-new-feature`\n3. Commit your changes: `git commit -am 'Add some feature'`\n4. Push to the branch: `git push origin my-new-feature`\n5. Submit a pull request\n\n## Issues\n\nEach project may have many problems. Contributing to the better development of this project by reporting them. 👍\n\n[release_badge]: https://github.com/hatamiarash7/uptime-webhook/actions/workflows/docker.yml/badge.svg\n[release_link]: https://github.com/hatamiarash7/uptime-webhook/actions/workflows/docker.yaml\n[link_license]: https://github.com/hatamiarash7/uptime-webhook/blob/master/LICENSE\n[badge_license]: https://img.shields.io/github/license/hatamiarash7/uptime-webhook.svg?longCache=true\n[badge_size_latest]: https://img.shields.io/docker/image-size/hatamiarash7/uptime-webhook/latest?maxAge=30\n[link_docker_hub]: https://hub.docker.com/r/hatamiarash7/uptime-webhook/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhatamiarash7%2Fuptime-webhook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhatamiarash7%2Fuptime-webhook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhatamiarash7%2Fuptime-webhook/lists"}