Skip to main content

Create a webhook server with Flask to forward Datadog alerts to Telegram

Project description

Datadog to Telegram webhook

Provides a basic authenticated webhook to forward alerts from Datadog to Telegram

Requirements

  • A Datadog account
  • A Telegram account

Quickstart

Datadog

  1. Set up a Datadog Webhook integration
  2. Create a new webhook with the following URL:
    https://<your-server-host>:8080/telegram/<telegram_chat_id>
    
  3. Use basic authentication credentials matching the ones configured on the server (see below)
  4. Use the webhook in your Datadog monitors by adding @webhook-<webhook_name> in the notification body

Telegram

  1. Create a Telegram bot via BotFather and note the API token
  2. Get your chat ID by messaging your bot and visiting:
    https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
    
    The chat.id field in the response is your chat ID

Webhook server

  1. Install dependencies:

    uv sync 
    
  2. Configure the following secrets either as environment variables or as Docker secrets in /var/run/secrets/:

    Environment Variable Docker Secret Description
    WEBHOOK_FLASK_SECRET_KEY webhook_flask_secret_key Flask secret key for sessions
    WEBHOOK_BASIC_AUTH_USERNAME webhook_basic_auth_username Basic auth username
    WEBHOOK_BASIC_AUTH_PASSWORD webhook_basic_auth_password Basic auth password
    WEBHOOK_TELEGRAM_BOT_API_TOKEN webhook_telegram_bot_api_token Telegram bot API token
  3. Run the server:

    python app.py
    

    The server starts on 127.0.0.1:8080 by default

Example curl:

curl -X POST -H "Content-Type: application/json"\
 -d '{
    "body": "%%%\n## What happened\n\nLorem ipsum\n\n- - - - - - - - - - - - -\n[[View Security Signal](https://app.datadoghq.eu/security/signals?event=AQAAAZ1Ywej15QMmZwAAAABBWjFZd2VqMUFBQ19SNDg2NGFTSW9BQUE&start=1775308796341&end=1775312396341&utm_source=notification&utm_medium=email,webhook)]\n@webhook-telegram_webhook\n%%%",
    "last_updated": "1775320543",
    "event_type": "api",
    "title": "Alert",
    "date": "1775320543",
    "org": {
        "id": "12345",
        "name": "ORG_NAME"
    },
    "id": "54321"
}' -u "${WEBHOOK_BASIC_AUTH_USERNAME}:${WEBHOOK_BASIC_AUTH_PASSWORD}" http://localhost:8080/telegram/${TELEGRAM_CHATID}

Documentation

Contribute

Open to any PR/comments/issues

Licence

Copyright 2023 DaisukiXCI

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

webhook_server-1.0.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

webhook_server-1.0.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file webhook_server-1.0.0.tar.gz.

File metadata

  • Download URL: webhook_server-1.0.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for webhook_server-1.0.0.tar.gz
Algorithm Hash digest
SHA256 cdef05df1d266d6d1c2cf7d85f8e1b3f0300cb348815c222355c3d123713f050
MD5 dc07581c3368b4e38e57e965037a6345
BLAKE2b-256 f3374a28e4ac33fa96611426f44c1d0e0dc5f50aeb9584fa7fdf7de17b9be0c1

See more details on using hashes here.

File details

Details for the file webhook_server-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: webhook_server-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for webhook_server-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6dffceeea520974a95d98c517a1b220e9acfebeb3cc2cb057072a3fb53ea21b9
MD5 17d67fd22658687583383de15f743771
BLAKE2b-256 440fa04f81f19299c2e817090dbbce0933115b711ca740db461501541e70d085

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page