Notifier plugin
The Notifier Plugin provides multi-channel notification capabilities for InfluxDB 3 Core, 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.
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 |
Software Requirements
- InfluxDB 3 Core: with the Processing Engine enabled.
- Python packages:
httpx(for HTTP requests)twilio(for SMS/WhatsApp notifications)
Installation steps
Start InfluxDB 3 Core with the Processing Engine enabled (
--plugin-dir /path/to/plugins):influxdb3 serve \ --node-id node0 \ --object-store file \ --data-dir ~/.influxdb3 \ --plugin-dir ~/.pluginsInstall required Python packages:
influxdb3 install package httpx influxdb3 install package twilio
Trigger setup
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_triggerThis registers an HTTP endpoint at /api/v3/engine/notify.
Enable trigger
influxdb3 enable trigger --database mydb notification_triggerExample usage
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:
- Validates request body for required
notification_textandsenders_config - Iterates through sender configurations (Slack, Discord, HTTP, SMS, WhatsApp)
- Dispatches notifications with built-in retry logic and error handling
- 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_tokenViewing 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"Report an issue
For plugin issues, see the Plugins repository issues page.
Find support for InfluxDB 3 Core
The InfluxDB Discord server is the best place to find support for InfluxDB 3 Core and InfluxDB 3 Enterprise. For other InfluxDB versions, see the Support and feedback options.
Was this page helpful?
Thank you for your feedback!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for InfluxDB 3 Core and this documentation. To find support, use the following resources:
Customers with an annual or support contract can contact InfluxData Support.