본문 바로가기

IT/SpringBoot

스프링 부트 #5.6. 측정 항목

반응형

5.6. 측정 항목

Spring Boot Actuator는 다음을 포함하여 수많은 모니터링 시스템 을 지원하는 애플리케이션 지표 외관 인 Micrometer에 대한 종속성 관리 및 자동 구성을 제공합니다 .

  Micrometer의 기능에 대한 자세한 내용은 참조 설명서 , 특히 개념 섹션을 참조하십시오 .

5.6.1. 시작하기

Spring Boot는 컴포지트를 자동 구성 MeterRegistry하고 클래스 경로에서 찾은 지원되는 각 구현에 대해 컴포지트에 레지스트리를 추가합니다. micrometer-registry-{system}런타임 클래스 경로 에 의존하는 것으로 스프링 부트가 레지스트리를 구성하기에 충분합니다.

대부분의 레지스트리는 공통 기능을 공유합니다. 예를 들어, Micrometer 레지스트리 구현이 클래스 경로에 있어도 특정 레지스트리를 비활성화 할 수 있습니다. 예를 들어, Datadog을 비활성화하려면 :

management.metrics.export.datadog.enabled=false

스프링 부트는 또한 Metrics다음과 같이 명시 적으로 지시하지 않는 한 , 자동 설정 레지스트리를 클래스 의 전역 정적 복합 레지스트리에 추가합니다 .

management.metrics.use-global-registry=false

MeterRegistryCustomizer미터를 레지스트리에 등록하기 전에 공통 태그 적용과 같이 레지스트리를 추가로 구성하기 위해 원하는 수의 Bean을 등록 할 수 있습니다.

@Bean
MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
    return registry -> registry.config().commonTags("region", "us-east-1");
}

일반 유형에 대해보다 구체적으로 지정하여 특정 레지스트리 구현에 사용자 정의를 적용 할 수 있습니다.

@Bean
MeterRegistryCustomizer<GraphiteMeterRegistry> graphiteMetricsNamingConvention() {
    return registry -> registry.config().namingConvention(MY_CUSTOM_CONVENTION);
}

해당 설정을 MeterRegistry통해 구성 요소를 주입 하고 메트릭을 등록 할 수 있습니다 .

@Component
public class SampleBean {

    private final Counter counter;

    public SampleBean(MeterRegistry registry) {
        this.counter = registry.counter("received.messages");
    }

    public void handleMessage(String message) {
        this.counter.increment();
        // handle message implementation
    }

}

Spring Boot는 또한 구성MeterBinder 또는 전용 주석 마커를 통해 제어 할 수 있는 내장 계측 (즉, 구현)을 구성합니다.

5.6.2. 지원되는 모니터링 시스템

AppOptics

기본적으로 AppOptics 레지스트리는 메트릭을 api.appoptics.com/v1/measurements주기적으로 푸시 합니다. SaaS AppOptics로 지표를 내보내 려면 API 토큰이 제공되어야합니다.

management.metrics.export.appoptics.api-token=YOUR_TOKEN
아틀라스

기본적으로 지표는 로컬 컴퓨터에서 실행중인 Atlas 로 내보내집니다 . 사용할 Atlas 서버 의 위치는 다음 을 사용하여 제공 할 수 있습니다.

management.metrics.export.atlas.uri=https://atlas.example.com:7101/api/v1/publish
데이터 도그

Datadog Registry는 주기적으로 메트릭을 datadoghq로 푸시 합니다. 메트릭을 Datadog으로 내보내 려면 API 키가 제공되어야합니다.

management.metrics.export.datadog.api-key=YOUR_KEY

메트릭이 Datadog으로 전송되는 간격을 변경할 수도 있습니다.

management.metrics.export.datadog.step=30s
다이나 트레이스

Dynatrace 레지스트리는 정기적으로 구성된 URI로 메트릭을 푸시합니다. 지표를 Dynatrace로 내보내 려면 API 토큰, 디바이스 ID 및 URI가 제공되어야합니다.

management.metrics.export.dynatrace.api-token=YOUR_TOKEN
management.metrics.export.dynatrace.device-id=YOUR_DEVICE_ID
management.metrics.export.dynatrace.uri=YOUR_URI

Dynatrace에 지표가 전송되는 간격을 변경할 수도 있습니다.

management.metrics.export.dynatrace.step=30s
탄력있는

기본적으로 지표는 로컬 컴퓨터에서 실행중인 Elastic 로 내보내집니다 . 사용할 Elastic 서버의 위치는 다음 속성을 사용하여 제공 할 수 있습니다.

management.metrics.export.elastic.host=https://elastic.example.com:8086
갱 리아

기본적으로 지표는 로컬 컴퓨터에서 실행 되는 Ganglia 로 내보내집니다 . 신경절 서버 사용에 호스트 및 포트를 사용하여 제공 할 수 있습니다 :

management.metrics.export.ganglia.host=ganglia.example.com
management.metrics.export.ganglia.port=9649
석묵

기본적으로 지표는 로컬 컴퓨터에서 실행 되는 Graphite 로 내보내집니다 . 흑연 서버 사용에 호스트 및 포트를 사용하여 제공 할 수 있습니다 :

management.metrics.export.graphite.host=graphite.example.com
management.metrics.export.graphite.port=9004

마이크로 미터는 HierarchicalNameMapper치수 미터 ID가 평평한 계층 이름에 매핑되는 방법을 제어하는 기본값 제공 합니다 .

  이 동작을 제어하려면 GraphiteMeterRegistry자신을 정의 하고 자신을 제공하십시오 HierarchicalNameMapper. 사용자가 직접 정의하지 않으면 자동 구성 GraphiteConfigClockBean이 제공됩니다.
@Bean
public GraphiteMeterRegistry graphiteMeterRegistry(GraphiteConfig config, Clock clock) {
    return new GraphiteMeterRegistry(config, clock, MY_HIERARCHICAL_MAPPER);
}
후미오

기본적으로 Humio 레지스트리는 주기적으로 지표를 cloud.humio.com 으로 푸시 합니다. SaaS Humio로 메트릭을 내보내 려면 API 토큰이 제공되어야합니다.

management.metrics.export.humio.api-token=YOUR_TOKEN

또한 메트릭을 푸시 할 데이터 소스를 식별하도록 하나 이상의 태그를 구성해야합니다.

management.metrics.export.humio.tags.alpha=a
management.metrics.export.humio.tags.bravo=b
유입

기본적으로 지표는 로컬 시스템에서 실행중인 Influx 로 내보내집니다 . 사용할 Influx 서버 의 위치는 다음 을 사용하여 제공 할 수 있습니다.

management.metrics.export.influx.uri=https://influx.example.com:8086
JMX

Micrometer는 주로 메트릭스를 로컬에서 볼 수있는 저렴하고 이식 가능한 방법으로 JMX에 대한 계층 적 매핑을 제공합니다 . 기본적으로 메트릭은 metricsJMX 도메인으로 내보내집니다 . 사용할 도메인은 다음을 사용하여 제공 할 수 있습니다.

management.metrics.export.jmx.domain=com.example.app.metrics

마이크로 미터는 HierarchicalNameMapper치수 미터 ID가 평평한 계층 이름에 매핑되는 방법을 제어하는 기본값 제공 합니다 .

  이 동작을 제어하려면 JmxMeterRegistry자신을 정의 하고 자신을 제공하십시오 HierarchicalNameMapper. 사용자가 직접 정의하지 않으면 자동 구성 JmxConfigClockBean이 제공됩니다.
@Bean
public JmxMeterRegistry jmxMeterRegistry(JmxConfig config, Clock clock) {
    return new JmxMeterRegistry(config, clock, MY_HIERARCHICAL_MAPPER);
}
카이로스 DB

기본적으로 메트릭은 로컬 시스템에서 실행 되는 KairosDB 로 내보내집니다 . 사용할 KairosDB 서버 의 위치는 다음 을 사용하여 제공 할 수 있습니다.

management.metrics.export.kairos.uri=https://kairosdb.example.com:8080/api/v1/datapoints
새로운 유물

New Relic Registry는 주기적으로 메트릭을 New Relic에 푸시 합니다. 메트릭을 New Relic로 내보내 려면 API 키와 계정 ID가 제공되어야합니다.

management.metrics.export.newrelic.api-key=YOUR_KEY
management.metrics.export.newrelic.account-id=YOUR_ACCOUNT_ID

메트릭이 New Relic로 전송되는 간격을 변경할 수도 있습니다.

management.metrics.export.newrelic.step=30s

기본적으로 메트릭은 REST 호출을 통해 공개되지만 클래스 경로에 Java 에이전트 API가있는 경우이를 사용할 수도 있습니다.

management.metrics.export.newrelic.client-provider-type=insights-agent

마지막으로, 자신의 NewRelicClientProviderbean 을 정의하여 모든 권한을 가질 수 있습니다 .

프로 메테우스

Prometheus 는 메트릭을 위해 개별 앱 인스턴스를 긁거나 폴링 할 것으로 예상합니다. Spring Boot는 Prometheus 스크랩 을 적절한 형식 /actuator/prometheus으로 제시 할 수있는 액추에이터 엔드 포인트를 제공 합니다.

  엔드 포인트는 기본적으로 사용 가능하지 않으며 노출되어야합니다 . 자세한 내용 엔드 포인트 노출 을 참조하십시오.

scrape_config추가 할 예제는 다음과 같습니다 prometheus.yml.

scrape_configs:
  - job_name: 'spring'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['HOST:PORT']

폐기 될 정도로 오래 존재하지 않는 임시 작업 또는 배치 작업의 경우 Prometheus Pushgateway 지원을 사용하여 메트릭을 Prometheus에 노출 할 수 있습니다. Prometheus Pushgateway 지원을 활성화하려면 프로젝트에 다음 종속성을 추가하십시오.

<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_pushgateway</artifactId>
</dependency>

클래스 경로에 Prometheus Pushgateway 종속성이 존재하면 Spring Boot는 PrometheusPushGatewayManagerBean을 자동 구성합니다 . 이를 통해 Prometheus Pushgateway에 대한 메트릭 푸시를 관리합니다. PrometheusPushGatewayManager속성을 사용하여 조정할 수 있습니다 management.metrics.export.prometheus.pushgateway. 고급 구성의 경우 고유 한 PrometheusPushGatewayManagerBean을 제공 할 수도 있습니다 .

SignalFx

SignalFx 레지스트리는 주기적으로 지표를 SignalFx로 푸시 합니다. 지표를 SignalFx로 내보내 려면 액세스 토큰이 제공되어야합니다.

management.metrics.export.signalfx.access-token=YOUR_ACCESS_TOKEN

지표가 SignalFx로 전송되는 간격을 변경할 수도 있습니다.

management.metrics.export.signalfx.step=30s
단순한

Micrometer는 다른 레지스트리가 구성되지 않은 경우 폴백으로 자동으로 사용되는 단순한 메모리 내 백엔드와 함께 제공됩니다. 이를 통해 메트릭 엔드 포인트 에서 어떤 메트릭이 수집되는지 확인할 수 있습니다 .

사용 가능한 다른 백엔드를 사용하는 즉시 인 메모리 백엔드가 비활성화됩니다. 명시 적으로 비활성화 할 수도 있습니다.

management.metrics.export.simple.enabled=false
스택 드라이버

Stackdriver Registry는 정기적으로 메트릭을 Stackdriver에 푸시 합니다. SaaS Stackdriver로 지표를 내보내 려면 Google 클라우드 프로젝트 ID가 제공되어야합니다.

management.metrics.export.stackdriver.project-id=my-project

메트릭이 Stackdriver로 전송되는 간격을 변경할 수도 있습니다.

management.metrics.export.stackdriver.step=30s
통계

StatsD 레지스트리는 UDP를 통해 메트릭을 StatsD 에이전트로 열심히 푸시합니다. 기본적으로 메트릭은 로컬 시스템에서 실행중인 StatsD 에이전트 로 내보내집니다 . 사용할 StatsD 에이전트 호스트 및 포트는 다음을 사용하여 제공 할 수 있습니다.

management.metrics.export.statsd.host=statsd.example.com
management.metrics.export.statsd.port=9125

StatsD 회선 프로토콜을 사용하도록 변경할 수도 있습니다 (기본값은 Datadog).

management.metrics.export.statsd.flavor=etsy
파면

Wavefront Registry는 주기적으로 지표를 Wavefront에 푸시 합니다. 메트릭을 Wavefront로 직접 내보내는 경우 API 토큰이 제공되어야합니다.

management.metrics.export.wavefront.api-token=YOUR_API_TOKEN

또는 지표 데이터를 Wavefront API 호스트로 전달하는 환경에서 Wavefront 사이드카 또는 내부 프록시 설정을 사용할 수 있습니다.

management.metrics.export.wavefront.uri=proxy://localhost:2878
  문서에 설명 된대로 메트릭을 Wavefront 프록시에 게시하는 경우 호스트 proxy://HOST:PORT형식 이어야 합니다.

Wavefront로 지표가 전송되는 간격을 변경할 수도 있습니다.

management.metrics.export.wavefront.step=30s

5.6.3. 지원되는 지표

Spring Boot는 적용 가능한 경우 다음 핵심 메트릭을 등록합니다.

  • JVM 메트릭, 보고서 활용도 :
    • 다양한 메모리 및 버퍼 풀
    • 가비지 수집 관련 통계
    • 쓰레드 활용
    • 로드 / 언로드 된 클래스 수
  • CPU 메트릭
  • 파일 디스크립터 메트릭
  • 카프카 소비자 통계
  • Log4j2 메트릭 : 각 레벨에서 Log4j2에 기록 된 이벤트 수 기록
  • 로그 백 메트릭 : 각 레벨에서 로그 백에 기록 된 이벤트 수를 기록
  • 가동 시간 메트릭 : 가동 시간에 대한 게이지와 응용 프로그램의 절대 시작 시간을 나타내는 고정 게이지를보고합니다.
  • Tomcat 지표 ( 모든 Tomcat 지표를 등록 server.tomcat.mbeanregistry.enabled하려면로 설정해야 함 true)
  • 스프링 통합 메트릭
스프링 MVC 지표

자동 구성을 통해 Spring MVC가 처리하는 요청을 계측 할 수 있습니다. management.metrics.web.server.request.autotime.enabled이다 true,이 장비는 모든 요청에 대해 발생합니다. 또는로 설정된 경우 요청 처리 방법 false에 추가 @Timed하여 계측을 활성화 할 수 있습니다 .

@RestController
@Timed (1)
public class MyController {

    @GetMapping("/api/people")
    @Timed(extraTags = { "region", "us-east-1" }) (2)
    @Timed(value = "all.people", longTask = true) (3)
    public List<Person> listPeople() { ... }

}
1 컨트롤러의 모든 요청 핸들러에서 타이밍을 사용 가능하게하는 컨트롤러 클래스입니다.
2 개별 엔드 포인트를 활성화하는 방법입니다. 클래스에있는 경우에는 필요하지 않지만이 특정 엔드 포인트에 대한 타이머를 추가로 사용자 정의하는 데 사용할 수 있습니다.
3 메소드 longTask = true에 긴 태스크 타이머를 사용하는 메소드입니다. 긴 작업 타이머에는 별도의 메트릭 이름이 필요하며 짧은 작업 타이머와 함께 누적 될 수 있습니다.

기본적으로 메트릭은 이름으로 생성됩니다 http.server.requests. management.metrics.web.server.request.metric-name속성 을 설정하여 이름을 사용자 정의 할 수 있습니다 .

기본적으로 Spring MVC 관련 메트릭은 다음 정보로 태그 지정됩니다.

꼬리표 기술

exception

요청을 처리하는 동안 발생한 예외의 단순 클래스 이름입니다.

method

요청 방법 (예 : GET또는 POST)

outcome

응답의 상태 코드를 기반으로 한 요청의 결과. 1xx는 INFORMATIONAL, 2xx는 SUCCESS, 3xx는 REDIRECTION, 4xx CLIENT_ERROR, 5xx는SERVER_ERROR

status

응답의 HTTP 상태 코드 (예 : 200또는 500)

uri

가능한 경우 변수 대체 이전의 요청 URI 템플릿 (예 /api/person/{id}:)

기본 태그에 추가하려면 하나 이상을 제공하십시오 @Bean`s that implement `WebMvcTagsContributor. 기본 태그를 바꾸려면 @Bean구현 하는 제공하십시오 WebMvcTagsProvider.

스프링 WebFlux 지표

자동 구성을 통해 WebFlux 컨트롤러 및 기능 처리기가 처리하는 모든 요청을 계측 할 수 있습니다.

기본적으로 메트릭은 이름으로 생성됩니다 http.server.requests. management.metrics.web.server.request.metric-name속성 을 설정하여 이름을 사용자 정의 할 수 있습니다 .

기본적으로 WebFlux 관련 메트릭은 다음 정보로 태그 지정됩니다.

꼬리표 기술

exception

요청을 처리하는 동안 발생한 예외의 단순 클래스 이름입니다.

method

요청 방법 (예 : GET또는 POST)

outcome

응답의 상태 코드를 기반으로 한 요청의 결과. 1xx는 INFORMATIONAL, 2xx는 SUCCESS, 3xx는 REDIRECTION, 4xx CLIENT_ERROR, 5xx는SERVER_ERROR

status

응답의 HTTP 상태 코드 (예 : 200또는 500)

uri

가능한 경우 변수 대체 이전의 요청 URI 템플릿 (예 /api/person/{id}:)

기본 태그에 추가하려면 하나 이상을 제공하십시오 @Bean`s that implement `WebFluxTagsContributor. 기본 태그를 바꾸려면 @Bean구현 하는 제공하십시오 WebFluxTagsProvider.

저지 서버 지표

Micrometer의 micrometer-jersey2모듈이 클래스 경로에 있으면 자동 구성을 통해 Jersey JAX-RS 구현에서 처리 한 요청을 계측 할 수 있습니다. management.metrics.web.server.request.autotime.enabled이다 true,이 장비는 모든 요청에 대해 발생합니다. 또는로 설정된 경우 요청 처리 방법 false에 추가 @Timed하여 계측을 활성화 할 수 있습니다 .

@Component
@Path("/api/people")
@Timed (1)
public class Endpoint {
    @GET
    @Timed(extraTags = { "region", "us-east-1" }) (2)
    @Timed(value = "all.people", longTask = true) (3)
    public List<Person> listPeople() { ... }
}
1 자원의 모든 요청 핸들러에서 타이밍을 사용 가능하게하는 자원 클래스
2 개별 엔드 포인트를 활성화하는 방법 클래스에있는 경우에는 필요하지 않지만이 특정 엔드 포인트에 대한 타이머를 추가로 사용자 정의하는 데 사용할 수 있습니다.
3 방법에 longTask = true대한 긴 작업 타이머를 활성화하는 방법 긴 작업 타이머에는 별도의 메트릭 이름이 필요하며 짧은 작업 타이머와 함께 누적 될 수 있습니다.

기본적으로 메트릭은 이름으로 생성됩니다 http.server.requests. management.metrics.web.server.request.metric-name속성 을 설정하여 이름을 사용자 정의 할 수 있습니다 .

기본적으로 Jersey 서버 메트릭에는 다음 정보가 포함됩니다.

꼬리표 기술

exception

요청을 처리하는 동안 발생한 예외의 단순 클래스 이름입니다.

method

요청 방법 (예 : GET또는 POST)

outcome

응답의 상태 코드를 기반으로 한 요청의 결과. 1xx는 INFORMATIONAL, 2xx는 SUCCESS, 3xx는 REDIRECTION, 4xx CLIENT_ERROR, 5xx는SERVER_ERROR

status

응답의 HTTP 상태 코드 (예 : 200또는 500)

uri

가능한 경우 변수 대체 이전의 요청 URI 템플릿 (예 /api/person/{id}:)

태그를 사용자 정의하려면 @Bean구현 하는 제공하십시오 JerseyTagsProvider.

HTTP 클라이언트 지표

Spring Boot Actuator는 RestTemplate의 계측을 관리합니다 WebClient. 이를 위해 자동 구성된 빌더를 주입하고이를 사용하여 인스턴스를 작성해야합니다.

  • RestTemplateBuilder ...에 대한 RestTemplate
  • WebClient.Builder ...에 대한 WebClient

수동으로 맞춤 설정 즉,이 장비에 대한 책임을 적용하는 것도 가능하다 MetricsRestTemplateCustomizerMetricsWebClientCustomizer.

기본적으로 메트릭은 이름으로 생성됩니다 http.client.requests. management.metrics.web.client.request.metric-name속성 을 설정하여 이름을 사용자 정의 할 수 있습니다 .

기본적으로 인스트루먼트 된 클라이언트가 생성 한 지표에는 다음 정보가 태그로 표시됩니다.

꼬리표 기술

clientName

URI의 호스트 부분

method

요청 방법 (예 : GET또는 POST)

outcome

응답의 상태 코드를 기반으로 한 요청의 결과. 1XX이다 INFORMATIONAL가 2xx이다, SUCCESS접수대입니다 REDIRECTION, 4XX CLIENT_ERROR, 5XX하고있다 SERVER_ERROR, UNKNOWN그렇지 않으면

status

응답의 HTTP 상태 코드 경우 (예를 들어, 사용 가능 200또는 500), 또는 IO_ERRORI / O 문제의 경우, CLIENT_ERROR그렇지 않으면

uri

가능한 경우 변수 대체 이전의 요청 URI 템플릿 (예 /api/person/{id}:)

태그를 사용자 정의하려면, 클라이언트의 선택에 따라, 당신은 제공 할 수있는 @Bean그 구현을 RestTemplateExchangeTagsProvider하거나 WebClientExchangeTagsProvider. RestTemplateExchangeTags및에 편리한 정적 함수가 WebClientExchangeTags있습니다.

캐시 메트릭

자동 구성을 통해 Cache시작시 메트릭이 접두사로 사용 가능한 모든 장치를 계측 할 수 있습니다 cache. 캐시 계측은 기본 메트릭 집합에 대해 표준화되어 있습니다. 추가 캐시 특정 메트릭도 사용할 수 있습니다.

다음과 같은 캐시 라이브러리가 지원됩니다.

  • 카페인
  • EhCache 2
  • 헤이젤 캐스트
  • 모든 호환 JCache (JSR-107) 구현

메트릭은 캐시 이름과 CacheManagerBean 이름에서 파생 된 이름으로 태그가 지정됩니다 .

  시작시 구성된 캐시 만 레지스트리에 바인딩됩니다. 캐시 구성에 정의되지 않은 캐시 (예 : 시작 단계 이후 또는 프로그래밍 방식으로 생성 된 캐시)의 경우 명시 적 등록이 필요합니다. CacheMetricsRegistrar빈은 쉽게 그 과정을 만들기 위해 사용할 수 있습니다.
데이터 소스 측정 항목

자동 구성을 사용하면 DataSource접두사가 앞에 붙은 사용 가능한 모든 개체를 계측 할 수 있습니다 jdbc.connections. 데이터 소스 계측은 풀에서 현재 활성, 유휴, 최대 허용 및 최소 허용 연결을 나타내는 게이지가됩니다.

메트릭은 DataSourceBean 이름을 기반으로 계산 된 이름으로 태그됩니다 .

  기본적으로 Spring Boot는 지원되는 모든 데이터 소스에 메타 데이터를 제공합니다. DataSourcePoolMetadataProvider자주 사용하는 데이터 소스가 기본적으로 지원되지 않는 경우 추가 Bean을 추가 할 수 있습니다 . DataSourcePoolMetadataProvidersConfiguration예를 참조하십시오 .

또한 Hikari 관련 메트릭은 hikaricp접두사 로 노출됩니다 . 각 메트릭은 풀 이름으로 태그가 지정됩니다 (로 제어 가능 spring.datasource.name).

최대 절전 모드

자동 구성을 사용하면 EntityManagerFactory이름이 지정된 메트릭으로 통계가 활성화 된 사용 가능한 모든 최대 절전 모드 인스턴스를 계측 할 수 있습니다 hibernate.

또한 메트릭은 EntityManagerFactoryBean 이름에서 파생 된 이름으로 태그가 지정됩니다 .

통계를 사용하려면 표준 JPA 특성 hibernate.generate_statistics을로 설정해야합니다 true. EntityManagerFactory다음 예제와 같이 자동 구성에서이를 활성화 할 수 있습니다 .

spring.jpa.properties.hibernate.generate_statistics=true
RabbitMQ 지표

자동 구성을 통해 사용 가능한 모든 RabbitMQ 연결 팩토리를 미터법으로 사용할 수 있습니다 rabbitmq.

5.6.4. 맞춤 측정 항목 등록

맞춤 측정 항목을 등록하려면 MeterRegistry다음 예와 같이 구성 요소에 삽입 하십시오.

class Dictionary {

    private final List<String> words = new CopyOnWriteArrayList<>();

    Dictionary(MeterRegistry registry) {
        registry.gaugeCollectionSize("dictionary.size", Tags.empty(), this.words);
    }

    // …

}

구성 요소 또는 응용 프로그램에서 일련의 메트릭을 반복적으로 계측하는 경우 MeterBinder구현 에서이 제품군을 캡슐화 할 수 있습니다 . 기본적으로 모든 MeterBinderBean의 메트릭 은 Spring 관리 형에 자동으로 바인딩됩니다 MeterRegistry.

5.6.5. 개별 측정 항목 사용자 정의

특정 Meter인스턴스에 사용자 정의를 적용해야하는 경우 io.micrometer.core.instrument.config.MeterFilter인터페이스를 사용할 수 있습니다 . 기본적으로 모든 MeterFilterbean은 마이크로 미터에 자동으로 적용됩니다 MeterRegistry.Config.

예를 들어로 시작하는 모든 미터 ID mytag.region태그 이름을 바꾸려면 다음을 수행하십시오.mytag.areacom.example

@Bean
public MeterFilter renameRegionTagMeterFilter() {
    return MeterFilter.renameTag("com.example", "mytag.region", "mytag.area");
}
공통 태그

공통 태그는 일반적으로 호스트, 인스턴스, 리전, 스택 등과 같은 운영 환경에서 차원 드릴 다운에 사용됩니다. 공통 태그는 모든 미터에 적용되며 다음 예제와 같이 구성 할 수 있습니다.

management.metrics.tags.region=us-east-1
management.metrics.tags.stack=prod

위의 예는 추가 region하고 stack(A)의 값으로 모든 미터에 태그 us-east-1prod각각.

  Graphite를 사용하는 경우 공통 태그의 순서가 중요합니다. 이 방법을 사용하면 공통 태그의 순서를 보장 할 수 없으므로 Graphite 사용자는 MeterFilter대신 사용자 정의를 정의하는 것이 좋습니다 .
미터당 속성

MeterFilterBean 외에도 특성을 사용하여 미터 단위로 제한된 사용자 정의 세트를 적용 할 수도 있습니다. 미터당 사용자 정의는 주어진 이름으로 시작하는 모든 미터 ID에 적용됩니다. 예를 들어 다음은 ID로 시작하는 미터를 비활성화합니다.example.remote

management.metrics.enable.example.remote=false

다음 속성은 미터당 사용자 정의를 허용합니다.

표 8. 미터당 사용자 정의
특성 기술

management.metrics.enable

미터가 메트릭을 방출하지 못하도록할지 여부

management.metrics.distribution.percentiles-histogram

차원에 따라 집계 할 수있는 백분위 수 근사를 계산하는 데 적합한 히스토그램을 게시할지 여부

management.metrics.distribution.minimum-expected-value, management.metrics.distribution.maximum-expected-value

예상 값 범위를 고정하여 히스토그램 버킷을 줄입니다.

management.metrics.distribution.percentiles

응용 프로그램에서 계산 된 백분위 수 값 게시

management.metrics.distribution.slo

서비스 수준 목표에 따라 정의 된 버킷으로 누적 히스토그램을 게시하십시오.

뒤에 개념에 대한 자세한 내용은 percentiles-histogram, percentiles그리고 sla참고하여주십시오 "히스토그램 및 백분위"섹션 마이크로 미터 문서.

5.6.6. 측정 항목 끝점

Spring Boot는 진 metrics단적으로 사용하여 응용 프로그램에서 수집 한 메트릭을 검사 할 수 있는 엔드 포인트를 제공합니다 . 엔드 포인트는 기본적으로 사용 가능하지 않으며 노출되어야합니다 . 자세한 내용 엔드 포인트 노출 을 참조하십시오.

탐색하면 /actuator/metrics사용 가능한 미터 이름 목록이 표시됩니다. 예를 들어, 선택기로 이름을 제공하여 특정 미터에 대한 정보를 드릴 다운 할 수 있습니다 /actuator/metrics/jvm.memory.max.

 

여기에서 사용하는 이름은 코드에 사용 된 이름과 일치해야합니다. 이름은 선적 된 모니터링 시스템에 대해 명명 컨벤션이 정규화 된 후의 이름이 아닙니다. 다시 말해, 뱀 사례 명명 규칙으로 인해 Prometheus에서 jvm.memory.max와 같이 나타나면 엔드 포인트 에서 미터를 검사 할 때 jvm_memory_max여전히 jvm.memory.max선택기로 사용해야 metrics합니다.

또한 tag=KEY:VALUEURL 끝에 여러 개의 검색어 매개 변수를 추가 하여 미터 단위로 차원을 드릴 다운 할 수 있습니다 ( 예 :) /actuator/metrics/jvm.memory.max?tag=area:nonheap.

 

보고 된 측정치는 미터 이름 및 적용된 태그와 일치하는 모든 미터의 통계의 입니다. 따라서 위의 예에서 반환 된 "값"통계는 힙의 "코드 캐시", "압축 된 클래스 공간"및 "메타 스페이스"영역의 최대 메모리 공간을 합한 것입니다. 그냥 "Metaspace"에 대한 최대 크기를보고 싶어하면 추가로 추가 할 수 있습니다 tag=id:Metaspace즉, /actuator/metrics/jvm.memory.max?tag=area:nonheap&tag=id:Metaspace.

 

Spring Boot Reference Documentation

Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons, Vedran Pavić, Jay Bryant, Madhura Bhave, Eddú Meléndez, Scott Frederick

2.3.1.RELEASE

Copyright © 2012-2020

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.

출처 : https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/htmlsingle/#production-ready-metrics

반응형