7장. JBoss EAP용 Micrometer 애플리케이션 개발


7.1. JBoss EAP에서 Micrometer 지표 통합

Micrometer를 사용하면 JBoss EAP에서 애플리케이션 지표를 모니터링하고 수집할 수 있습니다. 마이크로미터 지원은 애플리케이션 메트릭의 노출을 제공합니다. 내보내기 프로세스는 PUSH 기반이므로 메트릭이 OpenTelemetry 수집기로 전송됩니다.

사전 요구 사항

  • JDK 17을 설치했습니다.
  • Maven 3.6 이상을 설치했습니다. 자세한 내용은 Apache Maven 다운로드를 참조하십시오.
  • Docker를 설치했습니다. 자세한 내용은 Docker 가져오기 를 참조하십시오.
  • 선택 사항: podman이 시스템에 설치되어 있어야 합니다. 지원되는 RHEL에서 사용 가능한 최신 podman 버전을 사용합니다. 자세한 내용은 Red Hat JBoss Enterprise Application Platform 8.0 지원 구성을 참조하십시오.
  • configure-micrometer.cli 파일은 애플리케이션 루트 디렉터리에서 사용할 수 있습니다.
참고

configure-micrometer.cli 파일을 사용하는 방법을 포함하여 이 섹션의 예는 Micrometer 빠른 시작을 기반으로 합니다.

프로세스

  1. 터미널을 엽니다.
  2. 다음 스크립트를 사용하여 JBoss EAP를 독립 실행형 서버로 시작합니다.

    $ <EAP_HOME>/bin/standalone.sh -c standalone-microprofile.xml
    Copy to Clipboard Toggle word wrap
    참고

    Windows 서버의 경우 < EAP_HOME> \bin\standalone.batch 스크립트를 사용합니다.

  3. 새 터미널을 엽니다.
  4. 애플리케이션 루트 디렉터리로 이동합니다.
  5. 다음 명령을 실행하여 서버를 구성합니다.

    $ <EAP_HOME>/bin/jboss-cli.sh --connect --file=configure-micrometer.cli
    Copy to Clipboard Toggle word wrap
    참고

    Windows 서버의 경우 < EAP_HOME> \bin\jboss-cli.extension 스크립트를 사용합니다.

    & lt;EAP_HOME >을 서버 경로로 바꿉니다.

    예상 출력:

    The batch executed successfully
    process-state: reload-required
    Copy to Clipboard Toggle word wrap

  6. 다음 관리 명령을 사용하여 서버를 다시 로드합니다.

    $ <EAP_HOME>/bin/jboss-cli.sh --connect --commands=reload
    Copy to Clipboard Toggle word wrap
  7. 다음 콘텐츠를 사용하여 docker-compose.yaml 이라는 구성 파일을 생성합니다.

    version: "3"
    
    services:
      otel-collector:
        image: otel/opentelemetry-collector
        command: [--config=/etc/otel-collector-config.yaml]
        volumes:
          - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml:Z
        ports:
          - 1888:1888 # pprof extension
          - 8888:8888 # Prometheus metrics exposed by the collector
          - 8889:8889 # Prometheus exporter metrics
          - 13133:13133 # health_check extension
          - 4317:4317 # OTLP gRPC receiver
          - 4318:4318 # OTLP http receiver
          - 55679:55679 # zpages extension
          - 1234:1234 # /metrics endpoint
    Copy to Clipboard Toggle word wrap
  8. 다음 콘텐츠를 사용하여 otel-collector-config.yaml 이라는 구성 파일을 생성합니다.

    extensions:
      health_check:
      pprof:
        endpoint: 0.0.0.0:1777
      zpages:
        endpoint: 0.0.0.0:55679
    
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    
    processors:
      batch:
    
    exporters:
      prometheus:
        endpoint: "0.0.0.0:1234"
    
    service:
      pipelines:
        metrics:
          receivers: [otlp]
          processors: [batch]
          exporters: [prometheus]
    
      extensions: [health_check, pprof, zpages]
    Copy to Clipboard Toggle word wrap
  9. 다음 명령을 실행하여 수집기 서버 인스턴스를 시작합니다.

    $ docker-compose up
    Copy to Clipboard Toggle word wrap
    참고

    Docker 대신 Podman을 사용할 수도 있습니다. Podman을 선택하는 경우 $ docker-compose up 대신 $ podman-compose up 명령을 사용하십시오. 환경에서 Docker 또는 Podman이 지원되지 않는 경우 OpenTelemetry 수집기 설치 및 실행에 대한 지침은 Otel Collector 설명서 를 참조하십시오.

  10. RootResource 클래스에서 MeterRegistry 가 클래스에 어떻게 삽입되는지 확인하여 미터를 등록하기 전에 적절한 설정을 확인하십시오.

    @Path("/")
    @ApplicationScoped
    public class RootResource {
        // ...
        @Inject
        private MeterRegistry registry;
    
        private Counter performCheckCounter;
        private Counter originalCounter;
        private Counter duplicatedCounter;
    
        @PostConstruct
        private void createMeters() {
            Gauge.builder("prime.highestSoFar", () -> highestPrimeNumberSoFar)
                    .description("Highest prime number so far.")
                    .register(registry);
            performCheckCounter = Counter
                    .builder("prime.performedChecks")
                    .description("How many prime checks have been performed.")
                    .register(registry);
            originalCounter = Counter
                    .builder("prime.duplicatedCounter")
                    .tags(List.of(Tag.of("type", "original")))
                    .register(registry);
            duplicatedCounter = Counter
                    .builder("prime.duplicatedCounter")
                    .tags(List.of(Tag.of("type", "copy")))
                    .register(registry);
        }
        // ...
    }
    Copy to Clipboard Toggle word wrap
  11. checkIfPrime() 메서드 본문을 검사하여 애플리케이션 논리 내에서 등록된 미터를 사용하는 방법을 확인합니다. 예를 들면 다음과 같습니다.

    @GET
    @Path("/prime/{number}")
    public String checkIfPrime(@PathParam("number") long number) throws Exception {
        performCheckCounter.increment();
    
        Timer timer = registry.timer("prime.timer");
    
        return timer.recordCallable(() -> {
    
            if (number < 1) {
                return "Only natural numbers can be prime numbers.";
            }
    
            if (number == 1) {
                return "1 is not prime.";
            }
    
            if (number == 2) {
                return "2 is prime.";
            }
    
            if (number % 2 == 0) {
                return number + " is not prime, it is divisible by 2.";
            }
    
            for (int i = 3; i < Math.floor(Math.sqrt(number)) + 1; i = i + 2) {
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    //
                }
                if (number % i == 0) {
                    return number + " is not prime, is divisible by " + i + ".";
                }
            }
    
            if (number > highestPrimeNumberSoFar) {
                highestPrimeNumberSoFar = number;
            }
    
            return number + " is prime.";
        });
    }
    Copy to Clipboard Toggle word wrap
  12. 애플리케이션 루트 디렉터리로 이동합니다.

    구문

    $ cd <path_to_application_root>/<application_root>
    Copy to Clipboard Toggle word wrap

    마이크로미터 빠른 시작에 대한 예를 들면 다음과 같습니다.

    $ cd ~/quickstarts/micrometer
    Copy to Clipboard Toggle word wrap

  13. 다음 명령을 사용하여 애플리케이션을 컴파일하고 배포합니다.

    $ mvn clean package wildfly:deploy
    Copy to Clipboard Toggle word wrap

이렇게 하면 실행 중인 서버에 micrometer/target/micrometer.war 가 배포됩니다.

검증

  1. 웹 브라우저를 사용하여 애플리케이션에 액세스하거나 다음 명령을 실행할 수 있습니다.

    $ curl http://localhost:8080/micrometer/prime/13
    Copy to Clipboard Toggle word wrap

    예상 출력:

    13 is prime.
    Copy to Clipboard Toggle word wrap

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동