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

publish

uv version VERSION
uv build
uv publish --token=$(op read "op://Private/PyPI/publish_token")

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.2.tar.gz (4.5 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.2-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: webhook_server-1.0.2.tar.gz
  • Upload date:
  • Size: 4.5 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.2.tar.gz
Algorithm Hash digest
SHA256 64739adcd752b0d19c7d8dedf52588c2c3128d1e2cc82390688eb7bb781e5834
MD5 1f94f18d18955e5ea42ae7570ff52851
BLAKE2b-256 870d23a8f3500c76f692b85a639cd5e9b9c2cfba7ef61dfe44c24815bae01eed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: webhook_server-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 5.5 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 173a4d4b16e0e69e283034517fe891bba7de17214e905b17f917e702828a9f30
MD5 1cd79690817b85d0c81649eb5fa14dbc
BLAKE2b-256 a147a80871943ce5f8c77fdde32805271b9aa2dbeaa7b6b0b491247423beeabd

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