DI(종속성 주입)와 통합되는 사용자 지정 메트릭 수신기에 대한 계측을 필터링하는 데 사용합니다 IConfiguration . 이러한 필터는 측정값을 집계하거나 내보내는 방법이 아니라 리스너가 구독할 수 있는 계측 항목을 제어합니다.
메트릭 리스너
메트릭 수신기는 Meter에 의해 생성된 카운터 및 히스토그램과 같은 계측에서 측정값을 받습니다. MeterListener 클래스는 계측기를 검색하고 측정값을 직접 구독하는 하위 수준 API를 제공합니다. 메트릭 컬렉션 자습서에서는 이 API를 사용하는 방법을 보여 줍니다.
IMetricsListener 인터페이스를 사용하면 사용자 지정 리스너를 DI 및 구성 기반 필터와 통합할 수 있습니다. 메트릭 인프라는 등록된 각 MeterListener 구현에 대해 내부적으로 IMetricsListener를 만듭니다. 구현에 계측 기능을 제공하기 위해 InstrumentPublished를 호출하기 전에 구성된 규칙을 적용합니다. 리스너가 인스트루먼트를 수락하는 경우 인프라는 구현에서 제공하는 콜백에 측정값을 제공합니다.
사용자 지정 수신기를 등록하려면 AddListener를 사용하세요. 이 문서의 구성은 코드 또는 collector가 직접 구성하는 인스턴스가 아니라 MeterListener 등록된 수신기에 적용됩니다.
구성 로드
기본 작성기 설정을 사용하는 제네릭 호스트 애플리케이션은 자동으로 AddMetrics을 호출하고 Metrics에서 IConfiguration 섹션을 로드합니다. 비호스팅 DI 애플리케이션에서 AddMetrics 및 AddConfiguration(IMetricsBuilder, IConfiguration)를 명시적으로 호출하여 동일한 섹션을 바인딩합니다.
services.AddMetrics(metrics =>
metrics.AddConfiguration(configuration.GetSection("Metrics")));
이러한 확장 메서드를 사용하려면 Microsoft.Extensions.Diagnostics.Metrics 및 Microsoft.Extensions.DependencyInjection 네임스페이스를 가져옵니다.
Important
구성은 Metrics 등록된 IMetricsListener 구현에 대한 도구만 필터링합니다. 리스너를 등록하거나 구독을 활성화하거나, 메트릭을 만들고, 측정값을 집계하거나, 데이터를 내보내거나, OpenTelemetry, Prometheus, dotnet-counters, 또는 기타 수집기를 자동으로 구성하지 않습니다.
미터 및 계측기 선택
다음 섹션을 사용하여 규칙이 적용되는 미터를 선택하세요.
| 섹션 | 적용 대상 |
|---|---|
EnabledMetrics |
전역 및 로컬 미터 모두입니다. |
EnabledGlobalMetrics |
범위가 없는 미터(예: Meter로 직접 만든 미터). |
EnabledLocalMetrics |
서비스 컨테이너의 IMeterFactory에 한정된 미터입니다. |
EnabledLocalMetrics 바로 아래에 있는 EnabledMetrics, Metrics 또는 EnabledGlobalMetrics 섹션은 등록된 모든 수신기에 적용됩니다. 하나의 수신기를 대상으로 지정하려면 섹션을 수신기의 Name 값 아래에 중첩합니다(예: Metrics:MyListener:EnabledMetrics). 수신기 및 계측 이름에는 대/소문자를 구분하지 않고 정확히 일치해야 합니다.
이러한 섹션 내에서 부울 미터 항목은 미터 이름이 일치하는 모든 기기를 사용하거나 사용하지 않도록 설정합니다. instrument 수준 규칙을 설정하려면 instrument 이름을 키로 하는 객체를 사용합니다. 특수 Default 항목은 폴백을 제공합니다. 미터 수준의 부울 Default 항목은 그 밖에 일치하지 않는 미터에 적용됩니다. 미터 개체 내에서 Default는 달리 일치하지 않는 계측기에 적용됩니다. 리스너는 일치하는 규칙이 없는 경우 인스트루먼트를 수신하지 않습니다.
다음 appsettings.json 예제에서는 이름이 request-duration로 시작하는 미터의 계측 중 이름이 Contoso.Web인 계측을 제외하고 사용하도록 설정합니다.
{
"Metrics": {
"EnabledMetrics": {
"Contoso.Web": {
"Default": true,
"request-duration": false
}
}
}
}
규칙 일치시키기 및 충돌 해결
미터 이름은 대/소문자를 구분하지 않는 접두사 일치를 사용합니다. 미터 이름에는 접두사와 접미사를 매칭하기 위한 * 와일드카드가 최대 하나만 포함될 수 있습니다. 리스너별 규칙, 더 긴 미터 이름 패턴, 계측별 규칙 및 범위별 규칙과 같은 보다 구체적인 규칙이 우선적으로 적용됩니다. 동일한 수준으로 구체적인 규칙이 충돌하는 경우 마지막으로 구성된 규칙이 우선합니다.
또한, 다음을 참조하세요.
.NET