文档文档

创建任务

使用 InfluxDB 用户界面 (UI)、influx 命令行界面 (CLI) 或 /api/v2 API 创建任务。

在创建任务之前,请查看 编写任务的基礎

在 InfluxDB UI 中创建任务

InfluxDB UI 提供了多种创建任务的方式

从数据探索器创建任务

  1. 在左侧导航菜单中,选择 数据探索器

  2. 构建查询,然后在右上角单击 另存为

  3. 选择 任务 标题。

  4. 指定任务选项。有关每个选项的详细信息,请参阅 任务选项

  5. 单击 保存为任务

在任务 UI 中创建任务

  1. 在左侧导航菜单中,选择 任务

  2. 在右上角单击 创建任务

  3. 在左侧面板中,指定任务选项。有关每个选项的详细信息,请参阅 任务选项

  4. 在右侧面板中,输入您的任务脚本。

    省略任务分配选项

    在 InfluxDB 任务 UI 中创建新任务时,请勿在代码编辑器中输入任何内容。当您保存任务时,任务 UI 将使用您在“任务选项”表单中指定的 任务选项 自动填充 option task = {task_options}

    当您编辑已保存的任务时,您将看到注入的 option task = {task_options}

  5. 在右上角单击 保存

导入任务

  1. 在左侧导航菜单中,选择 任务

  2. 在右上角单击 创建任务

  3. 在左侧面板中,指定任务选项。有关每个选项的详细信息,请参阅 任务选项

  4. 将原始 Flux 任务粘贴到任务选项字段右侧的代码编辑器中。

  5. 在右上角单击 保存

从模板创建任务

  1. 在左侧导航菜单中,选择 设置 > 模板

  2. 找到您要使用的模板,然后单击其 资源 列表以展开列表。

  3. 资源 列表中,单击您要使用的任务。

克隆任务

  1. 在左侧导航菜单中,选择 任务

  2. 找到您想要克隆的任务,然后点击任务名称右侧最远的 图标。

  3. 点击 克隆

使用 influx CLI 创建任务

使用 influx task create 命令创建新任务。它接受文件路径或原始 Flux。

使用文件创建任务

# Syntax
influx task create --org <org-name>  -f </path/to/task-script>

# Example
influx task create --org my-org -f /tasks/cq-mean-1h.flux

使用原始 Flux 创建任务

influx task create --org my-org - # <return> to open stdin pipe

option task = {
  name: "task-name",
  every: 6h
}

# ... Task script ...

# Linux & macOS: <ctrl-d> to close the pipe and submit the command
# Windows: <enter>, then <ctrl-d>, then <enter> to close the pipe and submit the command

使用 InfluxDB API 创建任务

InfluxDB Cloud 任务可以运行一个 可调用的脚本 或存储在任务中的原始 Flux。

创建引用脚本的任务

使用 InfluxDB Cloud 可调用脚本,您可以像 API 端点一样管理、重用和调用脚本。您可以使用任务传递脚本参数和安排运行。

使用 /api/v2/tasks InfluxDB API 端点 创建一个引用脚本 ID 的任务。

POST https://127.0.0.1:8086/api/v2/tasks/

在您的 API 请求中提供以下内容

请求头

  • Content-Type: application/json
  • Authorization: Token INFLUX_API_TOKEN

请求体

包含以下字段的 JSON 对象

curl --request POST 'https://cloud2.influxdata.com/api/v2/tasks' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Token INFLUX_API_TOKEN' \
    "cron": "0 * * * *",
    "name": "downsample cpu",
    "scriptID": "085a2960eaa20000",
    "description": "This task downsamples CPU data every hour"
}'

要创建在调用脚本时传递参数的任务,请将 scriptParameters 属性传递到请求体中。以下示例代码创建了一个带有参数的脚本,然后创建了一个每天运行新脚本的任务

SCRIPT_ID=$(
curl https://cloud2.influxdata.com/api/v2/scripts \
  --header "Authorization: Token INFLUX_API_TOKEN" \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data-binary @- << EOF | jq -r '.id'
  {
    "name": "filter-and-group19",
    "description": "Returns filtered and grouped points from a bucket.",
    "script": "from(bucket: params.bucket)\
               |> range(start: duration(v: params.rangeStart))\
               |> filter(fn: (r) => r._field == params.filterField)\
               |> group(columns: [params.groupColumn])",
     "language": "flux"
  }
EOF
)

echo $SCRIPT_ID

curl https://cloud2.influxdata.com/api/v2/tasks \
--header "Content-type: application/json" \
--header "Authorization: Token INFLUX_API_TOKEN" \
--data @- << EOF
  {
  "name": "30-day-avg-temp",
  "description": "IoT Center 30d temperature average.",
  "every": "1d",
  "scriptID": "${SCRIPT_ID}",
  "scriptParameters":
    {
      "rangeStart": "-30d",
      "bucket": "air_sensor",
      "filterField": "temperature",
      "groupColumn": "_time"
    }
  }
EOF

INFLUX_API_TOKEN 替换为您的 InfluxDB API 令牌。

创建包含 Flux 脚本的任务

使用 /api/v2/tasks InfluxDB API 端点 创建一个包含具有任务选项的 Flux 脚本的任务。

POST https://cloud2.influxdata.com/api/v2/tasks/

在您的 API 请求中提供以下内容

请求头

  • Content-Type: application/json
  • Authorization: Token INFLUX_API_TOKEN

请求体

包含以下字段的 JSON 对象

  • flux: 包含 选项 和查询的原始 Flux 任务字符串。
  • status: 任务状态(“active” 或 “inactive”)
  • description: 任务描述
curl --request POST 'https://cloud2.influxdata.com/api/v2/tasks' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Token INFLUX_API_TOKEN' \
    --data-binary @- << EOF
      {
        "flux": "option task = {name: \"CPU Total 1 Hour New\", every: 1h}\
        from(bucket: \"telegraf\")
          |> range(start: -1h)
          |> filter(fn: (r) => (r._measurement == \"cpu\"))
          |> filter(fn: (r) =>\n\t\t(r._field == \"usage_system\"))
          |> filter(fn: (r) => (r.cpu == \"cpu-total\"))
          |> aggregateWindow(every: 1h, fn: max)
          |> to(bucket: \"cpu_usage_user_total_1h\", org: \"INFLUX_ORG\")",
        "orgID": "INFLUX_ORG_ID",
        "status": "active",
        "description": "This task downsamples CPU data every hour"
      }
EOF

替换以下内容

  • INFLUX_API_TOKEN: 您的 InfluxDB API 令牌
  • INFLUX_ORG: 您的 InfluxDB 组织名称
  • INFLUX_ORG_ID: 您的 InfluxDB 组织 ID

这个页面有帮助吗?

感谢您的反馈!


Flux 的未来

Flux 将进入维护模式。您可以继续像现在一样使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB v3 增强功能和 InfluxDB 集群版现已正式发布

包括更快的查询性能和管理工具在内的新功能推动了 InfluxDB v3 产品线的进步。InfluxDB 集群版现已正式发布。

InfluxDB v3 性能和功能

InfluxDB v3 产品线在查询性能方面取得了显著增强,并提供了新的管理工具。这些增强包括用于监控 InfluxDB 集群健康状况的操作仪表板,InfluxDB Cloud 专用中的单点登录(SSO)支持,以及用于令牌和数据库的新管理 API。

了解新的 v3 增强功能


InfluxDB 集群版正式发布

InfluxDB 集群版现已正式发布,为您在自管理的堆栈中提供了 InfluxDB v3 的功能。

与我们谈谈 InfluxDB 集群版

由 TSM 驱动的 InfluxDB Cloud