TL;DR InfluxDB 技术提示:使用 InfluxDB 调试和监控任务
作者:Anais Dotis-Georgiou / 产品,用例,开发者
2021 年 3 月 10 日
导航至
使用 InfluxDB,您可以使用任务按计划处理数据。您还可以使用任务来编写自定义警报。然而,有时您的任务会失败。在本 TLDR 中,我们将学习如何使用 InfluxDB UI 和 InfluxDB CLI 调试您的任务。
使用 InfluxDB UI 调试任务
InfluxDB UI 中充满了有关您任务的信息,以帮助您更好地了解您正在运行的任务。
<figcaption> InfluxDB UI 中 任务 页面的截图,允许您查看任务列表、它们的运行状态(活动或非活动)以及更多内容</figcaption>
以下是一些您应该熟悉的任务页面 UI 功能:
- 任务运行状态切换: 您可以使用它切换任务的开关或活动/非活动状态。在调试失败的任务时,我会将我的任务切换到非活动状态。当我在测试一个新的任务时,我也会使用这个功能。具体来说,我会临时将我的任务设置为非常频繁地运行,以确保它可以通过我提出的任何测试。然后,在对我任务的最终更改完成后,我会将其设置为非活动状态。最后,在我对最终任务的外观有信心后,我会将其切换回活动状态。
- 齿轮图标: 这可能是调试您任务的最重要的 UI 功能。它允许您 导出 您的任务、查看任务运行情况 和 运行任务。
- 导出按钮: 齿轮图标下下拉菜单中的 导出 按钮允许您将任务导出为 JSON 格式。导出您的任务是一种轻松地将任务与同事或社区分享以获取调试帮助的方法。您还可以从 json 中获取任务 ID。您也可以从 URL 中获取它。例如,https://us-west-2-1.aws.cloud2.influxdata.com/orgs/
/tasks/ 。任务 ID 可以帮助您使用 InfluxDB 监控任务,并使用 CLI 调试任务。请参阅本博客的最后一部分,了解更多关于如何使用 InfluxDB 监控任务的信息。
<figcaption> 您可以从任务 JSON 中获取任务 ID</figcaption>
- 查看任务运行按钮:在我看来,这是 InfluxDB UI 中用于调试任务的最重要的功能。点击齿轮图标下方的下拉菜单中的查看任务运行按钮,会将您带到 UI 中的以下页面
在这里,您可以查看运行列表、任务预定运行时间、执行时间和任务运行所需的时间。您还可以查看每个任务运行的单独日志。点击查看日志按钮可以查看每次运行的日志。在下面的示例中,我得到错误“找不到 bucket:'boo':初始化执行状态失败”。这个错误帮助我理解我正在从一个不存在的 InfluxDB 实例的 bucket 中进行查询。我现在可以将任务切换为不活动状态,将任务中的 Flux 脚本更改以从正确的 bucket 中收集数据以解决这个问题,最后再将任务切换回活动状态。
- 运行任务按钮:齿轮图标下方的下拉菜单中的运行任务按钮也非常有用。在测试新任务时,我采取以下两种方法之一。a) 将任务临时预定为非常频繁的运行以检查输出或b) 简单地点击运行任务按钮按需运行任务。
使用 InfluxDB CLI 调试任务
UI 中存在的许多功能也在 CLI 中存在。当使用 InfluxDB CLI 时,最好首先创建一个 CLI 配置配置文件,如果您还没有的话。如果您需要为您的 InfluxDB 云账户创建 CLI 配置,则首先需要在本地安装 Influx CLI 。
查看这个 TL;DR InfluxDB 技术提示 - 如何在本地使用 CLI 访问 Flux REPL 并将常规 CSV 写入 InfluxDB 云,它展示了如何设置您的配置配置文件并突出 CLI 配置为什么如此有用。
使用 influx task retry-failed 命令重新运行失败的任务
./influx influx task retry-failed --task-id <your task id>
使用 influx task run retry 命令重新运行任何任务运行
./influx task run retry --task-id <your task id> --run-id <your run id>
获取您的任务 ID 的最简单方法是找到它,在 UI 中的“任务”页面下方的任务名称下方。
<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 监控自己的任务是个好主意。每次检查或任务运行时,相应的状态、日志、运行ID等信息都会写入 _task 系统存储桶。创建一个 警报 来监控关键任务并接收包含任务ID和运行ID的通知,以便您可以重新运行任务是个不错的选择。这里有一个 查找失败任务的示例任务。如果您想在任务消息中包含运行ID,只需将 第37行 改为:("任务:${r.taskID} - ${r.name} - ${r.runID} - 状态为 ${r.status}")
。您可以通过界面配置 http 和 Slack 通知端点。您还可以使用自定义 Flux 包配置额外的 通知端点,包括 Discord、Opsgenie、PagerDuty、Sensu、Telegram 和 Microsoft Teams。了解如何使用 任务和 Flux Telegram 端点 配置自定义通知端点。
关于任务调试和任务监控的总结性思考
希望这篇 InfluxDB 技术技巧文章能激发您利用 InfluxDB 监控和调试自己的任务。如果您创建了有趣或独特的任务,请向我们寻求帮助并 分享您的经历!在评论区、我们的 社区网站 或我们的 Slack 频道中分享您的想法、关注点或问题。我们很乐意获取您的反馈并帮助您解决遇到的问题!