文档文档

加载目录服务

加载目录服务允许基于文件的 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_taskstream 任务。

// /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_templatestream 模板。

// /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 - 不带 yamlymljson 扩展名的文件名
  • dbrps - 如果未在模板中指定,则为必需
  • template-id - 必需
  • vars - 模板变量列表

在此示例中,模板化任务 YAML 文件为 dbrp telegraf.autogen 创建一个名为 my_templated_taskstream 任务。

# /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'

此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像现在一样使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源现已推出公开 Alpha 版

InfluxDB 3 开源现在可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版的一部分。

InfluxDB 3 Core 是我们新的开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何入门的更多信息,请查看