노드를 체크합니다.OpenTelemetry가 있는 js 응용 프로그램

내가 처음으로 뉴 리릭에 가입했을 때, 나는 전단 배경에서 왔기 때문에 관찰력의 중요성을 정말 이해하지 못했다.내가 왜 개발자에게 관찰성이 가치가 있는지 이해하기 시작했을 때 나는 개원 생태계를 깊이 연구하고 현대 응용 프로그램이 정상적인 운행 시간을 유지할 수 있도록 하는 것이 무엇인지 이해하기 시작했다.OpenTelemetry에 대한 정보를 더 많이 알았습니다. 이것은 응용 프로그램과 사이트를 감시하는 데 사용되는 유행하는 소스 오픈 도구입니다. 그러나 이것은 매우 무섭습니다. 왜냐하면 인터넷에서 제가 검사 과정을 완성하는 데 지도하는 입문 강좌를 찾을 수 없기 때문입니다.
내가 OpenTelemetry documentation를 사용해서 내 프로그램을 설치하기 시작했을 때, 나는 비로소 시작하기가 얼마나 쉬운지 깨달았다.Open915를 사용하여 초보자에게 적합한 프로그램을 만들기 시작합니다.나는 애니아 쿠보우(Ania Kubów)라는 기술 콘텐츠 창작자와 협업해 이 시간의 동영상 수업을 현실화했다.본 과정은 OpenTelemetry를 어떻게 사용하는지 가르치는데 마이크로 서비스, 관측성, 추적 등을 포함한다.

무료 디코더 증폭기.조직하다 노드를 체크합니다.OpenTelemetry가 있는 js 응용 프로그램


시스템이 갈수록 복잡해지면서 시스템의 내부 작업을 이해하여 성능과 신뢰성을 높이는 것이 점점 중요해진다.분포식 추적은 모든 요청이 응용 프로그램을 통해 개발자에게 사건을 해결하는 상하문을 제공하고 시스템의 어떤 부분이 느리거나 파손되었는지 보여 줍니다.
단일 추적은 브라우저나 모바일 장치에서 데이터베이스로 요청하는 경로를 보여 줍니다.전체적인 보기 추적을 통해 개발자는 응용 프로그램의 어떤 부분이 성능에 가장 큰 영향을 미치는지 신속하게 발견할 수 있다. 왜냐하면 이것은 사용자의 체험에 영향을 미치기 때문이다.
이것은 매우 추상적이지, 그렇지?따라서 문제를 규명하는 데 도움을 줄 구체적인 예에 집중하자.OpenTelemetry를 사용하여 샘플 프로그램에서 추적을 생성하고 볼 것입니다.

영화 어플리케이션 가속화


우리는 두 개의 마이크로 서비스, 영화, 계기판으로 구성된 간단한 프로그램을 만들었다.movies 서비스는 JSON 형식으로 영화 명칭과 그 유파를 제공하고 dashboard 서비스는 영화 서비스에서 결과를 되돌려준다.

응용 프로그램을 시작하려면
$ npm i
$ node dashboard.js
$ node movies.js
movies 마이크로 서비스에 내장된 변수 delay 를 주의하십시오. 이것은 JSON으로 돌아가는 무작위 지연을 초래할 수 있습니다.
const express = require('express')
const app = express()
const port = 3000

app.get('/movies', async function (req, res) {
   res.type('json')
+  var delay = Math.floor( ( Math.random() * 2000 ) + 100);
+  setTimeout((() => {
      res.send(({movies: [
         { name: 'Jaws', genre: 'Thriller'},
         { name: 'Annie', genre: 'Family'},
         { name: 'Jurassic Park', genre: 'Action'},
      ]}))
+  }), delay)
})

👉 재구매 계약 복제 오픈 원격 테스트를 사용하여 HTTP 요청 추적


OpenTelemetry는 추가 ID를 통해 HTTP 요청을 추적하여 전송합니다.이 점을 하려면 우리가 필요로 한다

  • 데이터 흐름을 위한 실례화 추적 제공 프로그램

  • 익스포터가 있는 추적 공급자를 설정하여 원격 측정 데이터를 다른 시스템으로 보내면 원격 측정 데이터를 보고 저장하며 분석할 수 있습니다.

  • OpenTelemetry 플러그인을 기기별 노드 모듈에 설치하여 각종 프레임워크
  • 에 기기를 자동으로 제공
    Zipkin 인스턴스를 실행하려면 기계에 Docker를 설치해야 합니다.만약 당신이 아직 Docker가 없다면, 그것은 설치하기 매우 쉽다.Zipkin은 트위터에서 만든 오픈 소스 분산 추적 시스템으로 서비스 아키텍처 지연 문제를 해결하는 데 필요한 시간 데이터를 수집합니다.OpenZipkin 자원 봉사 단체가 현재 그것을 실행하고 있습니다.마지막으로, 4단계에서 OpenTelemetry 데이터를 New Relic으로 내보내려면, 원격 측정 데이터를 무료로, 영구적으로 분석, 저장하고 사용하도록 등록하십시오.

    1단계: 추적 공급자를 만들고 내보내기를 사용하여 설정합니다


    추적 공급자를 만들려면 다음 도구를 설치해야 합니다.
    $ npm install @opentelemetry/node
    

    NodeJS용 OpenTelemetry 자동 기기 패키지

    @opentelemetry/node 모듈은 노드에 자동 검측을 제공한다.js 응용 프로그램, 응용 프로그램의 프레임워크 (Express), 일반 프로토콜 (HTTP), 데이터베이스 및 기타 라이브러리를 자동으로 식별합니다.이 모듈은 다른 커뮤니티에서 공헌한 플러그인을 사용하여 프로그램을 자동으로 감지하고, 경계를 자동으로 생성하며, 몇 줄의 코드만 있으면 추적할 수 있습니다.

    OpenTelemetry 플러그인


    플러그인을 설치하려면:
    $ npm install @opentelemetry/plugin-http
    $ npm install @opentelemetry/plugin-express
    
    NodeJS의 HTTP 모듈이 API 요청을 처리할 때 @opentelemetry/plugin-http 플러그인은 추적 데이터를 생성합니다.@opentelemetry/plugin-express 플러그인은 Express 프레임워크를 통해 보낸 요청에 따라 추적 데이터를 생성합니다.

    2단계: Track Provider 및 Span 프로세서 추가


    추적 프로그램을 응용 프로그램에 구현하면 발생하는 작업의 시간과 메타데이터를 기록합니다. 예를 들어 웹 서버가 언제 요청을 받았는지, 언제 응답을 보냈는지 정확하게 기록합니다.
    이 코드 세그먼트 추가
  • 추적 공급자 만들기
  • 추적 공급자
  • 에 스핀 프로세서 추가
    이 코드는 로컬 응용 프로그램에서 데이터를 가져와 터미널로 인쇄합니다.
    const { NodeTracerProvider } = require('@opentelemetry/node');
    const { ConsoleSpanExporter, SimpleSpanProcessor } = require('@opentelemetry/tracing');
    
    const provider = new NodeTracerProvider();
    const consoleExporter = new ConsoleSpanExporter();
    const spanProcessor = new SimpleSpanProcessor(consoleExporter);
    provider.addSpanProcessor(spanProcessor);
    provider.register()
    
    이 코드에 대한 정보를 더 알고 싶으면 를 보십시오.
    이 코드 세션을 추가하면 언제 다시 불러올지 http://localhost:3001/dashboard 터미널에서 비슷한 것들, 예쁜 것들을 볼 수 있습니다.
    OpenTelemetry docs on tracers

    3단계: Docker를 사용하여 Zipkin 설치 및 추적 응용 프로그램 시작


    이전 단계에서 OpenTelemetry를 삽입했습니다.이제 수집된 데이터를 실행 중인 Zipkin 인스턴스로 이동합니다.
    Zipkin 인스턴스를 로 회전시킵니다.
    $ docker run -d -p 9411:9411 openzipkin/zipkin
    
    Zipkin 인스턴스가 시작되고 실행됩니다.웹 브라우저를 가리키기 Docker Hub Image 를 통해 불러올 수 있습니다.이런 걸 보게 될 거예요.
    http://localhost:9411

    Zipkin으로 수출하기


    깔끔하지만 터미널 창의 간격은 서비스의 가시성을 얻는 나쁜 방법이다.터미널에서 JSON 데이터를 스크롤하지 않으려고 하지 않습니다.반면 계기판에서는 가시화 효과를 보기 쉽다.우리 지금부터 시작합시다.이전 단계에서, 우리는 시스템에 컨트롤러 내보내기를 추가했다.지금 너는 이 데이터를 키프킨에게 전송해라.
    이 코드 세그먼트에서 Zipkin 익스포터를 인스턴스화한 다음 추적 공급자에 추가합니다.
    const { NodeTracerProvider } = require('@opentelemetry/node')
    const { ConsoleSpanExporter, SimpleSpanProcessor } = require('@opentelemetry/tracing')
    + const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin')
    const provider = new NodeTracerProvider()
    const consoleExporter = new ConsoleSpanExporter()
    const spanProcessor = new SimpleSpanProcessor(consoleExporter)
    provider.addSpanProcessor(spanProcessor)
    provider.register()
    
    + const zipkinExporter = new ZipkinExporter({
    +  url: 'http://localhost:9411/api/v2/spans',
    +  serviceName: 'movies-service'
    })
    
    + const zipkinProcessor = new SimpleSpanProcessor(zipkinExporter)
    + provider.addSpanProcessor(zipkinProcessor)
    
    변경 사항이 완료되면 localhost: 9411에 있는 Zipkin 실례에 접근해서 프로그램을 다시 시작하고 URL을 요청합니다.

    4단계: OpenTelemetry Collector를 사용하여 New Relic으로 데이터 내보내기


    OpenTelemetry 데이터를 다른 백엔드에 보내고 싶은데, 원격 측정 데이터를 모두 관리할 필요가 없다면, 무슨 일이 일어날까요?
    좋아, OpenTelemetry의 걸출한 공헌자가 이 문제를 해결하기 위한 해결 방안을 생각해 냈어!

    OpenTelemetry Collector는 개발자가 원격 측정 데이터를 수신하고 처리하여 여러 백엔드로 내보내는 방식이다.이 채집기는 중개 역할을 하여 기기에서 데이터를 얻고 이를 여러 개의 백엔드에 보내서 데이터를 저장하고 처리하며 분석한다.
    Zipkin, Jaeger,Prometheus, Fluent Bit 등 다양한 소스 오픈 관측 가능한 데이터 형식을 지원하며, 이를 한 개 이상의 소스 또는 비즈니스 백엔드로 보냅니다.

    새로운 유적지


    New Relic은 원격 측정 데이터를 무료로 영구적으로 분석, 저장 및 사용할 수 있는 플랫폼입니다.
    Sign up now!

    New Relic을 사용하여 OpenTelemetry Collector 구성


    클론 을 생성하고 docker 컨테이너를 회전하여 New Relic API 키를 내보냅니다.
    키를 가져오려면 New Relic one 대시보드로 이동하고 오른쪽 상단의 드롭다운 메뉴에서 API 키를 선택합니다.
    OpenTelemetry Collector with New Relic Exporter
    그런 다음 API 키 창에서 키 만들기 버튼을 클릭합니다.

    키를 만들 때 섭취 허가증 키 형식을 선택해야 합니다.그런 다음 키 만들기를 클릭하여 키를 생성합니다.

    API 키가 있으면 다음 코드 세그먼트의 <INSERT-API-KEY-HERE>를 API 키로 대체해야 합니다.
    export NEW_RELIC_API_KEY=<INSERT-API-KEY-HERE>
    docker-compose -f docker-compose.yaml up
    

    💡 Make sure to change the reporting URL from http://localhost:9411/api/v2/spans to http://localhost:9411/ in both dashboard.js and movies.js


    const zipkinExporter = new ZipkinExporter({
    - url: 'http://localhost:9411/api/v2/spans',
    + url: 'http://localhost:9411',
      serviceName: 'movies-service'
    })
    

    5단계:너 좀 봐.✨ 멋진 데이터✨


    의 리소스 매니저 탭으로 이동합니다.
    New Relic One
    네가 서비스를 눌렀을 때, 너는 아마도 약간의 것을 볼 수 있을 것이다✨아름다웠어✨ 자취!
    대시보드의 추적은 API 호출에 추가된 임의 지연에 대한 데이터를 전송합니다.

    마지막 생각


    응용 프로그램에 Open Telemetry를 삽입하면 응용 프로그램의 일부분이 느리게 실행되고 고장이 나거나 둘 다 있을 때 발생하는 문제를 쉽게 찾아낼 수 있다.수집기를 사용하면 데이터를 어디에나 전송할 수 있기 때문에 공급업체에 영원히 잠기지 않습니다.New Relic과 같은 전용 백엔드를 사용하거나, 직접 백엔드를 시작할 수 있습니다.네가 무엇을 선택하든지 간에, 나는 네가 여행 중에 모든 것이 순조롭기를 바란다.

    다음 단계

    You can try out New Relic One with OpenTelemetry by signing up for our always free tier today.

    To learn more about OpenTelemetry, look for our upcoming Understand OpenTelemetry blog series.

    좋은 웹페이지 즐겨찾기