infrablockchain-docs
ko
ko
  • 인프라블록체인
    • 배우기
      • 아키텍처
        • 아키텍처
        • 네트워크 참여자
        • 파라체인
          • 시스템 파라체인
      • 프로토콜
        • 시스템 토큰
        • 트랜잭션 수수료
        • Proof of Transaction
      • Substrate
        • 배우기
          • 기초 지식
            • 암호학
            • 블록체인 기본 개념
            • 합의
            • 네트워크와 노드
            • 트랜잭션과 블록 기본 사항
            • 트랜잭션 수명주기
            • 오프체인 작업
            • 라이트 클라이언트
            • Substrate를 위한 Rust
            • 라이브러리 소개
            • 아키텍처와 Rust 라이브러리
            • 파일 구조
            • 계정, 주소 및 키
            • 트랜잭션 형식
            • 난수 생성
          • 프레임
            • FRAME 팔레트
            • FRAME 매크로
            • 커스텀 팔레트
            • 팔레트 커플링
            • Origin
            • 이벤트와 에러
            • 런타임 스토리지 구조
            • 상태 전이와 스토리지
            • SCALE 인코딩
            • 트랜잭션, Weight 및 수수료
            • 런타임 API
            • 런타임 업그레이드
            • 런타임 개발
          • 계정 데이터 구조
          • 주소 형식
          • 용어집
          • cli
            • 아카이브
            • 메모리 프로파일러
            • 노드 템플릿
            • 사이드카
            • srtool
            • 서브키
            • subxt
            • try-runtime
            • tx-wrapper
          • 런타임 개발
            • 기본
              • Genesis 상태 구성하기
              • 런타임 상수 구성
              • 체인 스펙을 커스텀하기
              • 팔레트 가져오기
              • 도우미 함수 사용하기
            • 합의 모델
              • 작업 증명을 사용하는 체인 구성
              • 하이브리드 노드 생성하기
            • 오프체인 워커
              • 오프체인 HTTP 요청하기
              • 오프체인 인덱싱
              • 오프체인 로컬 스토리지
            • 팔레트 설계
              • 크라우드펀딩 구성하기
              • 스토리지 구조체 (struct) 생성하기
              • 잠금 가능한 통화 구현
              • 무작위성 적용하기
              • 느슨한 팔레트 결합 사용하기
              • 타이트한 팔레트 결합 사용하기
            • 파라체인 개발
              • HRMP 채널 추가하기
              • 로컬 파라체인 노드 추가하기
              • 릴레이 체인에 연결하기
              • 솔로 체인을 변환하기
              • 론칭 준비
              • 콜레이터 선택
              • 파라체인 업그레이드
            • 스토리지 마이그레이션
              • 기본 저장소 마이그레이션
              • 스토리지 마이그레이션 트리거
            • 테스트
              • 기본 테스트 설정하기
              • 전송 함수 테스트하기
            • 도구
              • 체인을 위한 txwrapper 생성
              • REST 엔드포인트를 사용하여 체인 데이터 가져오기
              • try-runtime 사용하기
              • Wasm 바이너리 검증하기
            • 가중치
              • 벤치마크 추가
              • 수수료 계산하기
              • 조건부 가중치 사용
              • 사용자 정의 가중치 사용하기
        • 빌드하기
          • 제작할 것을 결정하세요
          • 빌드 프로세스
          • 결정론적 런타임 빌드
          • 체인 스펙
          • Genesis 구성
          • 애플리케이션 개발
          • RPC
          • 문제 해결
        • 튜토리얼
          • 설치하기
            • 개발자 도구
            • 리눅스 개발 환경
            • macOS 개발 환경
            • Rust 툴체인
            • Rust 문제 해결 방법
            • Windows 개발 환경
          • 빠른 시작
            • 코드 탐색하기
            • 런타임 수정하기
            • 노드 시작하기
            • Substrate 한눈에 보기
          • 블록체인 구축
            • 신뢰할 수 있는 노드 추가
            • 특정 노드 승인
            • 로컬 블록체인 구축하기
            • 네트워크 시뮬레이션
            • 실행 중인 네트워크 업그레이드
          • 애플리케이션 로직 구축
            • 런타임에 팔레트 추가하기
            • 오프체인 워커 추가
            • 사용자 정의 팔레트 게시
            • 함수 호출의 출처 지정하기
            • 사용자 정의 팔레트에서 매크로 사용하기
          • 유용한 도구들
            • EVM 계정에 접근하기
            • 이더리움 통합
            • 사이드카 엔드포인트 탐색하기
            • 경량 클라이언트 노드 통합
          • 스마트 컨트랙트
            • 스마트 컨트랙트
            • 토큰 계약 작성하기
            • 스마트 컨트랙트 개발하기
            • 첫 번째 계약 준비하기
            • 스마트 컨트랙트 문제 해결
            • 값 저장을 위한 맵 사용
      • XCM
        • XCM
        • XCM 형식
    • 서비스 체인
      • 인프라DID
      • 인프라EVM
      • URAuth(Universal Resource Auth)
    • 데브 옵스
      • 체인 빌드
      • 배포
      • 모니터링
    • 튜토리얼
      • 기초
        • 시스템 토큰 관리 프로세스
        • 시스템 토큰을 트랜잭션 수수료로 사용해보기
        • 트랜잭션에 투표 포함 시키기
        • 밸리데이터 보상 받기
      • 구축하기
        • 인프라릴레이체인 구축하기
        • 파라체인 구축하기
        • 메시지 전달 채널 열기
        • XCM을 이용하여 토큰 전송하기
        • Asynchronous Backing 적용하기
      • 테스트
        • 벤치마크
        • 런타임 확인
        • 디버그
        • 테스트 네트워크에서 파라체인 시뮬레이션하기
        • 단위 테스트
      • 서비스체인
        • 인프라DID
          • 구축하기
          • 공개키 추가하기
          • 서비스 엔드포인트 등록하기
          • DID 생성하기
        • 인프라EVM
          • 구축하기
          • EVM에 자금 입금 및 인출하기
          • ERC20 토큰 컨트랙트 배포하기
          • ERC721 토큰 컨트랙트 배포하기
          • ERC1155 토큰 컨트랙트 배포하기
  • 뉴날 데이터 마켓
Powered by GitBook
On this page
  • 시작하기 전에
  • 튜토리얼 목표
  • Prometheus와 Grafana 설치하기
  • Substrate 노드 시작하기
  • Prometheus 엔드포인트 구성하기
  • Grafana 데이터 소스 구성하기
  • 템플릿 대시보드 가져오기
  • 다음 단계로 넘어가기
  1. 인프라블록체인
  2. 데브 옵스

모니터링

관찰 도구를 사용하여 Substrate 노드에 대한 정보를 캡처하고 확인합니다.

Previous배포Next튜토리얼

Last updated 1 year ago

Substrate는 네트워크 작업에 대한 메트릭을 노출합니다. 예를 들어, 노드가 연결된 피어 수, 노드가 사용하는 메모리 양, 생성되는 블록 수 등에 대한 정보를 수집할 수 있습니다. Substrate 노드가 노출하는 메트릭을 캡처하고 시각화하기 위해 와 와 같은 도구를 구성하고 사용할 수 있습니다.

이 튜토리얼에서는 Prometheus를 사용하여 데이터 샘플을 수집하고, Grafana를 사용하여 데이터 샘플을 사용하여 노드 메트릭을 시각화하는 그래프와 대시보드를 생성하는 방법을 보여줍니다.

다음 다이어그램은 '노드 메트릭을 시각화할 때 Substrate, Prometeus 및 Grafana 간의 상호 작용'에 대한 간략한 개요를 제공합니다:

시작하기 전에

시작하기 전에 다음을 확인하세요:

튜토리얼 목표

이 튜토리얼을 완료함으로써 다음 목표를 달성할 수 있습니다:

  • Prometheus와 Grafana를 설치합니다.

  • Prometheus를 구성하여 Substrate 노드의 시계열 데이터를 캡처합니다.

  • Grafana를 구성하여 Prometheus 엔드포인트를 사용하여 수집된 노드 메트릭을 시각화합니다.

Prometheus와 Grafana 설치하기

테스트 및 데모 목적으로, 도구를 직접 빌드하거나 Docker 이미지를 사용하는 대신 Prometheus와 Grafana의 컴파일된 bin 프로그램을 다운로드하는 것이 좋습니다. 아키텍처에 맞는 바이너리를 다운로드하기 위해 다음 링크를 사용하세요. 이 튜토리얼에서는 작업 디렉토리에서 컴파일된 바이너리를 사용한다고 가정합니다.

이 튜토리얼에서 도구를 설치하려면 다음 단계를 따르세요:

  1. 컴퓨터에서 브라우저를 엽니다.

  2. 컴퓨터의 터미널 쉘을 열고 다운로드한 파일에서 내용을 추출하기 위해 다음과 유사한 명령을 실행합니다.

    예를 들어, macOS에서는 다음과 유사한 명령을 실행할 수 있습니다:

    gunzip prometheus-2.38.0.darwin-amd64.tar.gz && tar -xvf prometheus-2.38.0.darwin-amd64.tar
  3. 아키텍처에 맞는 사전 컴파일된 바이너리를 선택합니다.

  4. 컴퓨터의 터미널 쉘을 열고 아키텍처에 맞는 명령을 실행하여 설치합니다.

    예를 들어, Homebrew가 설치된 macOS에서는 다음 명령을 실행할 수 있습니다:

    brew update
    brew install grafana

Substrate 노드 시작하기

  1. 컴퓨터에서 터미널 쉘을 엽니다.

  2. 필요한 경우 노드 템플릿 디렉토리의 루트로 이동합니다. 다음 명령을 실행하여 이동할 수 있습니다:

    cd substrate-node-template
  3. 다음 명령을 실행하여 개발 모드에서 노드 템플릿을 시작합니다:

    ./target/release/node-template --dev

Prometheus 엔드포인트 구성하기

Prometheus 다운로드를 추출할 때 생성된 디렉토리에는 prometheus.yml 구성 파일이 포함되어 있습니다. 이 파일을 수정하거나 커스텀 구성 파일을 생성하여 Substrate 노드가 메트릭을 노출하는 기본 Prometheus 포트 엔드포인트(포트 9615)에서 데이터를 가져올 수 있도록 Prometheus를 구성할 수 있습니다. --prometheus-port <포트 번호> 명령줄 옵션을 사용하여 지정한 포트로 변경할 수도 있습니다.

Substrate 노출 엔드포인트를 Prometheus 대상 목록에 추가하려면 다음 단계를 수행하세요:

  1. 컴퓨터에서 새로운 터미널 쉘을 엽니다.

  2. Prometheus 작업 디렉토리의 루트로 이동합니다.

  3. 텍스트 편집기에서 prometheus.yml 구성 파일을 엽니다.

  4. scrape_config 엔드포인트로 substrate_node를 추가합니다.

    예를 들어, 다음과 유사한 섹션을 추가합니다:

     # A scrape configuration containing exactly one endpoint to scrape:
     scrape_configs:
       - job_name: "substrate_node"
    
         scrape_interval: 5s
    
         static_configs:
           - targets: ["localhost:9615"]

    이 설정은 substrate_node 작업에 대한 스크래핑 대상의 전역 기본값을 재정의합니다. 블록 시간보다 작은 값을 scrape_interval로 설정하여 모든 블록에 대한 데이터 포인트가 있는지 확인하는 것이 중요합니다. 예를 들어, Polkadot 블록 시간은 6초이므로 scrape_interval을 5초로 설정합니다.

  5. 수정된 prometheus.yml 구성 파일로 Prometheus 인스턴스를 시작합니다.

    예를 들어, 현재 Prometheus 작업 디렉토리에 있고 기본 구성 파일 이름을 사용하는 경우 다음 명령을 실행하여 Prometheus를 시작합니다:

    ./prometheus --config.file prometheus.yml

    이 프로세스를 실행한 상태로 둡니다.

  6. 새로운 터미널 쉘을 열고 다음 명령을 실행하여 Substrate 노드에 대한 메트릭을 검색합니다:

    curl localhost:9615/metrics

    이 명령은 다음과 유사한 출력을 반환합니다(일부 예시만 표시됨):

    # HELP substrate_block_height Block height info of the chain
    # TYPE substrate_block_height gauge
    substrate_block_height{status="best",chain="dev"} 16
    substrate_block_height{status="finalized",chain="dev"} 14
    substrate_block_height{status="sync_target",chain="dev"} 16
    # HELP substrate_block_verification_and_import_time Time taken to verify and import blocks
    # TYPE substrate_block_verification_and_import_time histogram
    substrate_block_verification_and_import_time_bucket{chain="dev",le="0.005"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="0.01"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="0.025"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="0.05"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="0.1"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="0.25"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="0.5"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="1"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="2.5"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="5"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="10"} 0
    substrate_block_verification_and_import_time_bucket{chain="dev",le="+Inf"} 0
    substrate_block_verification_and_import_time_sum{chain="dev"} 0
    substrate_block_verification_and_import_time_count{chain="dev"} 0
    # HELP substrate_build_info A metric with a constant '1' value labeled by name, version
    # TYPE substrate_build_info gauge
    substrate_build_info{name="ruddy-afternoon-1788",version="4.0.0-dev-6a8b2b12371",chain="dev"} 1
    # HELP substrate_database_cache_bytes RocksDB cache size in bytes
    # TYPE substrate_database_cache_bytes gauge
    substrate_database_cache_bytes{chain="dev"} 0
    # HELP substrate_finality_grandpa_precommits_total Total number of GRANDPA precommits cast locally.
    # TYPE substrate_finality_grandpa_precommits_total counter
    substrate_finality_grandpa_precommits_total{chain="dev"} 76
    # HELP substrate_finality_grandpa_prevotes_total Total number of GRANDPA prevotes cast locally.
    # TYPE substrate_finality_grandpa_prevotes_total counter
    substrate_finality_grandpa_prevotes_total{chain="dev"} 77
    # HELP substrate_finality_grandpa_round Highest completed GRANDPA round.
    # TYPE substrate_finality_grandpa_round gauge
    substrate_finality_grandpa_round{chain="dev"} 76
    ...

Grafana 데이터 소스 구성하기

운영 체제에 적합한 명령을 실행하여 Grafana를 설치한 후, 로컬 컴퓨터에서 서비스를 시작하여 브라우저에서 액세스할 수 있습니다. 서비스를 시작하는 데 사용되는 명령은 로컬 시스템 아키텍처 및 패키지 관리자에 따라 다릅니다. 예를 들어, macOS와 Homebrew를 사용하는 경우 다음 명령을 실행하여 Grafana를 시작할 수 있습니다:

brew services start grafana

Grafana를 시작한 후, 브라우저에서 Grafana로 이동할 수 있습니다.

  1. 브라우저를 열고 Grafana가 사용하는 포트로 이동합니다.

    기본적으로 Grafana는 http://localhost:3000을 사용하지만, 호스트 또는 포트를 다른 값으로 구성한 경우 해당 값을 사용합니다.

  2. 기본 admin 사용자 이름과 비밀번호 admin을 사용하여 로그인한 다음 Log in을 클릭합니다.

  3. 환영 페이지에서 Configuration 메뉴 아래에 있는 Data Sources를 클릭합니다.

  4. Prometheus를 클릭하여 Prometheus 엔드포인트를 Substrate 노드 메트릭의 데이터 소스로 구성합니다.

    Substrate 노드와 Prometheus 인스턴스가 모두 실행 중인 경우, Grafana를 기본 포트 http://localhost:9090 또는 커스텀한 포트 정보를 구성한 경우 해당 포트에 Prometheus를 찾도록 구성합니다.

    prometheus.yml 파일에서 설정한 Prometheus 포트를 지정하지 않아야 합니다. 해당 포트는 노드가 데이터를 게시하는 포트입니다.

  5. Save & Test를 클릭하여 데이터 소스가 올바르게 설정되었는지 확인합니다.

    데이터 소스가 작동하는 경우, 노드 메트릭을 표시할 대시보드를 구성할 준비가 되었습니다.

템플릿 대시보드 가져오기

대시보드 템플릿을 가져오려면 다음 단계를 수행하세요:

  1. Grafana 환영 페이지에서 Dashboards를 클릭합니다.

  2. 왼쪽 탐색에서 Dashboards를 클릭하고 Browse를 선택합니다.

  3. 검색 옵션에 대한 New를 클릭하고 Import를 선택합니다.

  4. Load를 클릭합니다.

  5. 대시보드의 이름, 폴더 및 고유 식별자를 검토하고 필요한 경우 수정합니다.

  6. **Prometheus (default)**를 선택한 다음 Import를 클릭합니다.

다음 단계로 넘어가기

을 설치하여 Substrate 개발 환경을 구성했는지 확인하세요.

및 을 포함한 이전 튜토리얼 중 일부를 완료했는지 확인하세요.

에서 적절한 사전 컴파일된 바이너리를 다운로드합니다.

로 이동합니다.

Substrate은 포트 9615에서 으로 메트릭을 제공하는 엔드포인트를 노출합니다. --prometheus-port 명령줄 옵션을 사용하여 포트를 변경하고, --prometheus-external 명령줄 옵션을 사용하여 로컬 호스트 이외의 인터페이스에서 액세스할 수 있도록 설정할 수 있습니다. 간단하게 설명하기 위해, 이 튜토리얼에서는 Substrate 노드, Prometheus 인스턴스 및 Grafana 서비스가 모두 로컬에서 기본 포트를 사용하여 실행되고 있다고 가정합니다.

또는 브라우저에서 동일한 엔드포인트를 열어 사용 가능한 모든 메트릭 데이터를 확인할 수 있습니다. 예를 들어, 기본 Prometheus 포트를 사용하는 경우 브라우저에서 를 엽니다.

다른 운영 체제에서 Grafana를 시작하는 방법에 대한 자세한 내용은 해당하는 를 참조하세요.

시작하기 위해 기본 대시보드가 필요한 경우, 을 가져와 노드에 대한 기본 정보를 얻을 수 있습니다.

을 복사하여 Import via panel json 텍스트 상자에 붙여넣습니다.

은 Substrate 기반 체인에서 사용할 수 있으며, Grafana Labs 대시보드 갤러리에서도 다운로드할 수 있습니다.

커스텀 대시보드를 만들고 싶다면 을 참조하세요.

커스텀 대시보드를 만든 경우, 에 업로드하는 것을 고려하세요.

리포지토리에 대시보드를 등록하여 Substrate 빌더 커뮤니티에 알릴 수 있습니다.

Rust 및 Rust 도구 체인
로컬 블록체인 구축
네트워크 시뮬레이션
Prometheus 다운로드 페이지
Grafana OSS 다운로드 페이지
Prometheus 노출 형식
http://localhost:9615/metrics
Grafana 문서
Substrate 대시보드 템플릿
Substrate 대시보드 템플릿
Substrate 대시보드 템플릿
Prometheus 문서의 Grafana 섹션
Grafana 대시보드
Awesome Substrate
신뢰할 수 있는 노드 추가
노드 모니터링
Substrate Prometheus Exporter
Polkadot 네트워크 대시보드
Prometheus
Grafana
Prometheus와 Grafana를 사용하여 노드 메트릭 시각화하기
Substrate 대시보드 템플릿