Kapacitor - andyceo/documentation GitHub Wiki
Документация верна для Kapacitor v1.5.x
- tasks
- stream
- batch
- recordings
- replays - проигрывает recording на task
- alerts
- events
- handlers
- configs (overrides)
- storage (inner storage rebuild)
- logging (technical preview only)
- testing services (тестирует influxdb, slack, etc)
- EXPOSED PORTS: 9092 (HTTP API, через этот же порт приходят данные в Kapacitor)
- VOLUMES:
/var/lib/kapacitor
в Dockerfile, но могут быть и другие
Если управляем Kapacitor через конфигурационный файл и первоначальной загрузкой (папка, откуда Kapacitor может взять шаблоны, задачи), то придется прокинуть и такой том: /etc/kapacitor/load
(см. Load directory service). Как альтернатива, можно управлять с помощью переменных окружения, а задачи и алерты задавать через HTTP API.
See:
- https://github.com/influxdata/influxdata-docker/blob/master/kapacitor/1.5/alpine/Dockerfile
- https://docs.influxdata.com/kapacitor/v1.5/introduction/install-docker/
Порт: 9092, прокинут (EXPOSE) в контейнере
Есть HTTP API, по которому можно ставить задачи Kapacitor и вообще взаимодействовать с ним. Клиент командной строки использует этот же API. В качестве параметров для GET-запросов используются параметры запроса (query paramaters), а для не-GET (POST и других) запросов нужно в теле запроса передать json, который бы содержал нужные параметры.
Примеры:
- PING:
curl -X GET -v http://kapacitor:9092/kapacitor/v1/ping
- Список задач (tasks):
curl -X GET -v http://kapacitor:9092/kapacitor/v1/tasks
- Список шаблонов (templates):
curl -X GET -v http://kapacitor:9092/kapacitor/v1/templates
- Список записей (recordings):
curl -X GET -v http://kapacitor:9092/kapacitor/v1/recordings
- Список записей (replays):
curl -X GET -v http://kapacitor:9092/kapacitor/v1/replays
- Список тем (topics) предупреждений (alerts):
curl -X GET -v http://kapacitor:9092/kapacitor/v1/alerts/topics
- Узнать текущую конфигурацию:
curl -X GET -v http://kapacitor:9092/kapacitor/v1/config
- Создать storage backup:
curl http://kapacitor:9092/kapacitor/v1/storage/backup > kapacitor.db
- Восстановить storage backup:
cp kapacitor.db ~/.kapacitor/kapacitor.db
- т.е. простое копирование файла БД в нужную папку - Список сервисов, которые можно протестировать:
curl -X GET -v http://kapacitor:9092/kapacitor/v1/service-tests
- Узнаем необходимые параметры для тестирования сервиса Slack:
curl -X GET -v http://kapacitor:9092/kapacitor/v1/service-tests/slack
- Протестируем сервис Slack (с параметрами по умолчанию):
curl -X POST -d "{}" -v http://kapacitor:9092/kapacitor/v1/service-tests/slack
- Показать Debug vars:
curl -X GET -v http://kapacitor:9092/kapacitor/v1/debug/vars
- Показать все пути API (routes):
curl -X GET -v http://kapacitor:9092/kapacitor/v1/:routes
Источник: Kapacitor HTTP API
Одинарные и двойные кавычки работают по-разному! Значения надо брать в одинарные кавычки, названия полей - в двойные.
Ссылки:
- Introducing the TICKscript language
- TICKscript syntax
- Примеры в исходниках Kapacitor
- Примеры в исходниках Kapacitor - tick-скрипты
Для работы Kapacitor потребуется указать админский (рутовый) аккаунт от InfluxDB, для того, чтобы Kapacitor мог управлять подписками и подписываться самостоятельно на новые базы. Можно настроить Kapacitor так, чтобы ему не требовались админские права, но в этом случае придется управлять подписками самостоятельно.
Лучше брать данные из InlfuxDB для Kapacitor через механизм подписок (SUBSCRIBES), чем натравливать Telegraf на Kapacitor и затем из Kapacitor передавать данные для сохранения в InfluxDB (это возможно сделать), потому что Kapacitor плохо работает с out-of-order данными (идущими не по-порядку).
LogNode непонятно куда пишет логи (никуда не пишет), лучше для отладки использовать |httpOut('id')
, а потом дернуть http://kapacitor-host:9092/kapacitor/v1/tasks/<task_id>/<httpOut_id>
чтобы увидеть что проходит через эту ноду.
Также, для целей отладки, можно использовать отладочный |InfluxDBOut()
stream
|from()
.database('telegraf')
.measurement('cpu')
.groupBy(*)
.where(lambda: "cpu" == 'cpu-total')
|eval( lambda: 100.0 - "usage_idle" )
.as('usage_util')
.keep()
.quiet()
|InfluxDBOut()
.create()
.database('debugging')
Ссылки: