docs-v2/content/shared/influxdb-v2/tools/kapacitor.md

130 lines
5.5 KiB
Markdown

[Kapacitor](/kapacitor/v1/) is a data processing framework that makes
it easy to create alerts, run ETL jobs and detect anomalies.
Kapacitor interacts with **InfluxDB Cloud** and **InfluxDB OSS {{< current-version >}}** using the
[InfluxDB 1.x compatibility API](/influxdb/version/reference/api/influxdb-1x/), so
you can continue using Kapacitor without having to migrate libraries of TICKscripts
to InfluxDB tasks.
{{% note %}}
#### Support for stream tasks
InfluxDB Cloud and InfluxDB OSS {{< current-version >}} do not have subscription APIs and
**do not support Kapacitor stream tasks**, but you can continue to use stream
tasks by writing data directly to Kapacitor.
For more information, see [below](#use-kapacitor-stream-tasks).
{{% /note %}}
#### On this page
- [Configure Kapacitor to connect to InfluxDB](#configure-kapacitor-to-connect-to-influxdb)
- [Use Kapacitor batch tasks](#use-kapacitor-batch-tasks)
- [Use Kapacitor stream tasks](#use-kapacitor-stream-tasks)
- [Write back to InfluxDB](#write-back-to-influxdb)
## Configure Kapacitor to connect to InfluxDB
To connect Kapacitor to InfluxDB Cloud or InfluxDB OSS {{< current-version >}}, update the `[[influxdb]]`
section(s) of your [Kapacitor configuration file](/kapacitor/v1/administration/configuration/#kapacitor-configuration-file):
- [Specify your InfluxDB URL](#specify-your-influxdb-url)
- [Provide InfluxDB authentication credentials](#provide-influxdb-authentication-credentials)
- [Disable InfluxDB subscriptions](#disable-influxdb-subscriptions)
### Specify your InfluxDB URL
Provide your InfluxDB URL in the `[[influxdb]].urls` configuration option.
For more information, see [InfluxDB Cloud regions](/influxdb/cloud/reference/regions/)
or [InfluxDB OSS URLs](/influxdb/version/reference/urls/).
```toml
[[influxdb]]
# ...
urls = ["http://localhost:8086"]
```
### Provide InfluxDB authentication credentials
InfluxDB Cloud and InfluxDB OSS {{< current-version >}} require authentication.
Provide the following credentials in your `[[influxdb]].username` and `[[influxdb]].password`
configuration options:
- **username:** InfluxDB username
- **password:** InfluxDB [API token](/influxdb/version/admin/tokens/)
```toml
[[influxdb]]
# ...
username = "influxdb-username"
password = "influxdb-token"
```
{{% warn %}}
Kapacitor is subject to InfluxDB token permission restrictions.
To query or write to an InfluxDB bucket, the InfluxDB token must have read and/or
write permissions for the target bucket.
For information about token permissions, see [Create a token](/influxdb/version/admin/tokens/create-token/).
{{% /warn %}}
### Disable InfluxDB subscriptions
InfluxDB Cloud and InfluxDB OSS {{< current-version >}} do not have subscriptions APIs.
Set the `[[influxdb]].disable-subscriptions`to `true` to disable InfluxDB subscriptions.
```toml
[[influxdb]]
# ...
disable-subscriptions = true
```
## Use Kapacitor batch tasks
Kapacitor batch tasks use the `query` endpoint of the 1.x compatibility API
and require no change to use with InfluxDB Cloud and InfluxDB OSS.
For information about writing back to InfluxDB in Kapacitor tasks,
see [Write back to InfluxDB](#write-back-to-influxdb) below.
## Use Kapacitor stream tasks
InfluxDB Cloud and OSS {{< current-version >}} do not have subscription APIs and do not support Kapacitor stream tasks directly.
To use Kapacitor stream tasks, write data directly to Kapacitor using the [Kapacitor `write` API](/kapacitor/v1/working/api/#writing-data). We recommend using the [Telegraf InfluxDB output plugin](/telegraf/v1/plugins/#output-influxdb) to write data to both InfluxDB Cloud or OSS and Kapacitor.
##### Write data using the Telegraf InfluxDB output plugin
To write data to both InfluxDB and Kapacitor using the InfluxDB output plugin, complete the following steps:
1. [Install Telegraf](/telegraf/v1/install/).
2. [Create a DBRP mapping](/influxdb/version/query-data/influxql/dbrp/#create-dbrp-mappings).
3. In the [Telegraf InfluxDB output plugin](/telegraf/v1/plugins/#output-influxdb) configuration file, specify the following options, replacing `database`, `retention_policy`, `username` and `password` to match your DBRP mapping, and set `skip_database_creation` to `true`:
```toml
# Write to Kapacitor
[[outputs.influxdb]]
urls = ["http://localhost:9092"]
database = "example-db"
retention_policy = "example-rp"
# Write to InfluxDB Cloud or OSS
[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "example-db"
retention_policy = "example-rp"
username = "influxdb-username"
password = "influxdb-token"
skip_database_creation = true
```
## Write back to InfluxDB
If using the Kapacitor `InfluxDBOut` node to write data to InfluxDB {{< current-version >}},
InfluxDB maps the specified database and retention policy to a corresponding bucket.
You can also manually map database/retention policy combinations (DBRPs) to buckets.
For more information, see [DBRP mapping](/influxdb/version/reference/api/influxdb-1x/dbrp/){{% show-in "v2" %}}.{{% /show-in %}}
{{% show-in "cloud,cloud-serverless" %}}and [Create DBRP mappings](/influxdb/version/query-data/influxql/dbrp/#create-dbrp-mappings).{{% /show-in %}}
The following example TICKscript writes to the `my-db/my-rp` bucket in
InfluxDB Cloud or InfluxDB OSS {{< current-version >}}.
```js
batch
|query('SELECT errors / total AS error_percent from requests')
// Write the transformed data to InfluxDB
|influxDBOut()
.database('my-db')
.retentionPolicy('my-rp')
.measurement('errors')
.tag('kapacitor', 'true')
.tag('version', '0.2')
```