Merge branch 'master' into docs/5823-write-lp-guide

pull/5836/head
Jameelah Mercer 2025-02-19 10:20:17 -08:00 committed by GitHub
commit a4b5c15f54
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 10 additions and 32 deletions

View File

@ -570,11 +570,6 @@ influxdb3 create distinct_cache -h
### Python plugins and the Processing engine
> [!Important]
> #### Processing engine only works with Docker
>
> The Processing engine is currently supported only in Docker x86 environments. Non-Docker support is coming soon. The engine, API, and developer experience are actively evolving and may change. Join our [Discord](https://discord.gg/9zaNCW2PRT) for updates and feedback.
The InfluxDB 3 Processing engine is an embedded Python VM for running code inside the database to process and transform data.
To use the Processing engine, you create [plugins](#plugin) and [triggers](#trigger).
@ -609,11 +604,6 @@ InfluxDB 3 provides the following types of triggers:
### Test, create, and trigger plugin code
> [!Important]
> #### Processing engine only works with Docker
>
> The Processing engine is currently supported only in Docker x86 environments. Non-Docker support is coming soon. The engine, API, and developer experience are actively evolving and may change. Join our [Discord](https://discord.gg/9zaNCW2PRT) for updates and feedback.
##### Example: Python plugin for WAL flush
```python
@ -699,10 +689,9 @@ Test your InfluxDB 3 plugin safely without affecting written data. During a plug
To test a plugin, do the following:
1. Create a _plugin directory_--for example, `/path/to/.influxdb/plugins`
2. Make the plugin directory available to the Docker container (for example, using a bind mount)
3. Run the Docker command to [start the server](#start-influxdb) and include the `--plugin-dir` option with your plugin directory path.
4. Save the [preceding example code](#example-python-plugin) to a plugin file inside of the plugin directory. If you haven't yet written data to the table in the example, comment out the lines where it queries.
5. To run the test, enter the following command with the following options:
2. [Start the InfluxDB server](#start-influxdb) and include the `--plugin-dir` option with your plugin directory path.
3. Save the [preceding example code](#example-python-plugin) to a plugin file inside of the plugin directory. If you haven't yet written data to the table in the example, comment out the lines where it queries.
4. To run the test, enter the following command with the following options:
- `--lp` or `--file`: The line protocol to test
- Optional: `--input-arguments`: A comma-delimited list of `<KEY>=<VALUE>` arguments for your plugin code

View File

@ -1,7 +1,3 @@
> [!Important]
> #### Processing engine only works with Docker
>
> The Processing engine is currently supported only in Docker x86 environments. Non-Docker support is coming soon. The engine, API, and developer experience are actively evolving and may change. Join our [Discord](https://discord.gg/9zaNCW2PRT) for updates and feedback.
Use the {{% product-name %}} Processing engine to run code and perform tasks
for different database events.
@ -35,6 +31,7 @@ The Processing engine provides four types of plugins and triggers--each type cor
- **On Request**: Bound to the HTTP API `/api/v3/engine/<CUSTOM_PATH>` endpoint and triggered by a GET or POST request to the endpoint.
## Activate the Processing engine
To enable the Processing engine, start the {{% product-name %}} server with the `--plugin-dir` option and a path to your plugins directory (it doesn't need to exist yet)--for example:
```bash
@ -351,6 +348,7 @@ def process_scheduled_call(influxdb3_local, time, args=None):
```
### Schedule Trigger Configuration
Schedule plugins are set with a `trigger-spec` of `schedule:<cron_expression>` or `every:<duration>`. The `args` parameter can be used to pass configuration to the plugin. For example, if we wanted to use the system-metrics example from the Github repo and have it collect every 10 seconds we could use the following trigger definition:
```shell
@ -361,6 +359,7 @@ influxdb3 create trigger \
```
## On Request Plugin
On Request plugins are triggered by a request to a specific endpoint under `/api/v3/engine`. The plugin will receive the local API, query parameters `Dict[str, str]`, request headers `Dict[str, str]`, request body (as bytes), and any arguments passed in the trigger definition. Here's an example of a simple On Request plugin:
```python
@ -387,6 +386,7 @@ def process_request(influxdb3_local, query_parameters, request_headers, request_
```
### On Request Trigger Configuration
On Request plugins are set with a `trigger-spec` of `request:<endpoint>`. The `args` parameter can be used to pass configuration to the plugin. For example, if we wanted the above plugin to run on the endpoint `/api/v3/engine/my_plugin`, we would use `request:my_plugin` as the `trigger-spec`.
Trigger specs must be unique across all configured plugins, regardless of which database they are tied to, given the path is the same. Here's an example to create a request trigger tied to the "hello-world' path using a plugin in the plugin-dir:

View File

@ -560,11 +560,6 @@ influxdb3 create distinct_cache -h
### Python plugins and the Processing engine
> [!Important]
> #### Processing engine only works with Docker
>
> The Processing engine is currently supported only in Docker x86 environments. Non-Docker support is coming soon. The engine, API, and developer experience are actively evolving and may change. Join our [Discord](https://discord.gg/9zaNCW2PRT) for updates and feedback.
The InfluxDB 3 Processing engine is an embedded Python VM for running code inside the database to process and transform data.
To use the Processing engine, you create [plugins](#plugin) and [triggers](#trigger).
@ -599,11 +594,6 @@ InfluxDB 3 provides the following types of triggers:
### Test, create, and trigger plugin code
> [!Important]
> #### Processing engine only works with Docker
>
> The Processing engine is currently supported only in Docker x86 environments. Non-Docker support is coming soon. The engine, API, and developer experience are actively evolving and may change. Join our [Discord](https://discord.gg/9zaNCW2PRT) for updates and feedback.
##### Example: Python plugin for WAL flush
```python
@ -689,10 +679,9 @@ Test your InfluxDB 3 plugin safely without affecting written data. During a plug
To test a plugin, do the following:
1. Create a _plugin directory_--for example, `/path/to/.influxdb/plugins`
2. Make the plugin directory available to the Docker container (for example, using a bind mount)
3. Run the Docker command to [start the server](#start-influxdb) and include the `--plugin-dir` option with your plugin directory path.
4. Save the [preceding example code](#example-python-plugin) to a plugin file inside of the plugin directory. If you haven't yet written data to the table in the example, comment out the lines where it queries.
5. To run the test, enter the following command with the following options:
2. [Start the InfluxDB server](#start-influxdb) and include the `--plugin-dir` option with your plugin directory path.
3. Save the [preceding example code](#example-python-plugin) to a plugin file inside of the plugin directory. If you haven't yet written data to the table in the example, comment out the lines where it queries.
4. To run the test, enter the following command with the following options:
- `--lp` or `--file`: The line protocol to test
- Optional: `--input-arguments`: A comma-delimited list of `<KEY>=<VALUE>` arguments for your plugin code