在 Chronograf 中使用 Kapacitor
目录
概述
作为 TICK stack 的一部分,Chronograf 是一个图形用户界面,旨在简化监控基础架构、可视化数据、管理数据库和管理警报。Chronograf 通过警报管理与 Kapacitor 集成。
在 Chronograf 文档中,使用 Kapacitor 的内容涵盖在以下部分:连接 Chronograf 到 Kapacitor、创建 Kapacitor 警报、配置 Kapacitor 事件处理程序 和 高级 Kapacitor 用法。
本文档将总结其中许多要点,并提供有关使用 Chronograf 中的任务和 TICKscripts 的技巧。
配置 Chronograf 以使用 Kapacitor
Chronograf 中的 Kapacitor 实例与特定的 InfluxDB 数据库相关联,这些数据库应该已经绑定到 Kapacitor 和 Chronograf。要在 Kapacitor 中定义 InfluxDB 数据库,请参阅 Kapacitor 入门 或 配置 Kapacitor 指南。要在 Chronograf 中定义 InfluxDB 数据库,请参阅 Chronograf 文档中的 InfluxDB 设置。
添加 Kapacitor 实例
将 Kapacitor 实例添加到 Chronograf
在左侧导航栏中,单击 **配置** 齿轮图标。将加载 InfluxDB 源列表。

在列表中找到 InfluxDB 源,然后在最右侧“活动的 Kapacitor”标题下的列中,单击 **添加配置**。将加载带有默认设置的“配置 Kapacitor”页面。

在“连接详细信息”分组中,设置 Kapacitor URL 和此 Kapacitor 的名称的值,如果需要,还可以添加用户名和密码凭据。

单击 **连接** 按钮。如果“连接详细信息”正确,将显示成功消息,并出现一个新部分“配置警报端点”。

如果使用了第三方警报服务或 SMTP,请在“配置警报端点”部分更新第三方设置。
再次单击 **配置** 图标返回“配置”页面。新的 Kapacitor 实例应列在“活动的 Kapacitor”标题下。

从 Chronograf 管理 Kapacitor
事件处理程序
可以通过 Chronograf 修改的一组关键 Kapacitor 功能是第三方警报处理程序。
修改第三方警报处理程序
在“配置”表中找到 Influxdata 实例及其关联的 Kapacitor 实例,单击 Kapacitor 下拉菜单,然后单击 **编辑图标**。

单击需要更改的处理程序。其选项卡将变为活动状态。

编辑相关字段,然后单击 **更新配置** 按钮。

如果配置属性有效,将出现一条成功消息。

可以通过 Kapacitor HTTP API 验证更新的配置。例如,要验证更新的 SMTP 配置,请检查端点
/kapacitor/v1/config/smtp(例如:https://:9092/kapacitor/v1/config/smtp) 处的 JSON 文档。
有关更多信息,请参阅 使用 HTTP API 配置 部分。
在 Chronograf 中创建警报
Chronograf 中的警报对应于 Kapacitor 任务,这些任务专门设计用于在数据流值升至或降至指定阈值以上或以下时触发警报。请注意,Chronograf 仅管理最常见的警报用例。这些包括:
- 具有静态上限、下限和范围的阈值。
- 基于单位或百分比变化的相对阈值。
- 心跳开关。
更精细的警报和其他任务需要直接在 Kapacitor 中定义。
基于 Telegraf 提供的 CPU 测量值创建基本的静态阈值警报
通过单击左侧导航栏中的 **警报** 图标,然后单击弹出菜单中的 **创建**,打开“警报规则”选项卡。将加载警报规则(Kapacitor 任务)表。这些是从 Kapacitor 查询的。

单击 **创建规则** 按钮。将加载“创建/编辑规则”页面。

注意左上角的规则名称编辑框,其中包含字符串 **无标题规则**。将此名称更改为要创建的警报的合理名称。

在 **选择时间序列** 部分,选择一个数据库、一个度量和一个要监控的字段。请注意,在度量中可以选择一个或多个标签。但是,选择特定标签不是必需的。还请注意,在每个标签旁边,可以选择用于 分组依据 子句的标签。

在 **规则条件** 部分,在此示例中,保持选中 **阈值** 标签。在 是 子句的下拉列表框中,选择 *小于*。然后在数量的编辑框中输入值 *80*,对于此字段而言,表示百分比。

在 **警报消息** 部分,保持 **smtp** 选项卡。请注意,这需要正确配置 SMTP 处理程序。更新收件人和消息正文的值。另请注意,底部或 *模板* 文本区域接受其正下方建议的模板字段。单击模板字段将其添加到模板中。

当三个关键部分配置正确后,单击 **保存规则** 按钮。将再次加载规则列表。

新规则在列表中可见。可以通过单击其名称来打开它进行编辑。

也可以通过 Kapacitor 命令行客户端查看此规则。
示例 1 – 在 Kapacitor 中查看 Chronograf 警报
$ kapacitor list tasks
ID Type Status Executing Databases and Retention Policies
batch_load_test batch enabled true ["telegraf"."autogen"]
chronograf-v1-b12b2554-cf38-4d7e-af24-5b0cd3cecc54 stream enabled true ["telegraf"."autogen"]
cpu_alert stream disabled false ["telegraf"."autogen"]
top_scores stream disabled false ["game"."autogen"]Chronograf 生成的任务(或警报规则)会与 chronograf 和版本令牌(例如 v1)一起列出,后面跟着一个 UUID。
通过 Chronograf 管理任务
通过 Chronograf,可以启用、禁用和删除 Kapacitor 任务。这适用于甚至不是作为 Chronograf 警报生成的任务。
通过 Chronograf 启用任务
- 在 **警报规则** 表中找到任务。
- 在 **启用** 列中,将任务的状态从 *禁用* 切换到 *启用*。页面顶部将显示指示状态更改的消息。

还可以通过列出命令行客户端的任务并检查 状态 列来在 Kapacitor 端验证状态更改。
示例 2 – 在 Kapacitor 中查看通过 Chronograf 启用的任务
$ kapacitor list tasks
ID Type Status Executing Databases and Retention Policies
batch_load_test batch enabled true ["telegraf"."autogen"]
chronograf-v1-b12b2554-cf38-4d7e-af24-5b0cd3cecc54 stream enabled true ["telegraf"."autogen"]
chronograf-v1-fa28d99e-e875-4521-8bd2-463807522bbd stream enabled true ["co2accumulator"."autogen"]
cpu_alert stream disabled false ["telegraf"."autogen"]
top_scores stream disabled false ["game"."autogen"]通过 Chronograf 禁用任务
- 在 **警报规则** 表中找到任务。参见上面的截图。
- 在 **启用** 列中,将任务的状态从 *启用* 切换到 *禁用*。页面顶部将显示指示状态更改的消息。
还可以通过列出命令行客户端的任务并检查 状态 列来在 Kapacitor 端验证状态更改。
示例 3 – 在 Kapacitor 中查看通过 Chronograf 禁用的任务
$ kapacitor list tasks
ID Type Status Executing Databases and Retention Policies
batch_load_test batch enabled true ["telegraf"."autogen"]
chronograf-v1-b12b2554-cf38-4d7e-af24-5b0cd3cecc54 stream enabled true ["telegraf"."autogen"]
chronograf-v1-fa28d99e-e875-4521-8bd2-463807522bbd stream disabled false ["co2accumulator"."autogen"]
cpu_alert stream disabled false ["telegraf"."autogen"]
top_scores通过 Chronograf 删除任务
- 在 **警报规则** 表中找到任务。
- 单击表中最后一列的 **删除** 按钮。页面顶部将显示一条消息,指示任务已被删除。

还可以通过列出命令行客户端的任务在 Kapacitor 端验证删除。
示例 4 – 验证通过 Chronograf 删除的任务
$ kapacitor list tasks
ID Type Status Executing Databases and Retention Policies
batch_load_test batch enabled true ["telegraf"."autogen"]
chronograf-v1-b12b2554-cf38-4d7e-af24-5b0cd3cecc54 stream enabled true ["telegraf"."autogen"]
cpu_alert stream disabled false ["telegraf"."autogen"]
top_scores stream disabled false ["game"."autogen"]注意:请记住,所有 Kapacitor 任务都可以通过 Chronograf 访问。在 Chronograf 中禁用、启用和删除任务时,应注意不要无意中更改与 Chronograf 警报无关的任务的状态或存在。
在 Chronograf 中查看警报任务
Chronograf 警报显示在“警报历史记录”页面中。
查看页面
在左侧导航栏中单击 **警报** 图标。将弹出菜单。
在弹出菜单中选择 **历史记录** 项。

将加载“警报历史记录”页面,其中包含一个表,显示在页面右上角的下拉过滤器定义的时段内发布的警报。

Kapacitor 任务和 Chronograf
在初次使用 TICKscripts 和 Kapacitor 任务时,检查 Chronograf 生成的任务可能会有启发性。
要查看生成的任务,请使用 kapacitor 客户端 show 命令打开它。
示例 5 – 在 Kapacitor 中显示 Chronograf 警报任务
$ kapacitor show chronograf-v1-b12b2554-cf38-4d7e-af24-5b0cd3cecc54
ID: chronograf-v1-b12b2554-cf38-4d7e-af24-5b0cd3cecc54
Error:
Template:
Type: stream
Status: enabled
Executing: true控制台输出包括一个 TICKscript 部分,显示用于创建任务的脚本。
示例 6 – Chronograf 警报任务的 TICKscript
// ...
var db = 'telegraf'
var rp = 'autogen'
var measurement = 'cpu'
var groupBy = []
var whereFilter = lambda: TRUE
var name = 'CPU USAGE'
var idVar = name + ':{{.Group}}'
var message = ' {{.ID}} is {{.Level}} for {{ index .Fields "value" }}'
var idTag = 'alertID'
var levelTag = 'level'
var messageField = 'message'
var durationField = 'duration'
var outputDB = 'chronograf'
var outputRP = 'autogen'
var outputMeasurement = 'alerts'
var triggerType = 'threshold'
var details = 'CPU usage is up. '
var crit = 80
var data = stream
|from()
.database(db)
.retentionPolicy(rp)
.measurement(measurement)
.groupBy(groupBy)
.where(whereFilter)
|eval(lambda: "usage_idle")
.as('value')
var trigger = data
|alert()
.crit(lambda: "value" < crit)
.stateChangesOnly()
.message(message)
.id(idVar)
.idTag(idTag)
.levelTag(levelTag)
.messageField(messageField)
.durationField(durationField)
.details(details)
.email('heinrich.faust@1808.io', 'valentin.faust@1808.io')
trigger
|influxDBOut()
.create()
.database(outputDB)
.retentionPolicy(outputRP)
.measurement(outputMeasurement)
.tag('alertName', name)
.tag('triggerType', triggerType)
trigger
|httpOut('output')
// ...
请注意,所有非通过方法调用生成的值都在方法调用中使用之前定义为变量。此外,管道被分为四部分,其中两部分导致变量赋值。变量 trigger 尤其值得关注。它获取警报流,然后首先将其写入 chronograf 数据库的 alerts 度量,然后再缓存到 Kapacitor 的 HTTP 服务器的某个端点。
在 Chronograf 的警报历史记录中查看任务的警报
不必在 Chronograf 中定义生成警报的 Kapacitor 任务,以便这些警报出现在 Chronograf 的 **警报历史记录** 中。它们只需将警报数据写入 InfluxDB 的 chronograf 数据库的 alerts 度量即可。
例如,基于 Telegraf 中 CPU 使用率的警报可以像上面显示的 Chronograf 生成的警报一样编写。名称可以更改,并且可以在 InfluxDBOut() 链接方法中的字段中使用字面值定义。
示例 7 – 为 Chronograf 警报历史记录配置的 influxDBOut
// ...
var name = 'CPU ALERTS FROM FUBAR'
// ...
var trigger = data
|alert()
// ...
trigger
|influxDBOut()
.create()
.database('chronograf')
.retentionPolicy('autogen')
.measurement('alerts')
.tag('alertName', name)
.tag('triggerType', 'custom')
/// ...
具有此 trigger 块的 TICKscript 可以定义如下。
$ kapacitor define cpu_alert_fubar -tick cpu_chron_alert.tick -type stream -dbrp "telegraf"."autogen"然后它将在 Chronograf 警报中可见。

启用它,然后对 CPU 添加人工负载。
while true; do i=0; done几分钟后,警报将出现在 Chronograf 的 **警报历史记录** 表中。

为了使警报在 Chronograf 中可见,重要的是要将 alertName 键值的 tag 添加到 influxDBOut() 写入的数据点,以及 triggerType 键值的 tag。
编写可在 Chronograf 中编辑的任务
要使任务在 Chronograf 中可编辑,它需要包含 Chronograph 警报任务生成的变量。这些变量在 示例 6 中可见。该任务还应该是像 Chronograf 生成的简单警报任务。通过包含变量和 infludDBOut() 链接方法,该任务将可通过 Chronograf 警报规则 表中的链接进行访问。

通过单击链接,将加载 编辑警报 页面,其中包含任务。å

总结
本文档介绍了将 Kapacitor 实例添加到 Chronograf,然后使用该实例创建、启用、编辑、禁用和删除警报任务的基础知识。Chronograf 生成的警报将作为任务直接写入 Kapacitor 实例,在那里可以使用 kapacitor 命令行客户端应用程序列出、审查和进一步管理它们。
此外,还介绍了如何启用 Kapacitor 任务将警报写入 InfluxDB 的 chronograf 数据库,以便它们将在 Chronograf 的 *警报历史记录* 中可见。通过将 Chronograf 变量添加到 *简单* 警报 TICKscript,该任务将在 Chronograf 中可编辑。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Kapacitor 和本文档提供反馈和错误报告。要获取支持,请使用以下资源: