在 Chronograf 中使用 Kapacitor
目录
概述
作为 TICK 堆栈 的一部分,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
处的 JSON 文档(例如:https://#:9092/kapacitor/v1/config/smtp
)。
有关更多信息,请参阅 使用 HTTP API 进行配置 部分。
在 Chronograf 中创建警报
Chronograf 中的警报对应于专门设计用于在数据流值升高或降低到指定阈值以下时触发警报的 Kapacitor 任务。 请注意,只有最常见的警报用例可以通过 Chronograf 进行管理。 这些包括
- 具有静态上限、下限和范围的阈值。
- 基于单位或百分比变化的相对阈值。
- 死信开关。
更精细的警报和其他任务需要在 Kapacitor 中直接定义。
要创建基于 Telegraf 提供的 CPU 指标的基本静态阈值警报
通过单击左侧导航栏中的警报图标,然后在弹出菜单中单击创建,打开“警报规则”选项卡。 将加载警报规则(Kapacitor 任务)表。 这些是从 Kapacitor 查询的。
单击创建规则按钮。 将加载“创建/编辑规则”页面。
请注意,在左上方,规则名称编辑框中包含字符串未命名规则。 将此名称更改为要创建的警报的合理名称。
在选择时间序列部分中,选择要监控的数据库、指标和字段。 请注意,在指标中可以选择一个或多个标签。 但是,不需要选择特定标签。 另请注意,在每个标签旁边,可以选择用于分组依据子句的标签。
在规则条件部分中,对于此示例,保持选中标签阈值。 在 is 子句的下拉列表框中,选择小于。 并且,在数量的编辑框中,输入值 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 的警报历史记录中查看来自任务的警报
生成警报的 Kapacitor 任务不必在 Chronograf 中定义,这些警报才会出现在 Chronograf 的警报历史记录中。 它们只需将警报数据写入 InfluxDB 中 chronograf
数据库的 alerts
指标即可。
例如,可以编写类似于上面显示的 Chronograf 生成的警报的基于 Telegraf 中 CPU 使用率的警报。 可以更改名称,并且可以使用文字值定义 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
以及键值为 triggerType
的 tag
添加到 influxDBOut()
写入的数据点。
编写可在 Chronograf 中编辑的任务
为了使任务可以在 Chronograf 中编辑,它需要包含 Chronograf 警报任务生成的变量。 这些变量在 示例 6 中可见。 该任务还应该是一个简单的警报任务,例如 Chronograf 生成的那些任务。 通过包含变量和链接方法 infludDBOut()
,然后可以通过 Chronograf 警报规则表中的链接访问该任务。

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

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