Как сказано в комментариях, вы можете использовать узел боковой загрузки для достижения этого.
Допустим, вы хотите убедиться, что ваши серверы 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
Критическое предупреждение будет активировано, если value
, и, следовательно, numMeasurements
превысит 10, а тег имени хоста будет равен influxdb
ИЛИ, если value
превысит 100.
Существует пример в документации по обработке запланированных простоев с использованием боковой загрузки
Кроме того, я создал пример, доступный на github, используя docker-compose
Обратите внимание, что есть пример с примером: оповещения закрываются из-за динамически генерируемой второй базы данных. Но этого должно быть достаточно, чтобы показать, как подойти к проблеме.