‹ Plugins / Notifier
HTTP

Notifier

The Notifier Plugin provides multi-channel notification capabilities for InfluxDB 3, enabling real-time alert delivery through various communication channels. Send notifications via Slack, Discord, HTTP webhooks, SMS, or WhatsApp based on incoming HTTP requests. Acts as a centralized notification dispatcher that receives data from other plugins or external systems and routes notifications to the appropriate channels.

Software Requirements

  • InfluxDB 3 Core/Enterprise: with the Processing Engine enabled.
  • Python packages: - httpx (for HTTP requests) - twilio (for SMS/WhatsApp notifications)

Installation steps

  1. Start InfluxDB 3 with the Processing Engine enabled (--plugin-dir /path/to/plugins):

    influxdb3 serve \
      --node-id node0 \
      --object-store file \
      --data-dir ~/.influxdb3 \
      --plugin-dir ~/.plugins
  2. Install required Python packages:

    influxdb3 install package httpx
    influxdb3 install package twilio

Configuration

This HTTP plugin receives all configuration via the request body. No trigger arguments are required.

Plugin metadata

This plugin includes a JSON metadata schema in its docstring that defines supported trigger types and configuration parameters. This metadata enables the InfluxDB 3 Explorer UI to display and configure the plugin.

Request body parameters

Send these parameters as JSON in the HTTP POST request body:

Parameter Type Default Description
notification_text string required Text content of the notification message
senders_config object required Configuration for each notification channel

Sender-specific configuration (in request body)

The senders_config object accepts channel configurations where keys are sender names and values contain channel-specific settings:

Slack notifications

Parameter Type Default Description
slack_webhook_url string required Slack webhook URL
slack_headers string none Base64-encoded JSON headers

Discord notifications

Parameter Type Default Description
discord_webhook_url string required Discord webhook URL
discord_headers string none Base64-encoded JSON headers

HTTP webhook notifications

Parameter Type Default Description
http_webhook_url string required Custom webhook URL for HTTP POST
http_headers string none Base64-encoded JSON headers

SMS notifications (via Twilio)

Parameter Type Default Description
twilio_sid string required Twilio Account SID (or use TWILIO_SID env var)
twilio_token string required Twilio Auth Token (or use TWILIO_TOKEN env var)
twilio_from_number string required Sender phone number in E.164 format
twilio_to_number string required Recipient phone number in E.164 format

WhatsApp notifications (via Twilio)

Parameter Type Default Description
twilio_sid string required Twilio Account SID (or use TWILIO_SID env var)
twilio_token string required Twilio Auth Token (or use TWILIO_TOKEN env var)
twilio_from_number string required Sender WhatsApp number in E.164 format
twilio_to_number string required Recipient WhatsApp number in E.164 format

Quick Start

HTTP trigger

Create an HTTP trigger to handle notification requests:

influxdb3 create trigger \
  --database mydb \
  --path "gh:influxdata/notifier/notifier_plugin.py" \
  --trigger-spec "request:notify" \
  notification_trigger

This registers an HTTP endpoint at /api/v3/engine/notify.

Enable trigger

influxdb3 enable trigger --database mydb notification_trigger

Examples

Example 1: Slack notification

Send a notification to Slack:

curl -X POST http://localhost:8181/api/v3/engine/notify \
  -H "Authorization: Bearer $INFLUXDB3_AUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "notification_text": "Alert: High CPU usage detected on server1",
    "senders_config": {
      "slack": {
        "slack_webhook_url": "'"$SLACK_WEBHOOK_URL"'"
      }
    }
  }'

Set INFLUXDB3_AUTH_TOKEN and SLACK_WEBHOOK_URL to your credentials.

Expected output

Notification sent to Slack channel with message: “Alert: High CPU usage detected on server1”

Example 2: SMS notification

Send an SMS via Twilio:

curl -X POST http://localhost:8181/api/v3/engine/notify \
  -H "Authorization: Bearer $INFLUXDB3_AUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "notification_text": "Critical alert: System down",
    "senders_config": {
      "sms": {
        "twilio_from_number": "'"$TWILIO_FROM_NUMBER"'",
        "twilio_to_number": "'"$TWILIO_TO_NUMBER"'"
      }
    }
  }'

Set TWILIO_FROM_NUMBER and TWILIO_TO_NUMBER to your phone numbers. Twilio credentials can be set via TWILIO_SID and TWILIO_TOKEN environment variables.

Example 3: Multi-channel notification

Send notifications via multiple channels simultaneously:

curl -X POST http://localhost:8181/api/v3/engine/notify \
  -H "Authorization: Bearer $INFLUXDB3_AUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "notification_text": "Performance warning: Memory usage above threshold",
    "senders_config": {
      "slack": {
        "slack_webhook_url": "'"$SLACK_WEBHOOK_URL"'"
      },
      "discord": {
        "discord_webhook_url": "'"$DISCORD_WEBHOOK_URL"'"
      }
    }
  }'

Set SLACK_WEBHOOK_URL and DISCORD_WEBHOOK_URL to your webhook URLs.

Code Overview

Files

  • notifier_plugin.py: The main plugin code containing the HTTP handler for notification dispatch

Logging

Logs are stored in the trigger’s database in the system.processing_engine_logs table. To view logs:

influxdb3 query --database YOUR_DATABASE "SELECT * FROM system.processing_engine_logs WHERE trigger_name = 'notification_trigger'"

Main functions

process_http_request(influxdb3_local, request_body, args)

Handles incoming HTTP notification requests. Parses the request body, extracts notification text and sender configurations, and dispatches notifications to configured channels.

Key operations:

  1. Validates request body for required notification_text and senders_config
  2. Iterates through sender configurations (Slack, Discord, HTTP, SMS, WhatsApp)
  3. Dispatches notifications with built-in retry logic and error handling
  4. Returns success/failure status for each channel

Troubleshooting

Common issues

Issue: Notification not delivered

Solution: Verify webhook URLs are correct and accessible. Check Twilio credentials and phone number formats. Review logs for specific error messages.

Issue: Authentication errors

Solution: Ensure Twilio credentials are set via environment variables or request parameters. Verify webhook URLs have proper authentication if required.

Issue: Rate limiting

Solution: Plugin includes built-in retry logic with exponential backoff. Consider implementing client-side rate limiting for high-frequency notifications.

Environment variables

For security, set Twilio credentials as environment variables:

export TWILIO_SID=your_account_sid
export TWILIO_TOKEN=your_auth_token

Viewing logs

Check processing logs in the InfluxDB system tables:

influxdb3 query --database YOUR_DATABASE "SELECT * FROM system.processing_engine_logs WHERE log_text LIKE '%notifier%' ORDER BY event_time DESC LIMIT 10"

Ready to get started?

Download InfluxDB 3 and have Notifier running in minutes.