다음을 통해 공유


자습서: Azure에서 실행되는 Java 앱용 Logz.io 사용하여 모니터링 및 로깅 시작

이 자습서에서는 수집 및 분석을 위해 Logz.io 서비스에 로그를 보내도록 클래식 Java 애플리케이션을 구성하는 방법을 보여 줍니다. Logz.io Elasticsearch/Logstash/Kibana(ELK) 및 Grafana를 기반으로 하는 전체 모니터링 솔루션을 제공합니다.

이 자습서에서는 Log4J 또는 Logback을 사용 중이라고 가정합니다. 이러한 라이브러리는 Java에서 로깅하는 데 가장 널리 사용되는 두 가지 라이브러리이므로 자습서는 Azure에서 실행되는 대부분의 애플리케이션에서 작동해야 합니다. 탄력적 스택을 사용하여 Java 애플리케이션을 모니터링하는 경우 이 자습서에서는 Logz.io 엔드포인트를 대상으로 다시 구성하는 방법을 보여 줍니다.

이 자습서에서는 다음 방법을 알아봅니다.

  • 기존 Java 애플리케이션에서 Logz.io 로그를 보냅니다.
  • Azure 서비스에서 진단 로그 및 메트릭을 Logz.io 보냅니다.

필수 구성 요소

java 애플리케이션 로그를 Logz.io 보내기

먼저 Logz.io 계정에 대한 액세스 권한을 제공하는 토큰을 사용하여 Java 애플리케이션을 구성하는 방법을 알아봅니다.

Logz.io 액세스 토큰 가져오기

토큰을 가져오려면 Logz.io 계정에 로그인하고 왼쪽 아래 모서리에서 톱니바퀴 아이콘을 선택한 다음 설정> 토큰 관리를 선택하고 데이터 전달 토큰 탭을 선택합니다. 그런 다음 기본 액세스 토큰수신기 URL을 확인하여 복사해 나중에 사용할 수 있도록 준비합니다.

Log4J 또는 Logback에 대한 Logz.io 라이브러리 설치 및 구성

Logz.io Java 라이브러리는 Maven Central에서 사용할 수 있으므로 앱 구성에 종속성으로 추가할 수 있습니다. Maven Central에서 버전 번호를 확인하고 다음 구성 설정에서 최신 버전을 사용합니다.

Maven을 사용하는 경우 pom.xml 파일에 다음 종속성을 추가합니다.

Log4J:

<dependency>
    <groupId>io.logz.log4j2</groupId>
    <artifactId>logzio-log4j2-appender</artifactId>
    <version>2.0.0</version>
</dependency>

로그백:

<dependency>
    <groupId>io.logz.logback</groupId>
    <artifactId>logzio-logback-appender</artifactId>
    <version>2.0.0</version>
</dependency>

Gradle을 사용하는 경우 빌드 스크립트에 다음 종속성을 추가합니다.

Log4J:

implementation 'io.logz.log4j:logzio-log4j-appender:2.0.0'

로그백:

implementation 'io.logz.logback:logzio-logback-appender:2.0.0'

다음으로 Log4J 또는 Logback 구성 파일을 업데이트합니다.

Log4J:

<Appenders>
    <LogzioAppender name="Logzio">
        <logzioToken><your-logz-io-token></logzioToken>
        <logzioType>java</logzioType>
        <logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
    </LogzioAppender>
</Appenders>

<Loggers>
    <Root level="info">
        <AppenderRef ref="Logzio"/>
    </Root>
</Loggers>

로그백:

<configuration>
    <!-- Use shutdownHook so that we can close gracefully and finish the log drain -->
    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
    <appender name="LogzioLogbackAppender" class="io.logz.logback.LogzioLogbackAppender">
        <token><your-logz-io-token></token>
        <logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
        <logzioType>java</logzioType>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <root level="debug">
        <appender-ref ref="LogzioLogbackAppender"/>
    </root>
</configuration>

<your-logz-io-token> 자리 표시자를 액세스 토큰으로 바꾸고 <your-logz-io-listener-host> 자리 표시자를 해당 지역의 수신기 호스트(예: listener.logz.io)로 바꿉니다. 계정의 지역을 찾는 방법에 대한 자세한 내용은 계정 지역참조하세요.

logzioType 요소는 Elasticsearch의 논리 필드를 참조하며 서로 다른 문서를 구분하는 데 사용됩니다. Logz.io 최대한 활용하려면 이 매개 변수를 올바르게 구성해야 합니다.

Logz.io의 "타입"은 원본(예: server1, server2, server3)이 아니라 로그 형식(예: Apache, NGinx, MySQL)을 의미합니다. 이 자습서에서는 Java 애플리케이션을 구성하고 있으므로 java 형식을 호출하며, 이러한 애플리케이션은 모두 동일한 형식을 가질 것으로 예상합니다.

고급 사용의 경우 Java 애플리케이션을 서로 다른 형식으로 그룹화할 수 있습니다. 이 형식은 모두 고유한 특정 로그 형식(Log4J 및 Logback으로 구성 가능)입니다. 예를 들어 spring-boot-monolith 형식과 spring-boot-microservice 형식을 가질 수 있습니다.

Logz.io 대한 구성 및 로그 분석 테스트

Logz.io 라이브러리가 구성되면 애플리케이션이 로그를 직접 보내야 합니다. 모든 항목이 올바르게 작동하는지 테스트하려면 Logz.io 콘솔로 이동하여 로그>라이브 테일 탭을 선택한 다음, 실행을 선택합니다. 연결이 작동 중임을 알리는 다음과 유사한 메시지가 표시됩니다.

Requesting Live Tail access...
Access granted. Opening connection...
Connected. Tailing...

다음으로 애플리케이션을 시작하거나 일부 로그를 생성하기 위해 사용합니다. 로그가 화면에 직접 표시되어야 합니다. 예를 들어 Spring Boot 애플리케이션의 첫 번째 시작 메시지는 다음과 같습니다.

2019-09-19 12:54:40.685Z Starting JavaApp on javaapp-default-9-5cfcb8797f-dfp46 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2019-09-19 12:54:40.686Z The following profiles are active: prod
2019-09-19 12:54:42.052Z Bootstrapping Spring Data repositories in DEFAULT mode.
2019-09-19 12:54:42.169Z Finished Spring Data repository scanning in 103ms. Found 6 repository interfaces.
2019-09-19 12:54:43.426Z Bean 'spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties' of type [org.springframework.boot.autoconfigure.task.TaskExecutionProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

이제 Logz.io 로그를 처리하므로 모든 플랫폼의 서비스를 활용할 수 있습니다.

Azure 서비스 데이터를 Logz.io 보내기

다음으로 Azure 리소스에서 로그 및 메트릭을 Logz.io 보내는 방법을 알아봅니다.

템플릿 배포

첫 번째 단계는 Logz.io - Azure 통합 템플릿을 배포하는 것입니다. 통합은 파이프라인의 필요한 모든 구성 요소를 설정하는 즉시 사용할 수 있는 Azure 배포 템플릿을 기반으로 합니다. 템플릿은 Event Hub 네임스페이스, Event Hub, 스토리지 Blob 두 개, 그리고 필요한 모든 적절한 권한 및 연결을 만듭니다. 자동화된 배포에 의해 설정된 리소스는 단일 Azure 지역에 대한 데이터를 수집하고 해당 데이터를 Logz.io 제공할 수 있습니다.

리포지토리의 추가 정보첫 번째 단계에 표시된 Azure 배포 단추를 찾습니다.

Azure배포를 선택하면 Azure Portal의 사용자 지정 배포 페이지에 미리 채워진 필드 목록이 표시됩니다.

대부분의 필드는 as-is 그대로 둘 수 있지만 다음 설정을 입력해야 합니다.

  • 리소스 그룹: 기존 그룹을 선택하거나 새 그룹을 만듭니다.
  • Logzio 로그/메트릭 호스트: Logz.io 수신기의 URL을 입력합니다. 이 URL이 무엇인지 잘 모르는 경우 로그인 URL을 확인합니다. app.logz.io경우 listener.logz.io(기본 설정)를 사용합니다. app-eu.logz.io을 경우에는 listener-eu.logz.io을 사용합니다.
  • Logzio 로그/메트릭 토큰 : Azure 로그 또는 메트릭을 전송하려는 Logz.io 계정의 토큰을 입력합니다. 이 토큰은 Logz.io UI의 계정 페이지에서 찾을 수 있습니다.

페이지 맨 아래의 약관에 동의한 후, 구매을 선택합니다. 그런 다음, Azure는 1~2분 정도 걸릴 수 있는 템플릿을 배포합니다. 결국 포털 맨 위에 "배포 성공" 메시지가 표시됩니다.

정의된 리소스 그룹을 방문하여 배포된 리소스를 검토할 수 있습니다.

Azure Blob Storage에 데이터를 백업하는 방법을 알아보려면 logzio-azure-serverless을(를) 구성하고, Azure 작업 로그를 참조하세요.

Azure 로그 및 메트릭을 Logz.io로 전송하기

통합 템플릿을 배포했으므로 진단 데이터를 방금 배포한 Event Hub로 스트리밍하도록 Azure를 구성해야 합니다. 데이터가 Event Hub에 들어오면 함수 앱은 해당 데이터를 Logz.io 전달합니다.

  1. 검색 창에서 진단입력한 다음, 진단 설정선택합니다.

  2. 리소스 목록에서 리소스를 선택한 다음, 진단 설정 추가 선택하여 해당 리소스에 대한 진단 설정 패널을 엽니다.

    진단 설정 패널

  3. 진단 설정에 이름을(를) 지정하세요.

  4. 스트림 을 이벤트 허브에 선택한 다음, 구성 을 선택하여 이벤트 허브 선택 패널을 엽니다.

  5. 이벤트 허브를 선택합니다.

    • 이벤트 허브 네임스페이스선택: Logzio(예:LogzioNS6nvkqdcci10p)로 시작하는 네임스페이스를 선택합니다.
    • 이벤트 허브 이름선택: 로그의 경우 insights-operational-logs 선택하고 메트릭의 경우 insights-operational-metrics선택합니다.
    • 이벤트 허브 정책 이름을 선택하세요: LogzioSharedAccessKey를 선택합니다.
  6. 확인 선택하여 진단 설정 패널로 돌아갑니다.

  7. 로그 섹션에서 스트리밍할 데이터를 선택한 다음 저장을 선택합니다.

이제 선택한 데이터가 이벤트 허브로 스트리밍됩니다.

데이터 시각화

다음으로, 시스템에서 Logz.io로 데이터가 전송될 시간을 주고 나서 Kibana를 여세요. 대시보드를 채우게 될 데이터(eventhub형식 포함)를 확인할 수 있을 것입니다. 대시보드를 만드는 방법에 대한 자세한 내용은 Kibana - 대시보드만들기를 참조하세요.

여기에서 검색 탭에서 특정 데이터를 쿼리하거나 Kibana 개체를 만들어 시각화 탭에서 데이터를 시각화할 수 있습니다.

리소스 정리

이 자습서에서 만든 Azure 리소스를 완료하면 다음 명령을 사용하여 삭제할 수 있습니다.

az group delete --name <resource group>

다음 단계

이 자습서에서는 로그 및 메트릭을 Logz.io 보내도록 Java 애플리케이션 및 Azure 서비스를 구성하는 방법을 알아보았습니다.

다음으로, Event Hub를 사용하여 애플리케이션을 모니터링하는 방법에 대해 자세히 알아봅니다.

Azure 모니터링 데이터를 외부 도구 사용을 위해 이벤트 허브로 스트리밍하기