TL;DR InfluxDB 技术提示:使用 InfluxDB 进行调试和监控任务

导航至

使用 InfluxDB,您可以使用任务按计划处理数据。您还可以使用任务编写自定义警报。但是,有时您的任务会失败。在本 TLDR 中,我们将学习如何使用 InfluxDB UI 和 InfluxDB CLI 调试您的任务。

使用 InfluxDB UI 调试任务

InfluxDB UI 包含有关您的任务的丰富信息,可帮助您更多地了解您正在运行的任务。

InfluxDB UI 中任务页面的屏幕截图<figcaption> 任务页面的屏幕截图,您可以在 InfluxDB UI 中查看您的任务列表、它们的运行状态(活动或非活动)等等</figcaption>

以下是您应该熟悉的任务页面的某些 UI 功能

  • 任务运行状态切换: 它使您能够打开/关闭或激活/停用任务。当调试失败的任务时,我会将我的任务切换为非活动状态。当测试新任务时,我也会使用此功能。具体来说,我会暂时将我的任务设置为非常频繁地运行,以确保它可以通任何测试。然后,我会将任务设置为非活动状态,同时对任务进行最终更改。最后,当我对我最终任务的外观感到满意时,我会将其切换回活动状态。
  • 齿轮图标: 这可能是调试任务最重要的 UI 功能。它允许您导出任务、查看任务运行运行任务
  • 导出按钮: 齿轮图标下下拉菜单中的导出按钮允许您将任务导出为 JSON。导出任务是与同事或社区分享您的任务以获得调试帮助的简便方法。您还可以从 JSON 中获取任务 ID。您也可以从 URL 中提取它。例如,https://us-west-2-1.aws.cloud2.influxdata.com/orgs/<org_id>/tasks/<task_id>。任务 ID 对于使用 InfluxDB 监控您的任务以及使用 CLI 调试您的任务非常有用。有关如何使用 InfluxDB 监控您的任务的更多详细信息,请参阅本博客的最后一节。

您可以从任务 JSON 中收集您的任务 ID<figcaption> 您可以从任务 JSON 中收集您的任务 ID</figcaption>

  • 查看任务运行按钮: 在我看来,这是 InfluxDB UI 中最有用的任务调试功能。单击齿轮图标下下拉菜单中的查看任务运行按钮将带您进入 UI 中的以下页面

InfluxDB view task runs

在这里,您可以查看运行列表、任务计划运行的时间、执行时间和任务运行所用的持续时间。您还可以查看每个任务运行的单个日志。单击查看日志按钮允许您查看每个运行的日志。在下面的示例中,我收到错误“找不到存储桶:“boo”:初始化执行状态失败”。此错误帮助我理解我正在从 InfluxDB 实例中不存在的存储桶中查询。我现在可以将我的任务切换为非活动状态,更改任务中的 Flux 脚本以从正确的存储桶收集数据以解决此问题,最后将我的任务切换回活动状态。

InfluxDB Run Logs screenshot

  • 运行任务按钮: 齿轮图标下下拉菜单中的运行任务按钮也非常有用。在测试新任务时,我采取两种方法之一。我要么 a) 暂时安排任务非常频繁地运行以检查输出,要么 b) 我只需单击运行任务按钮按需运行任务。

使用 InfluxDB CLI 调试任务

UI 中存在的许多功能也存在于 CLI 中。当使用 InfluxDB CLI 时,最好先创建一个 CLI 配置配置文件,如果您还没有的话。如果您需要为您的 InfluxDB Cloud 帐户创建 CLI 配置,那么您需要先在本地安装 Influx CLI

查看此TL;DR InfluxDB 技术提示 – 如何在本地使用 CLI 访问 Flux REPL 并将常规 CSV 写入 InfluxDB Cloud,了解另一个示例,该示例演示了如何设置您的配置配置文件,并强调了 CLI 配置如此有用的原因。

使用 influx task retry-failed 命令重新运行失败的任务,命令如下:

./influx influx task retry-failed --task-id <您的任务 ID>

使用 influx task run retry 命令重新运行任何任务运行,命令如下:

./influx task run retry --task-id <您的任务 ID> --run-id <您的运行 ID>

收集您的任务 ID 的最简单方法是在 UI 中任务页面上的任务名称下方找到它。

在 InfluxDB 中收集您的任务 ID<figcaption> 您可以从您的任务列表中收集您的任务 ID</figcaption>

最后,值得了解的是,CLI 允许您使用 --json 选项将结果输出为 JSON。然后,您可以将该 JSON 管道传输到 jq(一个轻量级命令行 JSON 处理器),以轻松找到失败的运行。例如,您可以使用以下命令查找失败的任务运行 ID:

influx task run list --task-id <your task id> --json | jq -r '.[] | select(.status != "failed") | .id

关于任务的一般建议 – 使用 InfluxDB 监控您的任务

InfluxDB 主要用于监控,因此使用 InfluxDB 监控您自己的任务是个好主意。每次检查或任务运行时,相应的状态、日志、runID 等都会写入 _task 系统存储桶。最好创建警报以监控关键任务,并接收包含任务 ID 和运行 ID 的通知,以便您可以重新运行任务。这是一个查找失败任务的任务。如果您想将运行 ID 作为任务消息的一部分包含在内,只需将第 37 行更改为:("任务:${r.taskID} - ${r.name} - ${r.runID} - 具有 ${r.status} 状态")。您可以通过 UI 配置 http 和 Slack 通知端点。您可以使用自定义 Flux 包配置其他通知端点,包括 Discord、Opsgenie、PagerDuty、Sensu、Telegram 和 Microsoft Teams。了解如何使用任务和 Flux Telegram 端点配置自定义通知端点。

关于任务调试和任务监控的最终想法

我希望这篇 InfluxDB 技术提示文章能够激发您利用 InfluxDB 来监控和调试您自己的任务。如果您正在创建很酷或独特的任务,请向我们寻求帮助并分享您的故事!在评论区、我们的社区站点或我们的Slack 频道中分享您的想法、疑虑或问题。我们很乐意获得您的反馈并帮助您解决遇到的任何问题!