Skip to content

Kapacitor

andyceo edited this page Mar 19, 2019 · 5 revisions

Документация верна для 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)

Kapacitor Docker Hub Container

  • EXPOSED PORTS: 9092 (HTTP API, через этот же порт приходят данные в Kapacitor)
  • VOLUMES: /var/lib/kapacitor в Dockerfile, но могут быть и другие

Если управляем Kapacitor через конфигурационный файл и первоначальной загрузкой (папка, откуда Kapacitor может взять шаблоны, задачи), то придется прокинуть и такой том: /etc/kapacitor/load (см. Load directory service). Как альтернатива, можно управлять с помощью переменных окружения, а задачи и алерты задавать через HTTP API.

See:

Kapacitor HTTP API

Порт: 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

TICKScript

Одинарные и двойные кавычки работают по-разному! Значения надо брать в одинарные кавычки, названия полей - в двойные.

Ссылки:

Разное

Для работы 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')

Ссылки:

Sidebar is under construction

Clone this wiki locally