正如评论中所说,您可以使用sideload 节点来实现这一点。
假设你想确保你的 InfluxDB 服务器没有过载。您可能希望默认允许 100 次测量。仅在一台服务器上,恰好获得大量数据点,您希望将其限制为 10(_internal
数据库很容易超过该值,但对我们的示例有好处)。
鉴于以下节选脚本
var data = stream
|from()
.database(db)
.retentionPolicy(rp)
.measurement(measurement)
.groupBy(groupBy)
.where(whereFilter)
|eval(lambda: "numMeasurements")
.as('value')
var customized = data
|sideload()
.source('file:///etc/kapacitor/customizations/demo/')
.order('hosts/host-{{.hostname}}.yaml')
.field('maxNumMeasurements',100)
|log()
var trigger = customized
|alert()
.crit(lambda: "value" > "maxNumMeasurements")
以及服务器的名称,但influxdb
文件/etc/kapacitor/customizations/demo/hosts/host-influxdb.yaml
如下所示
maxNumMeasurements: 10
如果超过 10 并且主机名标记等于OR 如果超过 100 value
,则会触发严重警报。numMeasurements
influxdb
value
在使用侧载处理计划停机时间的文档中有一个示例
此外,我使用 docker-compose 在 github 上创建了一个可用的示例
请注意,该示例有一个警告:由于动态生成了第二个数据库,因此警报会发生变化。但这应该足以说明如何解决问题。