btpd
|
Создает и конфигурирует клиента к btp. Конфигурация в формате JSON. Эта функция должна быть вызвана первой.
Если за измеряемый интервал времени было произведено несколько операций, то их количество передаем в параметре count (зеленый график в бтп). Не имеет особого смысла использовать эту возможность для оптимизации сетевого траффика, так так текущая реализация умеет производить агрегацию данных аналогично серверу бтп. Можно вызвать в цикле миллион раз пару btp_create_meter - btp_release_meter, данные отправятся на сервер уже в агрегированном (компактом) состоянии только при финальном автоматическом вызове btp_pushout после завершения работы скрипта.
При замере запросов к JSONRPC-демонам или другим внешним системам, в параметре write_size можно передать размер запроса в байтах. Если этот параметр не нулевой, то будет создан еще один график с именем операции op:write (op название операции) где в перцентилях будут показаны размеры (например в размер байтах запроса JSONRPC к демону), а count будет дублировать основной count (число запросов), тогда по галочке "мощность" можно будет отсортировать скрипты по траффику. В конфигурации можно задать, чтобы эти графики размеров отправлялись на отдельный сервер бтп. Так же будет создан график op:traff (не реализовано) аналогичный op:write, но на графике count будет суммарный траффик за интервал (например на минутном графике это суммарный трафик за минуту)
В общем во write_size можно передавать любых попугаев (размер обрабатываемого файла или массива), но в этом случае суффикс **:write** будет сбивать с толку. Нужно придумать или более общее название, либо использовать для попугаев другие функции.
Для замера входящего трафика (размеры ответов на запросы) значения передаются в btp_release_meter параметром read_size (к моменту вызова этого метода вы уже знаете размер ответа на запрос)
При вызове btp_create_meter("script1", "service1", "server1", "op1") будут созданы три метрики (как и раньше):
Если первым параметром передать пустую строку btp_create_meter("", "service1", "server1", "op1") (без скрипта), то две:
Такой формат нужен только для корректного отображения списка доступных графиков на http://btp.stat1.lan/, но сам сервер не налагает ограничений на формат ключей. Для отправки в произвольном формате ключа первые три параметра нужно задать пустой строкой:
Для работы с ключами произвольного формата нужен отдельный инстанс сервера БТП и клиент который может с ним работать. Недопустимо в таком формате отправлять данные на сервер с графиками с которым заработает http://btp.stat1.lan/
Если задан ненулевой параметр write_size то будут автоматом созданы еще шесть метрик:
А если задан ненулевой параметр read_size в btp_release_meter то еще три:
При этом если write_size==0, а read_size!=0 то метрики **:traff*** также будут созданы. Как видно, что если так делать как в предыдущей версии расширения то, потенциально, трафик может увеличиться в четыре раза (а на самом деле и более), но в данном решении:
script~~script1~~service1~~server1~~op1:read
передаем 1~2~3~4~5
, а легенда в отдельном массиве ["script","script1","service1","server1","op1:read"]
для всех метрик в пакете, где очень много дублирующихся сущностей
Завершает измерение временного интервала и записывает результат в соответствующие метрики. Данные не отправляются на сервер до вызова btp_pushout, а также могут быть специальным образом агрегированы.
Завершает измерение временного интервала, задает имена и записывает результат в соответствующие метрики. Данные не отправляются на сервер до вызова btp_pushout, а также могут быть специальным образом агрегированы. Работает аналогично btp_release_meter, но принимает имена для метрики, т.е. на момент вызова btp_create_meter2 они еще небыли известны
Отправляет все данные на сервер одним или несколькими пакетами udp. Вызывается автоматически при завершении работы скрипта.
Непосредственно записывают данные для метрики (не нужно вызывать btp_release_meter), побочные операции для размеров (типа op:write) не создаются. Используется во всех случаях когда нет необходимости измерять интервал и все данные для отправки в бтп уже готовы (наример текущая загруженность CPU или размер свободной памяти и пр. )