This repository contains publicly shared plugins compatible with the InfluxDB 3 Core and InfluxDB 3 Enterprise built-in processing engine.
You can install these plugins to your InfluxDB 3 Enterprise or Core instance with a single command from the influxdb3
CLI.
InfluxDB 3 plugins extend the functionality of your InfluxDB instance with custom data processing, transformation, and notification capabilities. The plugin ecosystem supports three main trigger types: scheduled execution, data write events, and HTTP requests.
For more information about using plugins and triggers, see the InfluxDB 3 Get Started tutorial:
Plugins are organized in a structured directory hierarchy that reflects their contributor or organizational grouping:
organization/
├── plugin_name/
│ ├── README.md
│ ├── plugin_name.py
│ ├── config_*.toml (optional)
│ └── plugin_library.json (for influxdata plugins)
influxdata/basic_transformation/basic_transformation.py
examples/schedule/system_metrics/system_metrics.py
suyashcjoshi/data-replicator/data-replicator.py
- The Python file must have the same name as its parent directory
- Use snake_case for Python files and directory names
- Plugin directories may contain additional files such as configuration templates, test data, and documentation
Install plugins using the InfluxDB 3 CLI:
# Create trigger for scheduled plugin
influxdb3 create trigger \
--database DATABASE_NAME \
--plugin-filename plugin_name.py \
--trigger-spec "every:1h" \
--trigger-arguments param1=value1 \
trigger_name
Replace the following:
DATABASE_NAME
: the name of the database to useplugin_name.py
: the path to the plugin filetrigger_name
: a unique name for this trigger instance
- Python 3.7 or higher
- InfluxDB 3 CLI installed and configured
- Required Python libraries (varies by plugin)
-
Scheduled Plugins: Execute on time intervals
- Implement
process_scheduled_call(influxdb3_local, call_time, args)
- Implement
-
Data Write Plugins: Trigger on WAL flush events
- Implement
process_writes(influxdb3_local, table_batches, args)
- Implement
-
HTTP Plugins: Respond to HTTP requests
- Implement
process_http_request(influxdb3_local, request_body, args)
- Implement
- Follow Google Python docstring style
- Use type hints where possible
- Include comprehensive error handling
- Support both dry-run and live execution modes
- Follow the Style Guide for documentation standards
Plugins use TOML configuration files for parameter management:
# Required parameters
measurement = "temperature"
window = "30d"
target_measurement = "transformed_temperature"
# Optional parameters
dry_run = false
target_database = "analytics"
Configuration supports:
- Environment variable substitution via
PLUGIN_DIR
- Runtime argument parsing from trigger configurations
- Both inline arguments and external configuration files
When contributing new plugins:
- Create a new directory under your organization/username
- Follow the established directory structure
- Include comprehensive documentation following the Style Guide
- Test your plugin thoroughly before submission
- Update the plugin library metadata if applicable
- Submit a pull request to this repository with a clear description of changes
All plugins in this repository are dual licensed MIT or Apache 2 at the user's choosing, unless a LICENSE file is present in the plugin's directory.