이것은 다른 언어를 위해 생성 된 라이브러리와 유사한 Prometheus를위한 Delphi Client Library입니다.
Prometheus Delphi Client Library는 Prometheus Metrics를 사용하여 Delphi 응용 프로그램을 기기 할 수있는 일련의 클래스입니다.
사용자 지정 메트릭으로 델파이 코드를 계측 할 수 있으며 메트릭을 사용할 수있는 일부 내장 및 준비를 제공합니다.
이 라이브러리는 또한 특정 중간 와어를 사용하여 웹 애플리케이션 인스턴스의 HTTP 엔드 포인트를 통해 구성 및 제공 할 수있는 Prometheus의 텍스트 기반 박람회 형식을 지원합니다.
Prometheus는 최신 소프트웨어 환경에서 널리 사용되는 인기있는 오픈 소스 모니터링 도구입니다. 응용 프로그램, 서버 및 기타 시스템을 포함한 다양한 소스의 메트릭을 수집하고 분석하기위한 강력한 시스템을 제공합니다.
Prometheus를 효과적으로 사용하려면 관련 메트릭을 Prometheus 서버에 노출시키기 위해 응용 프로그램에 통합 할 수있는 좋아하는 프로그래밍 언어로 구현 된 클라이언트 라이브러리가 필요합니다.
여기에서는 Embarcadero Delphi를 위해 작성된 Prometheus의 클라이언트 라이브러리에 대해 논의 할 것입니다.
Prometheus Delphi Client Library는 Prometheus를 사용하여 Delphi 응용 프로그램을 모니터링하기위한 강력하고 유연한 도구를 만드는 다양한 기능을 제공합니다.
라이브러리를 사용하면 델파이 애플리케이션의 성능과 동작에 대한 귀중한 통찰력을 얻고 데이터 중심 결정을 내릴 수 있습니다.
지원되는 기능은 다음과 같습니다.
Prometheus Delphi Client Library를 시작하려면 다음 단계를 따라야합니다.
boss install 명령을 사용하여 설치가 수행됩니다.
boss install marcobreveglieri/prometheus-client-delphi수동으로 설치하기로 선택한 경우 GitHub에서 소스 코드를 다운로드하면 프로젝트> 옵션> 리소스 컴파일러> 디렉토리 및 조건부에서 다음 폴더를 프로젝트에 추가하십시오. 파일 검색 경로 포함
prometheus-client-delphi/Source
적절한 클래스를 사용하여 추적하려는 메트릭을 정의하십시오 (아래 참조).
기본 수집기 레지스트리 또는 후속 처리 및 수출을 위해 자신의 레지스트리에 메트릭을 등록하십시오.
필요에 따라 계측기를 업데이트하십시오.
텍스트 기반 수출 업체를 호출하거나 좋아하는 델파이 웹 프레임 워크를 대상으로하는 미들웨어를 사용할 준비가 된 메트릭을 내보낼 수 있습니다 (자세한 내용은 아래 중간 전위 섹션 참조).
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 .메트릭을 내보내는 몇 가지 옵션이 있습니다. 예를 들어, Indy 구성 요소 의 TIDHTTP 서버 구성 요소를 사용하여 Windows 서비스 애플리케이션 에서 메트릭을 내보내고 Prometheus Server에 텍스트 기반 메트릭 데이터를 내보내는 "/metrics"엔드 포인트를 노출 할 수 있습니다.
좋아하는 웹 프레임 워크에 대한 미들웨어를 다운로드하거나 샘플 프로젝트를 살펴볼 수도 있습니다.
Delphi로 생성 된 웹 응용 프로그램 내부에서 Prometheus 클라이언트의 사용을 용이하게하려면 여기에서 다운로드 및 설치할 수있는 중간 전쟁을 찾을 수 있습니다.
각 미들웨어는 적절한 형식을 사용하여 메트릭을 노출시키고 각 엔드 포인트를 수동으로 코딩하지 않고도 메트릭을 노출시키는 지원을 통합합니다.
공식 Prometheus Client Middlewares를 이러한 별도의 리포지토리로 찾을 수 있습니다.
| 미들웨어 |
|---|
| 델파이 MVC 프레임 워크 |
| 말 |
Prometheus Client는 Delphi 11 Alexandria 와 협력하여 Delphi 언어의 고급 기능을 사용하지만 약간의 변경으로 이전 버전에서 작동 할 수 있습니다.