Kapacitor回环节点
kapacitorLoopback 节点将数据写回到 Kapacitor 流中。要将数据写入远程 Kapacitor 实例,请使用 InfluxDBOutNode。
示例:
|kapacitorLoopback()
.database('mydb')
.retentionPolicy('myrp')
.measurement('errors')
.tag('kapacitor', 'true')
.tag('version', '0.2')
注意无限循环
可以使用KapacitorLoopback节点创建无限循环。请注意确保您不要将任务连接在一起,从而创建循环。
避免多个订阅之间的名称冲突
在使用KapacitorLoopback节点时,请勿在多个InfluxDB实例或集群中订阅同名的数据库和保留策略。如果Kapacitor订阅了多个InfluxDB实例,请确保每个数据库和保留策略组合是唯一的。例如:
influxdb_1
└─ db1/rp1
influxdb_2
└─ db2/rp2
可用统计数据:
points_written: 写回Kapacitor的点数
构造函数
| 链式方法 | 描述 |
|---|---|
| kapacitorLoopback ( ) | 创建一个kapacitor回路节点,该节点将数据作为流发送回Kapacitor。 |
属性方法
| 设置器 | 描述 |
|---|---|
database ( value string) | 数据库的名称。 |
measurement ( value string) | 测量的名称。 |
| quiet ( ) | 抑制此节点的所有错误日志事件。 |
retentionPolicy ( value string) | 保留策略的名称。 |
tag ( key string, value string) | 将静态标签添加到所有数据点。标签可以被多次调用。 |
链式调用方法
属性
属性方法修改调用节点的状态。它们不会向管道中添加另一个节点,并始终返回对调用节点的引用。属性方法使用.运算符标记。
数据库
数据库的名称。
kapacitorLoopback.database(value string)
测量
测量的名称。
kapacitorLoopback.measurement(value string)
安静
抑制来自此节点的所有错误日志事件。
kapacitorLoopback.quiet()
保留策略
保留策略的名称。
kapacitorLoopback.retentionPolicy(value string)
标签
为所有数据点添加一个静态标签。
标签可以被多次调用。
kapacitorLoopback.tag(key string, value string)
链式调用方法
链式方法在调用节点的子节点中创建一个新的节点。它们不会修改调用节点。链式方法使用 | 运算符标记。
死者
用于在低吞吐量时创建警报的辅助函数,也称为死手开关。
- 阈值:如果吞吐量在点/区间中下降到阈值以下,则触发警报。
- 间隔:检查吞吐量的频率。
- 表达式:可选的表达式列表,供评估使用。对于时间警报非常有用。
示例:
var data = stream
|from()...
// Trigger critical alert if the throughput drops below 100 points per 10s and checked every 10s.
data
|deadman(100.0, 10s)
//Do normal processing of data
data...
上面的内容等同于这个示例:
var data = stream
|from()...
// Trigger critical alert if the throughput drops below 100 points per 10s and checked every 10s.
data
|stats(10s)
.align()
|derivative('emitted')
.unit(10s)
.nonNegative()
|alert()
.id('node \'stream0\' in task \'{{ .TaskName }}\'')
.message('{{ .ID }} is {{ if eq .Level "OK" }}alive{{ else }}dead{{ end }}: {{ index .Fields "emitted" | printf "%0.3f" }} points/10s.')
.crit(lambda: "emitted" <= 100.0)
//Do normal processing of data
data...
可以通过“deadman”配置部分全局配置id和message警报属性。
由于AlertNode是最后一部分,可以像往常一样进一步修改。 示例:
var data = stream
|from()...
// Trigger critical alert if the throughput drops below 100 points per 10s and checked every 10s.
data
|deadman(100.0, 10s)
.slack()
.channel('#dead_tasks')
//Do normal processing of data
data...
您可以指定额外的lambda表达式,以进一步限制何时触发死手按钮。 示例:
var data = stream
|from()...
// Trigger critical alert if the throughput drops below 100 points per 10s and checked every 10s.
// Only trigger the alert if the time of day is between 8am-5pm.
data
|deadman(100.0, 10s, lambda: hour("time") >= 8 AND hour("time") <= 17)
//Do normal processing of data
data...
kapacitorLoopback|deadman(threshold float64, interval time.Duration, expr ...ast.LambdaNode)
返回: AlertNode
统计
创建一个新的数据流,其中包含节点的内部统计信息。 间隔表示根据实时多长时间发出一次统计信息。 这意味着间隔时间与源节点接收的数据点次数无关。
kapacitorLoopback|stats(interval time.Duration)
返回结果: StatsNode