Это клиентская библиотека Delphi для Prometheus, похожая на библиотеки, созданные для других языков.
Клиентская библиотека Prometheus delphi - это набор классов, которые позволяют вам приказывать ваши приложения Delphi с помощью метрик Prometheus .
Это позволяет вам придать ваш код Delphi пользовательскими метриками и предоставляет некоторые встроенные и готовые к использованию метрик.
Библиотека также поддерживает текстовый формат экспозиции Prometheus, который можно настроить и предоставить доступным через конечную точку HTTP в экземпляре вашего веб -приложения с использованием конкретных среднихворсов или непосредственно вызовов экспортера текста.
Prometheus-это популярный инструмент мониторинга с открытым исходным кодом, который широко используется в современных средах программного обеспечения. Он обеспечивает мощную систему для сбора и анализа метрик из различных источников, включая приложения, серверы и другие системы.
Чтобы эффективно использовать Prometheus , вам нужна клиентская библиотека, реализованная на вашем любимом языке программирования, который может быть интегрирован в ваши приложения, чтобы выявить соответствующие метрики на сервер Прометея.
Здесь мы обсудим клиентскую библиотеку для Prometheus, написанную для Embarcadero delphi.
Клиентская библиотека Prometheus delphi предлагает ряд функций , которые делают его мощным и гибким инструментом для мониторинга приложений Delphi с использованием Prometheus.
Используя библиотеку, вы можете получить ценную информацию о производительности и поведении ваших приложений Delphi и принять решения для их улучшения.
Вот некоторые из поддерживаемых функций:
Чтобы начать с клиентской библиотеки Prometheus delphi, вам нужно выполнить эти шаги.
Установка выполняется с помощью команды boss install :
boss install marcobreveglieri/prometheus-client-delphiЕсли вы решите установить его вручную, загрузите исходный код из GitHub просто добавьте следующие папки в свой проект, в Project> Параметры> Компилятор ресурса> каталоги и условия> включить путь поиска файлов
prometheus-client-delphi/Source
Определите метрики, которые вы хотите отслеживать, используя соответствующие классы (см. Ниже).
Зарегистрируйте свои показатели в реестре коллекционеров по умолчанию или в собственном реестре для последующего обработки и экспорта.
Обновите свои метрики по мере необходимости, вызывая соответствующие методы, которые вы можете найти в экземпляре коллектора в зависимости от классов, на которых они основаны.
Вы можете экспортировать свои метрики, вызывая экспортер на основе текста или использовать готовое к использованию промежуточного программного обеспечения, которое нацелено на вашу любимую веб -структуру Delphi (для подробностей см. В разделе Middlewares ниже).
Prometheus Delphi Client поддерживает следующие типы метриков.
Счетчик - это кумулятивный показатель, который представляет собой единый монотонно увеличивающий счетчик, значение которого может только увеличиваться или сбросить до нуля при перезапуске. Например, вы можете использовать счетчик для представления количества обслуживаемых запросов, выполненных задач или ошибок.
Не используйте счетчик, чтобы раскрыть значение, которое может уменьшить. Например, не используйте счетчик для количества запущенных в настоящее время процессов; Вместо этого используйте датчик.
uses
Prometheus.Collectors.Counter;
begin
var LCounter := TCounter.Create( ' sample ' , ' Description of this counter ' );
LCounter.Inc(); // increment by 1
LCounter.Inc( 123 ); // increment by 123
end .Датчик - это показатель, который представляет собой единое числовое значение, которое может произвольно подниматься и вниз.
Датчики обычно используются для измеренных значений, таких как температура или использование тока памяти, а также «количество», которые могут подниматься и вниз, например, количество параллельных запросов.
uses
Prometheus.Collectors.Gauge;
begin
var LGauge := TGauge.Create( ' sample ' , ' Description of this gauge ' );
LGauge.Inc(); // increment by 1
LGauge.Inc( 123 ); // increment by 123
LGauge.Dec( 10 ); // decrement by 10
LGauge.SetTo( 123 ); // set value directly to 123
LGauge.SetDuration( // set value to duration of method execution
procedure
begin
// User code
end );
end .Наблюдения образцов гистограммы (обычно такие вещи, как продолжительность запроса или размеры ответов) и считают их настраиваемыми ведрами. Это также обеспечивает сумму всех наблюдаемых значений.
uses
Prometheus.Collectors.Histogram;
begin
LHistogram := THistogram.Create( ' Name of histogram metric ' , ' Help text for histogram metric ' );
// If buckets argument is not supplied, the default values will be used:
// [0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, INFINITE].
LHistogram.Observe( 0.01 );
LHistogram.Observe( 0.04 );
LHistogram.Observe( 1 );
end .Подобно гистограмме, краткие образцы наблюдений (обычно такие вещи, как продолжительность запроса и размеры ответа). Несмотря на то, что он также обеспечивает общее количество наблюдений и сумму всех наблюдаемых значений, он вычисляет настраиваемые квантили в окне скольжения.
*** !!! Под разработкой !!! ***
Вы также можете реализовать свои собственные индивидуальные метрики, унаследовав соответствующие классы ( TCollector или TsimpleCollector ).
Все метрики могут иметь ярлыки , позволяющие группировать связанные временные ряды.
Принимая счетчик в качестве примера:
uses
Prometheus.Collectors.Counter;
begin
var LCounter := TCounter
.Create( ' http_requests_handled ' , ' HTTP handled requests total ' , [ ' path ' , ' status ' ])
.Register();
end .Метрики с этикетками не инициализируются при объявлении, потому что клиент не может знать, какие значения может иметь этикетка. Рекомендуется инициализировать значения метки, вызывая соответствующий метод, а затем в конечном итоге вызывает другой метод для изменения значения метрики, связанной со значениями метки:
uses
Prometheus.Collectors.Counter;
begin
TCollectorRegistry.DefaultRegistry
.GetCollector<TCounter>( ' http_requests_handled ' )
.Labels([ ' /api ' , 200 ]) // ['path', 'status']
.Inc(); // increment child counter attached to these label values
end .Есть несколько вариантов экспорта метрик. Например, вы можете экспортировать метрики из приложения Service Windows , используя компонент сервера TIDHTTP из компонентов Indy и выявляя конечную точку «/метрики», где вы экспортируете данные метрик на основе текста на сервер Prometheus.
Вы также можете скачать промежуточное программное обеспечение для вашей любимой веб -структуры или посмотреть на примеры проектов.
Чтобы облегчить использование клиента Prometheus внутри веб -приложений, созданных с Delphi, вы найдете здесь Middlewares для загрузки и установки.
Каждое промежуточное программное обеспечение объединяет поддержку для обнаружения метрик для сервера Прометея, используя соответствующий формат и без необходимости кодировать каждую конечную точку вручную.
Вы можете найти официальный клиент Prometheus middlewares в эти отдельные репозитории:
| Промежуточное программное обеспечение |
|---|
| Delphi MVC Framework |
| Лошадь |
Prometheus Client работает с Delphi 11 Alexandria, поскольку он использует расширенные особенности языка Delphi, но с некоторыми небольшими изменениями, возможно, это может работать в предыдущих версиях.