在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数据库,请参阅Getting started with Kapacitor或Configuring Kapacitor指南。要在Chronograf中定义一个InfluxDB数据库,请参阅Chronograf文档中的InfluxDB setup。
添加一个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文档 (例如:http://localhost:9092/kapacitor/v1/config/smtp).
有关更多信息,请参阅部分 Configure with the HTTP API。
在Chronograf中创建警报
Chronograf中的警报对应于专门设计的Kapacitor任务,用于在数据流值超过或低于指定阈值时触发警报。请注意,通过Chronograf只能管理最常见的警报使用案例。这些包括:
- 具有静态上限、下限和范围的阈值。
- 基于单位或百分比变化的相对阈值。
- 死手开关。
更精细的警报和其他任务需要在Kapacitor中直接定义。
根据Telegraf提供的CPU测量创建一个基本的静态阈值警报:
通过单击左侧导航栏中的 Alerting 图标,然后在弹出菜单中单击 Create,打开告警规则选项卡。将加载告警规则(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禁用任务:
- 在 警报规则 表中定位任务。请参见上面的截屏。
- 在启用列中,将任务的状态从启用切换到禁用。一个指示状态变化的消息将出现在页面顶部。
状态的变化也可以通过命令行客户端列出任务并检查Status列在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 测量中。
例如,基于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任务将警报写入chronograf数据库中的InfluxDB,以便它们可以在Chronograf的警报历史中可见。通过在简单的警报TICKscript中添加Chronograf变量,该任务将在Chronograf中可编辑。