OpenTelemetry로 추적


추적을 통해 애플리케이션 내의 특정 병목 현상에 대한 뛰어난 통찰력을 얻을 수 있습니다. Google Cloud Run의 Fastify 애플리케이션 내에서 활성화OpenTelemetry하는 데 필요한 단계를 살펴보겠습니다. NearformDaily.Dev 웨비나에서 영감을 얻었습니다.

https://www.youtube.com/watch?v=UKaJDmwIIpE

기본적으로 Cloud Run에는 Cloud Run 인스턴스에 들어오는 요청에 대한 추적이 이미 활성화되어 있습니다. 따라서 콘솔에서 traces으로 이동하면 애플리케이션의 모든 HTTP 엔드포인트에 대한 몇 가지 추적이 표시되어야 합니다. 아래에서 예를 볼 수 있습니다.



이제 애플리케이션에 추가 계측을 추가할 수 있습니다. Google에서 제안한 여러 라이브러리가 있습니다.

  • OpenTelemetry : recommended by Google

  • OpenCensus : Google에서 언급조차 하지 않은 알파 지원 및 NodeJS 지원만 지원
  • Google Client library

  • OpenTelemetry



    OpenTelemetry의 웹사이트에 설명된 대로

    OpenTelemetry is a collection of tools, APIs, and SDKs. Use it to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) to help you analyze your software’s performance and behavior.



    아직 베타 버전이지만 곧 정식 출시될 예정입니다.

    설치 중



    기본 라이브러리에 필요한 호출을 패치할 수 있도록 애플리케이션 시작 시 모든 OpenTelemetry 패키지를 초기화해야 합니다. 이 예에서는 다음 계측 패키지와 함께 HTTP, TypeORM 및 Postgress 계측을 추가합니다.
  • @opentelemetry/instrumentation-http
  • @opentelemetry-instrumentation-typeorm
  • @opentelemetry/instrumentation-pg
  • import opentelemetry, { DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api';
    import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
    import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
    import { TraceExporter } from '@google-cloud/opentelemetry-cloud-trace-exporter';
    import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';
    import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
    import { registerInstrumentations } from '@opentelemetry/instrumentation';
    import { TypeormInstrumentation } from 'opentelemetry-instrumentation-typeorm';

    export function tracing() {
    // Enable OpenTelemetry exporters to export traces to Google Cloud Trace.
    // Exporters use Application Default Credentials (ADCs) to authenticate.
    // See https://developers.google.com/identity/protocols/application-default-credentials
    // for more details.
    const provider = new NodeTracerProvider();

    // Initialize the exporter. When your application is running on Google Cloud,
    // you don't need to provide auth credentials or a project id.
    const exporter = new TraceExporter();

    // Configure the span processor to send spans to the exporter
    provider.addSpanProcessor(new SimpleSpanProcessor(exporter));
    provider.register();
    opentelemetry.trace.setGlobalTracerProvider(provider);
    registerInstrumentations({
    instrumentations: [
    new HttpInstrumentation(),
    new PgInstrumentation(),
    new TypeormInstrumentation({
    // see under for available configuration
    }),
    ],
    });
    return { provider };
    }

    Google Cloud trace exporter은 Cloud Run 서비스 계정을 자동으로 사용하므로 이 서비스 계정에 Tracing API를 활용할 수 있는 액세스 권한이 있는지 확인하세요. IAM Console에서 이를 구성하거나 확인할 수 있습니다.

    이를 애플리케이션에 추가하고 Cloud Run에 배포하면 보다 심층적인 추적을 볼 수 있습니다. 추적 ID는 항상 요청의 응답 헤더인 'X-Cloud-Trace-Context'에서 찾을 수 있습니다.



    Google Cloud - 일일 분석 보고서



    이 추적 데이터를 Google Cloud에 제공하면 더 자세한 정보도 얻을 수 있습니다. 특정 API 호출에 상당한 영향을 미쳤던 예는 Google Cloud에서도 자동으로 감지됩니다.



    요약



    구현하기 쉽고 시간이 지남에 따라 더 많은 통찰력을 제공할 수 있습니다. Google Cloud Trace 대시보드는 매우 간단하고 사용하기 쉽기 때문에 진입 장벽이 상대적으로 낮습니다.

    좋은 웹페이지 즐겨찾기