SpringCloud|제1 5 편:마이크로 서비스 예리 한 검 의 APM 플랫폼(一)Skywalking

SpringCloud 시리즈 튜 토리 얼|제1 5 편:마이크로 서비스 예리 한 검 의 APM 플랫폼(1)Skywalking
Springboot: 2.1.7.RELEASE
SpringCloud: Greenwich.SR2
[TOC]
1.스 카 이 워 크 개요
스 카 이 워 크 는 2016 년 11 월 2 일 국민 오성 이 Github 에 v 1.0 버 전 을 올 려 분산 형 링크 추적 기능 을 제공 하 는 데 사 용 했 고,5.x 를 시작 으로 기능 이 완 선 된 APM(Application Performance Management)시스템 이 됐 으 며,2019 년 4 월 17 일 아파 치 인 큐 베 이 터 를 졸업 하고 본 격 적 으로 아파 치 톱 프로젝트 가 됐다.분포 식 추적,서비스 격자 원 격 측정 분석,도량 집합 과 가시 화 일체화 해결 방안 을 제공한다.공식 적 으로 자신 에 대한 소 개 는 마이크로 서비스,클 라 우 드 원생 과 용기(Docker,Kubernetes,Mesos)구 조 를 바탕 으로 디자인 된 것 이다.
2.Skywalking 주요 기능
  • 서비스,서비스 실례,단점 지표 분석
  • 근본 원인 분석
  • 서비스 토폴로지 분석
  • 서비스,서비스 실례 와 단점 의존성 분석
  • 느 린 서비스 검 측
  • 성능 최적화
  • 분포 식 추적 과 문맥 전파
  • 데이터베이스 액세스 지표,느 린 데이터베이스 액세스 문장 검출(SQL 포함)
  • 경고
  • 3.Skywalking 의 주요 특성
  • 다양한 모니터링 수단,언어 프로 브 와 service mesh
  • 다 중 언어 자동 프로 브,자바,.NET Core 와 Node.JS
  • 다양한 백 엔 드 저장 지원
  • 경 량 고 효율
  • 모듈 화,UI,저장,클 러 스 터 관리 다양한 메커니즘 선택 가능
  • 경고 지원
  • 우수한 시각 화 방안
  • 4.Skywalking 구조 안내
    먼저 정부 가 제공 한 구조 도 를 살 펴 보 자.그림 과 같다.
    스 카 이 워 크 는 전체적으로 네 부분agent,collector,webapp-ui,storage으로 구성 된다.그림 10-11 은 위 에서 아래로 응용 층 의 접속 으로 침입 성 이 없 는agent프로 브 로 접속 할 수 있다.HTTP 또는 gRPC 를 통 해 데 이 터 를 Skywalking 분석 플랫폼collector에 보 내 고collector받 은 데 이 터 를 취 합 분석 한 다음 에storage에 저장 할 수 있다.여 기 는 여러 가지 저장 방식 을 지원 하 는데 주로 H2 와 ElasticSearch 가 있다.마지막 으로webapp-ui모든 데 이 터 를 보 여줄 수 있다.
    5.Spring Cloud 와 Skywalking 실전
    5.1 Skywalking 배치 구축
    실전 을 소개 하기 전에 스 카 이 워 크 배치 구축 방안 을 간단히 소개 하 겠 습 니 다.
    여기 서 저장 방식 에 대해 필 자 는 ElasticSearch 를 선 택 했 습 니 다.구체 적 인 버 전 은 6.5.0 이 고 ElasticSearch 의 구축 방식 은 Docker 를 선 택 했 습 니 다.Linux 를 직접 사용 하여 구축 하 는 것 은 복잡 하고 초보 자 에 게 적합 하지 않 으 며 Docker 를 사용 하여 구축 하 는 것 이 간단 하고 편리 합 니 다.
    필자 가 구축 한 선행 조건:
    java:1.8CentOS:7.6
    현재 CentOS 에 Docker 환경 이 없 으 면 다음 문 구 를 사용 하여 빠르게 구축 할 수 있 습 니 다.
    yum install docker

    빌 드 에 성공 하면 다음 문 구 를 사용 하여 현재 Docker 버 전 을 볼 수 있 습 니 다.
    docker -v

    필자 가 있 는 이곳 의 수출 은:
    Docker version 1.13.1, build 7f2769b/1.13.1

    Docker 를 설치 한 후 에는 국내 미 러 스테이션 을 설정 하 는 것 이 좋 습 니 다.그렇지 않 으 면 네트워크 가 좋 지 않 은 상태 에서 Docker 다운로드 실패 등 이 발생 할 수 있 습 니 다.아래 문 구 를 사용 하여 미 러 주 소 를 수정 할 수 있 습 니 다.
    vi /etc/docker/daemon.json

    필자 가 여기 서 사용 한 것 은 아 리 운 의 미 러 가속 이다.다음 과 같다.
    {
        "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
    }

    독자 여러분 은 스스로 아 리 운 에 가서 자신의 미 러 를 개통 하고 속 도 를 낼 수 있 으 며 구체 적 으로 는 소 개 를 많이 하지 않 습 니 다.
    Docker 를 사용 하여 ElasticSearch 6.5.0 을 구축 합 니 다.우선 ElasticSearch 6.5.0 의 미 러 를 다운로드 하고 다음 명령 을 입력 하 십시오.
    docker pull elasticsearch:6.5.0

    프로그램 다운로드 가 완료 되면 미 러 를 시작 할 수 있 습 니 다.명령 은 다음 과 같 습 니 다.
    docker run -d --restart=always --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.5.0

    ElasticSearch 의 기본 시작 메모 리 는 1g 입 니 다.현재 서버 의 메모리 가 1g 미 만 이면 인자-e ES_JAVA_OPTS="-Xms256m -Xmx256m"를 사용 하여 ElasticSearch 의 시작 메모리 크기 를 제한 할 수 있 습 니 다.전체 문 구 는 다음 과 같 습 니 다.
    docker run -d --restart=always -e ES_JAVA_OPTS="-Xms256m -Xmx256m" --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.5.0

    시작 에 성공 한 후 다음 문 구 를 사용 하여 시작 성공 여 부 를 볼 수 있 습 니 다.
    docker ps

    결 과 는 그림 과 같다.
    ElasticSearch 6.5.0 단일 노드 버 전이 구축 되 었 습 니 다.후속 작업 을 편리 하 게 하기 위해 ElasticSearch 의 이름 을 수정 해 야 합 니 다.입력 명령docker exec -it es /bin/bash은 용기 파일 디 렉 터 리 에 들 어가 고 입력vi config/elasticsearch.yml은 ElasticSearch 설정 파일 에 들 어가 고 수정cluster.name의 값 을 수정 해 야 합 니 다.필 자 는 여기 서CollectorDBCluster로 수정 하고 수정 이 완료 되면 현재 수정 사항 을 저장 합 니 다.입력exit용기 파일 디 렉 터 리 를 종료 하고 입력docker restart es을 입력 하여 현재 용 기 를 다시 시작 하고 브 라 우 저 에 입력 하 십시오.http://192.168.44.128:9200/다음 정 보 를 보면 ElasticSearch 6.5.0 단일 노드 버 전이 정상적으로 작 동 하고 있다 는 것 을 증명 할 수 있다.
    {
      "name" : "V-N2_ZQ",
      "cluster_name" : "CollectorDBCluster",
      "cluster_uuid" : "r9bFZ90WRyqSpMz80u61Yg",
      "version" : {
        "number" : "6.5.0",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "816e6f6",
        "build_date" : "2018-11-09T18:58:36.352602Z",
        "build_snapshot" : false,
        "lucene_version" : "7.5.0",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
      },
      "tagline" : "You Know, for Search"
    }

    Skywalking 구축,Skywalking 홈 페이지 진입,다운로드 페이지 진입(http://skywalking.apache.org/... )그림 과 같다.
    CentOS 에서 실행 해 야 하기 때문에 여기 서 Linux 바 이 너 리 버 전 을 선택 하 십시오.바로 컴 파일 된 버 전 입 니 다.우리 가 컴 파일 할 필요 가 없습니다.CentOS 에 다운로드 한 후에 디 렉 터 리 구 조 를 볼 수 있 습 니 다.그림 과 같 습 니 다.
  • 에이전트:프로 브 와 관련 하여 나중에 더 상세 하 게 소개 하 겠 습 니 다.
  • bin:oapService 와 webappService 의 시작 스 크 립 트 가 놓 여 있 습 니 다.물론 두 스 크 립 트 를 실행 하 는 통합 스 크 립 트startup.sh도 있 습 니 다.
  • config:여 기 는 주로 collector 의 설정 정 보 를 저장 합 니 다.저 희 는 이곳 의 application.yml 에 있 는 ElasticSearch 와 관련 된 설정 을 수정 해 야 합 니 다.다음 그림:
  • 수정storage.elasticsearch.nameSpace은 우리 앞 에 ElasticSearch 설정 을 구축 하 는cluster.name입 니 다.필 자 는 여기 있 는 값 이CollectorDBCluster이 고 현재 구축 하고 있 는 ElasticSearch 의 주 소 를 수정storage.elasticsearch.clusterNodes합 니 다.
  • logs:collector 와 webapp-ui 가 생 성 한 로 그 를 저장 합 니 다.
  • webapp:Skywalking 에서 UI 를 보 여 주 는 jar 와 프로필 을 저장 합 니 다.

  • Skywalking 에서 기본적으로 사용 하 는 포트 는 8080,11800,12800 입 니 다.이 포트 들 이 점용 되 지 않도록 하 십시오.수정 이 필요 하 다 면config디 렉 터 리 의application.ymlwebapp디 렉 터 리 의webapp.yml를 수정 할 수 있 습 니 다.
    다음은 collector 와 webapp-ui 를 시작 하여 bin 디 렉 터 리 에 들 어가 명령./startup.sh을 실행 합 니 다.예 를 들 어:
    브 라 우 저 접근 열기http://192.168.44.128:8080/그림 과 같이 webapp-ui 의 계기판 을 볼 수 있 습 니 다.
    스 카 이 워 크 배 치 는 여기까지 입 니 다.스프링 클 라 우 드 가 스 카 이 워 크 와 어떻게 통합 되 는 지 소개 하 겠 습 니 다.
    5.2 스프링 클 라 우 드 통합 스 카 이 워 크 실전
    먼저 사례 내용 을 간단하게 소개 하고 저 희 는 Zul-Service,Eureka-Service,Consumer-Service 와 Provider-Service 등 4 개의 프로젝트 를 만 들 것 입 니 다.Zul-Service 를 통 해 Consumer-Service 에 방문 하고 Provider-Service 에 방문 하여 링크 호출 을 완료 할 것 을 요청 합 니 다.
    전체 구성 도 는 그림 과 같다.
    구체 적 인 구현 코드 목록 은 GitHub 창 고 를 참고 할 수 있 습 니 다(https://github.com/meteor1993...)스프링 클 라 우 드 가 스 카 이 워 크 와 어떻게 통합 되 는 지 소개 한다.
    스 카 이 워 크 의 프로 브 에이전트 를 사용 해 야 합 니 다.프로젝트 chapter 15 의 디 렉 터 리 에 폴 더 를 새로 만 듭 니 다.이름 은skywalking입 니 다.방금 압축 을 풀 었 던 스 카 이 워 크 의 에이전트 전체 폴 더 copyskywalking입 니 다.여기 서 시작 할 때 자바 에이전트 명령 으로 에이전트 프로 브 를 불 러 오 면 됩 니 다.아이디어 에서 사용 하려 면 시작 설정 을 수정 해 야 합 니 다.오른쪽 상단Edit Configurations...을 누 르 면 열 린 창 에서 선택Environment->VM Options하고 다음 스 크 립 트 를 설정 합 니 다.
    -javaagent:D:\Development\SpringCloudLearning\chapter15\skywalking\agent\skywalking-agent.jar
    -Dskywalking.agent.service_name=zuul-service
    -Dskywalking.collector.backend_service=192.168.44.128:11800

    그림:
    또한 자바-jar 방식 으로 에이전트 프로 브 를 불 러 올 수 있 습 니 다.우 리 는 전체 maven 프로젝트 를 포장 하여 mvn install 명령 을 실행 하고 자바-jar 방식 으로 시작 할 수 있 습 니 다.시작 명령 에 시작 파 라미 터 를 추가 합 니 다.다음 과 같 습 니 다.
    -javaagent:D:\Development\SpringCloudLearning\chapter15\skywalking\agent\skywalking-agent.jar -Dskywalking.agent.service_name=consumer-service -Dskywalking.collector.backend_service=192.168.44.128:11800 -jar zuul-0.0.1-SNAPSHOT.jar

    네 개의 프로젝트 를 순서대로 시작 한 후 브 라 우 저 로 접근 합 니 다:http://localhost:8080/client/hello?name=spring,몇 번 더 리 셋 한 후,우 리 는 브 라 우 저 를 사용 하여 방문 합 니 다.http://192.168.44.128:8080/예 를 들 면:
  • all_heatmap:모든 서비스 응답 시간의 핫 이 슈 그림
  • all_p99:모든 서비스 응답 시간의 p99 값
  • 상단 표시 줄 의 토폴로지 그림 을 클릭 하면 현재 우리 프로젝트 의 의존 토폴로지 관 계 를 볼 수 있 습 니 다.예 를 들 어:
    상단 표시 줄 의 추적 을 클릭 하면 왼쪽 은 현재 의 모든 방문 요청 을 볼 수 있 습 니 다.하 나 를 마음대로 클릭 하면 오른쪽 에서 상세 한 링크 추적 과정 을 볼 수 있 습 니 다.예 를 들 어:
    링크 를 클릭 하면 일부 태그 정 보 를 볼 수 있 습 니 다.점,범위 유형,성공 또는 실패,그리고 일부 Exception 정 보 를 포함 합 니 다.그림 과 같 습 니 다.
    계기판 페이지 의 Service 를 클릭 하면 평균 응답 시간,평균 스루풋,평균 지연 통계 등 서비스 와 관련 된 정 보 를 볼 수 있 습 니 다.그림 과 같 습 니 다.
  • service_instance_sla:서비스 실례 의 성 공률
  • service_instance_resp_time:서비스 인 스 턴 스 의 평균 응답 시간
  • service_instance_cpm:서비스 인 스 턴 스 분당 호출 횟수
  • 계기판 페이지 의 Endpoint 를 클릭 하면 점 과 관련 된 정 보 를 볼 수 있 습 니 다.그림 과 같 습 니 다.
  • endpoint_cpm:터미널 매 분 호출 횟수
  • endpoint_avg:단점 평균 응답 시간
  • endpoint_sla:단점 성 공률
  • endpoint_p99:점 응답 시간의 p99 값
  • 계기판 페이지 의 인 스 턴 스 를 클릭 하면 JVM 과 관련 된 정 보 를 볼 수 있 습 니 다.그림:
    이로써 스프링 클 라 우 드 와 스 카 이 워 크 의 소개 가 끝 났 으 며,관심 있 는 친 구 는 지 텀 의 공식 홈 페이지 를 방문 해 조회 할 수 있다.
    6.소결
    여기 서 전체 사례 의 시작 순 서 를 요약 한다.
  • ElasticSearch 시작
  • 컬렉터 시작
  • 웹-ui 시작(또는 통합 스 크 립 트 로 시작)
  • 에이전트 시작(유레카,provider,consumer,zuul)
  • 응용 호출
  • 웹-ui 방문 통계 보기
  • 이상 의 시작 순 서 는 독자 들 이 참고 할 수 있 도록 제공 합 니 다.독자 들 은 상기 순서에 따라 시작 하 는 것 이 좋 습 니 다.서로 다른 구성 요소 가 있 기 전에 서로 의존 하 는 관계 가 있 기 때문에 시작 순 서 를 임의로 바 꾸 면 알 수 없 는 문제 가 발생 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기