|
btpd
|
Исторически мы используем три иерархии предоставления информации - это сервис-операция, сервис-сервер-операция и скрипт-сервис-операция, но вы можете использовать любой набор иерархий, хранилище имеет плоскую структуру ключ(строка)-значение(график) и иерархии можно определять именами ключей (а можно и не определять, хранилище не накладывает никаких ограничений - это вопрос удобства)
Однако, на эту иерархию завязан текущий web-интерфейс btpd, если вы используете его, то необходимо следовать этой концепции.
Для примера рассмотрим набор серверов memcache1..**memcache7**, все вместе они представляют сервис memcache с набором операция set, get и т.д. И есть некоторый скрипт, например MyScript1.php который измерил время ответа на get-запрос от сервера memcache2, допустим это 200мс. В рамках этой концепции скрипт отправить измеренный интервал в три счетчика (графика), а именно:
Для того чтобы отличить скрипты от сервисов для формирования имен используем префиксы service или script, а в качестве разделителя двойную тильду **~~**. Это все требования клиента btp (web-интерфейса). Если вы разрабатываете свой клиент, то набор иерархий и разделитель могут быть произвольными (разделитель можно указать в запросе на выборку данных).
Таким образом у нас должен получится следующий набор для отправку на сервер btp:
Именно в таком виде ключи (имена графиков) сохраняются в хранилище btp (сами данные в другом виде). Данные для отображения можно получить с помощью get или multi_get, а выборку ключей tree или select
В рамках этой концепции нельзя посмотреть какую нагрузку дает скрипт MyScript1.php на конкретный сервер, например на тот-же memcache2, а только на весь сервис в целом memcache. Можно добавить четвертый счетчик, например "script~~MyScript1.php~~memcache~~memcache2~~get", но вот только web-интерфейс не умеет с ним работать. В качестве альтернативы можно имя сервера добавить к имени операции, например так:
Но нужно иметь ввиду, что к списку операций для скриптов в интерфейсе, добавятся варианты для каждого сервера, не факт что это будет юзабельно при большом количестве серверов, ну и соответственно объем данных для хранения будет больше.
В btp можно отправлять не только тайминги и не обязательно в миллисекундах. Для сервера это просто числа, а текущий web-интерфейс просто отображает их как миллисекунды, но вы можете отправляять туда любые числа, например размер запроса и ответа, интерфейс отобразит их как временные интервалы, но по имени счетчика, вы сможете понять, что на самом деле это байты (или попугаи). Например пусть запрос к memcache имеет размер 60 байт, а полученный ответ 4000 байт (иногда это важно знать, потому что зачастую время обработки запроса зависит от объема переданных данных), тогда набор счетчиков, например, будет таким:
Тогда график с операциями get это время выполнения запроса, а get:write и get:read - это размер запроса и ответа в байтах. Но учитывайте, что объем хранимых данных также увеличится в три раза.