콘텐츠로 이동

Guance 기반 SkyWalking을 활용한 RUM, APM 및 로그 연동 분석


사용 사례

분산 애플리케이션 환경에서는 로그와 트레이스를 통해 문제를 파악하는 경우가 많습니다. Guance을 사용하면 사용자가 웹 브라우저를 통해 보낸 요청을 traceId를 통해 백엔드 인터페이스와 연결할 수 있으며, 백엔드 인터페이스에서 로그를 출력한 경우 traceId를 통해 트레이스와 로그를 연결할 수 있습니다. 최종적으로 RUM, APM 및 로그의 연동을 구성하고, Guance 플랫폼을 활용한 종합 분석을 통해 문제를 매우 빠르고 편리하게 발견하고 위치를 파악할 수 있습니다.

본 문서에서는 간단하고 쉽게 시작할 수 있는 오픈소스 프로젝트를 예시로 들어, 단계별로 전체 트레이스 관측 가능성을 구현하는 방법을 설명합니다.

전제 조건

  • Guance 계정을 먼저 생성해야 합니다.
  • Spring Boot 및 vue 애플리케이션.
  • Nginx가 설치된 Linux 서버 한 대.

작업 단계

Warning

본 문서 예시에서 사용된 버전 정보는 다음과 같습니다: DataKit 1.4.15, SkyWalking 8.7.0, Nginx 1.20.2, JDK 1.8, Vue 3.2

1 DataKit 배포

1.1 DataKit 설치

Guance」에 로그인하여 「통합」 - 「DataKit」 - 「Linux」로 차례로 이동한 후, 「복사 아이콘」을 클릭하여 설치 명령어를 복사합니다.

image

Linux 서버에 로그인하여 복사한 명령어를 실행합니다.

image

1.2 수집기 활성화

RUM을 활성화하려면 사용자가 DataKit의 9529 포트에 원격으로 접근할 수 있어야 합니다. 다음 파일을 편집합니다.

vi /usr/local/datakit/conf.d/datakit.conf

listen 값을 0.0.0.0:9529로 변경합니다.

image

conf 파일을 복사하여 SkyWalking 수집기를 활성화합니다.

cd /usr/local/datakit/conf.d/skywalking
cp skywalking.conf.sample skywalking.conf

로그 수집기를 활성화합니다.

cd /usr/local/datakit/conf.d/log
cp logging.conf.sample skywalking-service-log.conf

skywalking-service-log.conf 파일을 편집합니다.

  • logfiles에는 로그 파일 경로를 입력합니다. jar를 /usr/local/df-demo/skywalking 디렉터리에 배포할 예정이므로 로그 경로는 /usr/local/df-demo/skywalking/logs/log.log입니다.
  • source는 skywalking-service-log입니다.

image

1.3 DataKit 재시작

systemctl restart datakit

2 애플리케이션 배포

2.1 백엔드 서비스 배포

skywalking-demo 프로젝트를 다운로드하고 Idea로 연 후, 오른쪽의 「package」를 클릭하면 skywalking-user-service.jar 파일이 생성됩니다.

image

skywalking-user-service.jar/usr/local/df-demo/skywalking 디렉터리에 업로드합니다.

image

참고:
1. 프로젝트에 의존성을 추가해야 합니다.

```xml
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>8.7.0</version>
        </dependency>
```
  1. 로그 출력 시 traceId를 출력해야 합니다. image

2.2 웹 배포

web 프로젝트 디렉터리로 이동하여 명령줄에서 cnpm install을 실행합니다.

image

npm run build를 실행하여 배포 파일을 생성합니다.

image

disk 디렉터리의 파일을 서버의 /usr/local/web 디렉터리에 복사합니다.

image

image

/etc/nginx/nginx.conf 파일을 편집하고 다음 내용을 추가합니다.

   location / {
            root   /usr/local/web;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;

        }

image

nginx 설정을 다시 로드합니다.

nginx -s reload

브라우저에 Linux 서버 IP를 입력하여 프론트엔드 인터페이스에 접속합니다.

image

3 APM 활성화

SkyWalking을 다운로드합니다.

agent 디렉터리를 Linux의 /usr/local/df-demo/skywalking 디렉터리에 업로드합니다.

image

image

마이크로서비스에서 springcloud gateway를 사용하는 경우, agent/optional-plugins/ 디렉터리 아래의 apm-spring-cloud-gateway-2.1.x-plugin-8.7.0.jarapm-spring-webflux-5.x-plugin-8.7.0.jar
skywalking-agent/plugins/ 디렉터리로 복사해야 합니다.

참고: apm-spring-cloud-gateway의 버전은 실제 사용하는 springcloud gateway 버전과 일치해야 합니다.

cp /usr/local/df-demo/skywalking/agent/optional-plugins/apm-spring-cloud-gateway-2.1.x-plugin-8.7.0.jar /usr/local/df-demo/skywalking/agent/plugins/
cp /usr/local/df-demo/skywalking/agent/optional-plugins/apm-spring-webflux-5.x-plugin-8.7.0.jar /usr/local/df-demo/skywalking/agent/plugins/

다음 명령어를 실행하여 백엔드 서비스를 시작하고, 프론트엔드 인터페이스의 버튼을 클릭하여 백엔드 서비스를 호출합니다.

cd /usr/local/df-demo/skywalking
java  -javaagent:agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking-log  -Dskywalking.collector.backend_service=localhost:11800 -jar skywalking-user-service.jar

Guance」에 로그인하여 「애플리케이션 성능 모니터링(APM)」으로 이동한 후 서비스, 트레이스 및 토폴로지 뷰를 확인합니다.

image

4 RUM 활성화

Guance」에 로그인하여 「실제 사용자 모니터링(RUM)」으로 이동한 후, 새 애플리케이션 skywalking-web-demo를 생성하고 아래 JS를 복사합니다.

image

/usr/local/web/index.html을 수정하여 JS를 head 태그에 복사합니다.

  • datakitOrigin을 DataKit 주소로 변경합니다. 여기서는 Linux의 IP 주소와 9529 포트입니다.
  • allowedTracingOrigins를 백엔드 인터페이스 주소로 변경합니다. 여기서는 Linux의 IP 주소와 8090 포트입니다.

image

파라미터 설명

  • datakitOrigin: 데이터 전송 주소, DataKit의 도메인 또는 IP이며 필수 입력 항목입니다.
  • env: 애플리케이션 환경, 필수 입력 항목입니다.
  • version: 애플리케이션 버전, 필수 입력 항목입니다.
  • trackInteractions: 사용자 행동 통계 활성화 여부 (예: 버튼 클릭, 정보 제출 등), 필수 입력 항목입니다.
  • traceType: trace 유형, 기본값은 ddtrace이며 선택 사항입니다.
  • allowedTracingOrigins: APM과 RUM 간 트레이스 연동을 위해 백엔드 서비스의 도메인 또는 IP를 입력하며 선택 사항입니다.

프론트엔드 인터페이스의 버튼을 클릭합니다. 「Guance」 - 「실제 사용자 모니터링(RUM)」에 로그인하여 「skywalking-web-demo」를 클릭하고 UV, PV, 세션 수, 방문한 페이지 등의 정보를 확인합니다.

image

image

5 전체 트레이스 관측 가능성

Guance」 - 「실제 사용자 모니터링(RUM)」에 로그인하여 「skywalking-web-demo」를 클릭하고, 「탐색기」를 선택한 후 「view」를 선택하여 페이지 호출 상황을 확인한 다음 「route_change」를 클릭하여 진입합니다.

image

「트레이스」를 선택합니다.

image

요청 레코드 하나를 클릭하면 "플레임 그래프", "Span 목록", "서비스 호출 관계" 및 해당 트레이스 호출에서 생성된 로그를 확인할 수 있습니다.

image

문서 평가

이 페이지가 도움이 되었나요?