content/shared/influxdb3-cli/create/trigger.md
The influxdb3 create trigger command creates a new trigger for the
processing engine.
# Syntax
influxdb3 create trigger [OPTIONS] \
--database <DATABASE_NAME> \
--token <AUTH_TOKEN> \
--plugin-filename <PLUGIN_FILENAME> \
--trigger-spec <TRIGGER_SPECIFICATION> \
<TRIGGER_NAME>
| Option | Description | |
|---|---|---|
-H | --host | Host URL of the running {{< product-name >}} server (default is http://127.0.0.1:8181) |
-d | --database | ({{< req >}}) Name of the database to operate on |
--token | ({{< req >}}) Authentication token | |
-p | --path | Path to plugin file or directory (single .py file or directory containing __init__.py for multifile plugins). Can be local path (with --upload) or server path. Replaces --plugin-filename. |
--upload | Upload local plugin files to the server. Requires admin token. Use with --path to specify local files. | |
--plugin-filename | (Deprecated: use --path instead) Name of the file, stored in the server's plugin-dir, that contains the Python plugin code to run | |
--trigger-spec | Trigger specification: table:<TABLE_NAME>, all_tables, every:<DURATION>, cron:<EXPRESSION>, or request:<REQUEST_PATH> | |
--trigger-arguments | Additional arguments for the trigger, in the format key=value, separated by commas (for example, arg1=val1,arg2=val2) | |
--disabled | Create the trigger in disabled state | |
--error-behavior | Error handling behavior: log, retry, or disable | |
--run-asynchronous | Run the trigger asynchronously, allowing multiple triggers to run simultaneously (default is synchronous) | |
| {{% show-in "enterprise" %}} | --node-spec | |
--tls-ca | Path to a custom TLS certificate authority (for self-signed or internal certificates) | |
--tls-no-verify | Disable TLS certificate verification (Not recommended in production, useful for self-signed certificates) | |
-h | --help | Print help information |
--help-all | Print detailed help information |
If you want to use a plugin from the Plugin Library repo, use the URL path with gh: specified as the prefix.
For example, to use the System Metrics plugin, the plugin filename is gh:influxdata/system_metrics/system_metrics.py.
You can use the following environment variables to set command options:
| Environment Variable | Option |
|---|---|
INFLUXDB3_HOST_URL | --host |
INFLUXDB3_DATABASE_NAME | --database |
INFLUXDB3_AUTH_TOKEN | --token |
INFLUXDB3_TLS_NO_VERIFY | --tls-no-verify |
The following examples show how to use the influxdb3 create trigger command to create triggers in different scenarios.
Replace the following placeholders with your values:
DATABASE_NAME{{% /code-placeholder-key %}}: Database nameAUTH_TOKEN{{% /code-placeholder-key %}}: Authentication tokenPLUGIN_FILENAME{{% /code-placeholder-key %}}: Python plugin filenameTRIGGER_NAME{{% /code-placeholder-key %}}:
Name of the trigger to createTABLE_NAME{{% /code-placeholder-key %}}:
Name of the table to trigger onCreate a trigger that processes data from a specific table.
<!--pytest.mark.skip-->influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename PLUGIN_FILENAME \
--trigger-spec table:TABLE_NAME \
TRIGGER_NAME
PLUGIN_FILENAME must implement the data write plugin interface.
Create a trigger that applies to all tables in the specified database.
<!--pytest.mark.skip-->influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename <PLUGIN_FILENAME> \
--trigger-spec all_tables \
TRIGGER_NAME
PLUGIN_FILENAME must implement the data write plugin interface.
This is useful when you want a trigger to apply to any table in the database, regardless of name.
Create a trigger that runs at a specific interval using a duration. Supported duration units: s (seconds), m (minutes), h (hours), d (days), w (weeks), M (months), y (years). Maximum interval is 1 year.
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename <PLUGIN_FILENAME> \
--trigger-spec every:5m \
TRIGGER_NAME
Create a trigger that runs based on a cron schedule using extended 6-field cron format. The cron expression follows the format:
second minute hour day_of_month month day_of_week
Fields:
Example: Run at 6:00 AM every weekday (Monday-Friday):
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename <PLUGIN_FILENAME> \
--trigger-spec "cron:0 0 6 * * 1-5" \
TRIGGER_NAME
PLUGIN_FILENAME must implement the scheduled plugin interface.
Create a trigger that provides an API endpoint and processes HTTP requests.
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename PLUGIN_FILENAME \
--trigger-spec request:REQUEST_PATH \
TRIGGER_NAME
PLUGIN_FILENAME must implement the HTTP request plugin interface.
Create a trigger using a plugin organized in multiple files. The plugin directory must contain an __init__.py file.
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--path "my_complex_plugin" \
--trigger-spec "every:5m" \
TRIGGER_NAME
The --path points to a directory in the server's plugin-dir with the following structure:
my_complex_plugin/
├── __init__.py # Required entry point
├── processors.py # Supporting modules
└── utils.py
For more information about multifile plugins, see Create your plugin file.
Upload plugin files from your local machine and create a trigger in a single command. Requires admin token.
<!--pytest.mark.skip--># Upload single-file plugin
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--path "/local/path/to/plugin.py" \
--upload \
--trigger-spec "every:1m" \
TRIGGER_NAME
# Upload multifile plugin directory
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--path "/local/path/to/plugin-dir" \
--upload \
--trigger-spec "table:TABLE_NAME" \
TRIGGER_NAME
The --upload flag transfers local files to the server's plugin directory. This is useful for:
For more information, see Upload plugins from local machine.
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename <PLUGIN_FILENAME> \
--trigger-spec table:TABLE_NAME \
--trigger-arguments arg1=value1,arg2=value2 \
TRIGGER_NAME
Create a trigger in a disabled state.
<!--pytest.mark.skip-->influxdb3 create trigger \
--disabled \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename <PLUGIN_FILENAME> \
--trigger-spec table:TABLE_NAME \
TRIGGER_NAME
Creating a trigger in a disabled state prevents it from running immediately. You can enable it later when you're ready to activate it.
Log the error to the service output and the system.processing_engine_logs table:
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename <PLUGIN_FILENAME> \
--trigger-spec table:TABLE_NAME \
--error-behavior log \
TRIGGER_NAME
Rerun the trigger if it fails:
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename <PLUGIN_FILENAME> \
--trigger-spec table:TABLE_NAME \
--error-behavior retry \
TRIGGER_NAME
Disable the trigger if it fails:
influxdb3 create trigger \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--plugin-filename <PLUGIN_FILENAME> \
--trigger-spec table:TABLE_NAME \
--error-behavior disable \
TRIGGER_NAME