加载目录服务
加载目录服务允许基于文件的 Kapacitor 任务、模板和主题处理程序定义在启动时或当 SIGHUP 信号发送到进程时加载。
配置
加载目录服务配置在 Kapacitor 配置文件的 [load]
部分中指定。
[load]
enabled = true
dir="/path/to/directory"
dir
指定定义文件所在的目录。
该服务将尝试从三个子目录加载定义。
tasks
目录应包含任务 TICKscript 和关联的模板化任务定义文件(YAML 或 JSON)。
templates
目录应包含模板化 TICKscript。
handlers
目录将包含 YAML 或 JSON 格式的主题处理程序定义。
任务
任务文件必须放置在加载服务目录的 tasks
子目录中。任务 TICKscript 基于以下方案指定
id
- 不带.tick
扩展名的文件名type
- 由任务的内省确定(流式或批量)dbrp
- 使用dbrp
关键字后跟指定的数据库和保留策略定义
在以下示例中,TICKscript 将为 dbrp telegraf.autogen
创建一个名为 my_task
的 stream
任务。
// /path/to/directory/tasks/my_task.tick
dbrp "telegraf"."autogen"
stream
|from()
.measurement('cpu')
.groupBy(*)
|alert()
.warn(lambda: "usage_idle" < 20)
.crit(lambda: "usage_idle" < 10)
// Send alerts to the `cpu` topic
.topic('cpu')
任务模板
模板文件必须放置在加载服务目录的 templates
子目录中。任务模板根据以下方案定义
id
- 不带 tick 扩展名的文件名type
- 由任务的内省确定(流式或批量)dbrp
- 使用dbrp
关键字后跟指定的数据库和保留策略定义
以下 TICKscript 示例将为 dbrp telegaf.autogen
创建一个名为 my_template
的 stream
模板。
// /path/to/directory/templates/my_template.tick
dbrp "telegraf"."autogen"
var measurement string
var where_filter = lambda: TRUE
var groups = [*]
var field string
var warn lambda
var crit lambda
var window = 5m
var slack_channel = '#alerts'
stream
|from()
.measurement(measurement)
.where(where_filter)
.groupBy(groups)
|window()
.period(window)
.every(window)
|mean(field)
|alert()
.warn(warn)
.crit(crit)
.slack()
.channel(slack_channel)
模板化任务
模板化任务文件必须放置在加载服务目录的 tasks
子目录中。模板化任务根据以下方案定义
id
- 不带yaml
、yml
或json
扩展名的文件名dbrps
- 如果未在模板中指定,则为必需template-id
- 必需vars
- 模板变量列表
在此示例中,模板化任务 YAML 文件为 dbrp telegraf.autogen
创建一个名为 my_templated_task
的 stream
任务。
# /path/to/directory/tasks/my_templated_task.tick
dbrps:
- { db: "telegraf", rp: "autogen"}
template-id: my_template
vars:
measurement:
type: string
value: cpu
where_filter:
type: lambda
value: "\"cpu\" == 'cpu-total'"
groups:
type: list
value:
- type: string
value: host
- type: string
value: dc
field:
type: string
value : usage_idle
warn:
type: lambda
value: "\"mean\" < 30.0"
crit:
type: lambda
value: "\"mean\" < 10.0"
window:
type: duration
value : 1m
slack_channel:
type: string
value: "#alerts_testing"
也可以使用 JSON 创建相同的任务,如本例所示
{
"dbrps": [{"db": "telegraf", "rp": "autogen"}],
"template-id": "my_template",
"vars": {
"measurement": {"type" : "string", "value" : "cpu" },
"where_filter": {"type": "lambda", "value": "\"cpu\" == 'cpu-total'"},
"groups": {"type": "list", "value": [{"type":"string", "value":"host"},{"type":"string", "value":"dc"}]},
"field": {"type" : "string", "value" : "usage_idle" },
"warn": {"type" : "lambda", "value" : "\"mean\" < 30.0" },
"crit": {"type" : "lambda", "value" : "\"mean\" < 10.0" },
"window": {"type" : "duration", "value" : "1m" },
"slack_channel": {"type" : "string", "value" : "#alerts_testing" }
}
}
主题处理程序
主题处理程序文件必须放置在加载服务目录的 handlers
子目录中。
id: handler-id
topic: cpu
kind: slack
match: changed() == TRUE
options:
channel: '#alerts'
此页是否对您有帮助?
感谢您的反馈!