amarao (amarao_san) wrote,
amarao
amarao_san

Category:

интеграционное тестирование мониторинга

Итак, мониторинг (MVP) на kapacitor/influx/telegaf написан, все нужные ручки в нужные места сделаны.

Но тут мы получаем извечную проблему: а откуда мы знаем, что оно работает? Заметим, kapacitor - это вполне себе рантайм для исполнения языка программирования, а это означает, что его точно надо тестировать.

Хорошая новость - у нас разделены данные и их обработка - т.е. при необходимости мы можем reply данные (силами капаситора), или даже записать их в influx.

При этом у нас есть следующие результаты:
1) Появление alert'ов
2) Появление данных в influx

Я пока игнорирую вопрос с работой хэндлеров, потому что во-первых они не тьюринг-полные, а во-вторых они проще.

Так что предварительная модель тестирования выглядит так:
Для каждого теста мы конфигурируем kapacitor без продакшен event-handler'ов, добавляем тестовые handler'ы (в тривиальном виде - запись в файл, например).
Дальше мы вызываем нужные reply для kapacitor'а или пишем в influx известные последовательности данных, и ждём результата (данные в influx'е или данные в файле, куда хэнлер пишет).
После каждого теста, разумеется, teardown (заключающийся в удалении конфигурации kapacitor и потирании всего из influx и результирующих файлов). Конфигурацию надо удалять, чтобы сбросить все счётчики для всех deadman'ов и прочих flap detector'ов.

Я вижу набор проблем, как в районе самих тестов, так и в районе lore с тем, где всё это хранить и в каком виде записывать данные для загрузки в influx/reply.

После активного обсуждения было решено:
1) Простые скрипты (stream -> alert и batch -> alert) тестируются kapacitor-unit или чем-то подобным.
2) Сложные скрипты (loop & influxdbout) тестируются интеграционным тестированием kapacitor-influx (в контейнере, например).
3) Ко всему этому делается несколько интеграционных тестов между будущим продакшеном и kapacitor'ом (сквозь телеграф и инфлюкс), которые запускаются как одна из стадий установки. Стадия ломает то, что устанавливаем, ждёт сообщения "сломано", чинит, ждёт сообщения "работает", чистит за собой.
Tags: kapacitor
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments