Google Cloud Run 모니터링

Google Cloud Run ( GCP )에서 실행 중인 애플리케이션을 모니터링하려면 GCP 에이전트를 설정하고 Instana Google Cloud Run 인프로세스 수집기를 설치해야 합니다.

자세한 내용은 GCP 에이전트 설정Instana 설치 Google Cloud Run 인프로세스 수집기 설정을 참조하십시오.

Google Cloud Run 에 대한 지원은 다음 두 가지 핵심 원칙에 기반합니다:

  • Google Cloud Platform ( GCP ) 프로젝트 및 해당 리소스를 모니터링하는 Instana 호스트 에이전트.

    나머지 문서는 GCP 프로젝트를 GCP 에이전트로 모니터링하기 위한 Instana 호스트 에이전트 설정을 참조합니다.

    Instana 호스트 에이전트를 설정하여 GCP 프로젝트를 모니터링하면 해당 프로젝트에 포함된 Cloud Run 서비스 리비전의 메트릭을 제공합니다.

  • Instana Cloud Run에서 사용하는 컨테이너 이미지에 통합된 인프로세스 수집기.

    Docker 이미지에 Instana 인프로세스 수집기를 추가하면 Cloud Run이 시작하는 개별 인스턴스에 대한 가시성을 확보할 수 있으며, 런타임별 메트릭( JVM 메트릭, Node.js 메트릭,.Net 메트릭 등)을 제공하고 호출 추적 기능도 제공합니다.

참고: Instana 은 현재 완전 관리형 플랫폼만 지원합니다. Anthos 또는 GKE 의 Cloud Run은 지원되지 않습니다.

GCP 에이전트 설정

Google Cloud Run 인프로세스 수집기를 설치하기 전에, GCP 가 존재하는 호스트 머신에 Instana 호스트 에이전트가 설치되어 GCP 프로젝트를 모니터링할 수 있도록 해야 합니다. GCP 리소스를 모니터링하려면 전용 머신을 사용해야 합니다. 여러 GCP 프로젝트를 모니터링하려면 프로젝트당 하나의 에이전트가 필요합니다.

Instana 의 Google Cloud 통합은 서비스 계정을 사용하여 GCP 에이전트에서 GCP 관리 콘솔 API 에 연결합니다. 따라서 서비스 계정을 생성하고 해당 자격 증명을 GCP 에이전트에 제공해야 합니다. 이를 통해 에이전트가 사용자를 대신하여 API 호출을 수행할 수 있습니다.

참고: 다른 GCP 서비스(예: Google Cloud Storage, Google Cloud SQL )에 이미 설정해 놓은 경우 새 서비스 계정 생성을 건너뛸 수 있지만, Cloud Run에 대한 추가 권한을 부여해야 할 수 있습니다.
  1. Go Instana 통합을 설정하려는 Google Cloud 프로젝트의 Google Cloud 자격 증명 페이지 로 이동합니다.

  2. 자격 증명 생성 > 서비스 계정을 클릭하세요.

    SelectServiceAccount

  3. 서비스 계정 생성 페이지에서 서비스 계정의 고유한 이름을 입력한 후 [생성 및 계속 ]을 클릭합니다.

  4. 계정에 role Cloud Run Viewer 역할을 추가하십시오. 사용자 정의 역할도 생성할 수 있으며, 이 역할에는 최소한 다음 권한이 포함되어야 합니다:

    • resourcemanager.projects.get
    • run.revisions.list
    • run.services.list
    • monitoring.timeSeries.list

    사용자 정의 역할을 작성하려면 다음 단계를 완료하십시오.

    1. 탐색 메뉴에서 역할 > 역할 생성을 클릭하세요.
    2. 역할의 제목을 입력하고, '권한 추가'를 클릭하세요.
    3. 앞서 언급된 역할에 필요한 기본 권한을 추가하고 생성(CREATE)을 클릭하십시오.
  5. 서비스 계정 목록에서 생성한 계정을 선택하십시오.

  6. 키(KEYS) 탭을 선택하고 키 추가(ADD KEY )를 클릭하십시오.

  7. 새 키 생성을 선택하고 키 유형을 로 설정한 JSON 후, 생성 버튼을 클릭하세요.

    서비스 계정 키

    참고: 통합을 완료하려면 저장된 자격 증명 파일의 위치를 기록해야 합니다.
  8. 호스트 에이전트 *instanaAgentDir*/etc/instana/configuration.yaml 구성 파일에서 모든 GCP 리소스에 해당하는 섹션 com.instana.plugin.gcp 또는 Cloud Run 모니터링 전용 자격 증명을 위한 com.instana.plugin.gcp.run 섹션에 credentials_path 필드를 추가하십시오. 필드의 credentials_path 값은 자격 증명 파일의 경로입니다. 자세한 내용은 선택적 구성을 참조하십시오.

GCP 프로젝트를 모니터링하려면 다음 서비스를 활성화해야 합니다:

선택적 구성

투표율

GCP 에이전트의 구성 파일에 다음 구성을 추가하여 GCP 에이전트가 API 메트릭을 초 단위로 폴링하는 빈도를 설정할 수 있습니다:

com.instana.plugin.gcp.run:
  enabled: tru
  poll_rate: 60  # How often Google's metrics API will be polled
  credentials_path: '/opt/instana/credentials/cred-gcp.json'  # Path to Service Account credentials
  include_tags:
    ...
  exclude_tags:
    ...
 

필터링

여러 태그를 쉼표로 구분하여 정의할 수 있습니다. 태그는 문자로 : 구분된 키-값 쌍으로 제공되어야 합니다. 설정을 더 쉽게 하기 위해, 검색 과정에 포함(또는 제외)할 태그를 정의할 수 있습니다. 두 목록(포함 및 제외)에 동일한 태그가 존재하는 경우, 제외 목록이 우선순위가 높습니다. 서비스 필터링이 필요하지 않은 경우, 및 include_tags 속성은 exclude_tags 생략해야 합니다.

태그를 사용하여 Cloud Run 서비스 리비전을 포함하거나 제외하려면 다음 구성을 사용하십시오:

com.instana.plugin.gcp.run:
  include_tags: # Comma separated list of tags in key:value format (e.g. env:dev,env:test)
  exclude_tags: # Comma separated list of tags in key:value format (e.g. env:dev,env:test)
 

Instana 설치 Google Cloud Run 인프로세스 수집기

Cloud Run 서비스 개정 인스턴스에 대한 추적 데이터, 런타임별 메트릭 및 추가 데이터를 수집하려면 기술별 단계를 따르십시오:

Java

Java 의 Cloud Run 인프로세스 수집기는 containers.instana.io/instana/release/google/cloud-run/jvmDocker 이미지를 통해 제공됩니다. 다단계 빌드( Docker )를 사용하여 Google Cloud Run 에서 실행되는 Java 애플리케이션용 Docker 이미지 빌드를 다음과 같이 간소화하고 가속화할 수 있습니다.

마지막 ` FROM ` 절 뒤에 다음 Dockerfile 줄을 추가하십시오:

COPY --from=containers.instana.io/instana/release/google/cloud-run/jvm /instana /instana
ENV JAVA_TOOL_OPTIONS="-javaagent:/instana/instana-standalone-collector.jar"
 

Java 의 Cloud Run 인프로세스 수집기를 사용할 경우, 이미지 빌드 외에 Instana 수집기를 구성하기 위해 필요한 추가 단계는 'Cloud Run 서비스 구성' 섹션에 설명된 대로 서비스 리비전에 두 환경 변수를 추가하는 것뿐입니다.

참고:

  • 빌드 프로세스에 사용하는 Docker 데몬은 에 로그인되어 있어야 containers.instana.io 합니다.

  • Google Cloud Run 에서 실행 중인 Java 프로세스에 대한 자동 프로파일링은 지원되지 않습니다.

Node.js

Node.js 의 Cloud Run 인프로세스 수집기는 icr.io/instana/google-cloud-run-nodejsDocker 이미지를 통해 제공됩니다. 다음과 같이 Cloud Run에서 실행되는 Node.js 애플리케이션의 Docker 이미지 빌드를 간소화하고 가속화하기 위해 다단계 Docker 빌드에서 사용할 수 있습니다. 애플리케이션이 CommonJS, 를 사용하여 개발된 경우 해당 CommonJS 섹션의 단계를 따르십시오. 애플리케이션이 ECMAScript 모듈로 개발된 경우, ECMAScript 모듈 섹션의 단계를 따르십시오.

Instana 현재 x86_64 아키텍처만 지원합니다.

이 이미지는 FedRAMP-compliant 환경에서 사용하기 위한 것이 아닙니다.

CommonJS

마지막 ` FROM ` 절 뒤에 다음 Dockerfile 줄을 추가하십시오:

COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN /instana/setup.sh
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
 

ECMAScript 모듈

마지막 `FROM 절 뒤에 다음 Dockerfile 줄을 추가하십시오 ( Node.js18.19 및 이후 버전):

COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN /instana/setup.sh
ENV NODE_OPTIONS="--import=/instana/node_modules/@instana/google-cloud-run/esm-register.mjs"

컨테이너를 빌드하고 원하는 이미지 저장소로 푸시하세요.

마지막으로, '클라우드 런 서비스 구성' 섹션에 설명된 구성 단계를 따르십시오.

참고:
  • Node.js 버전이 18.19.0 보다 이전 버전인 경우, 대신 --import /instana/node_modules/@instana/google-cloud-run/esm-register.mjs--experimental-loader /instana/node_modules/@instana/google-cloud-run/esm-loader.mjs 사용해야 합니다.
  • 현재 버전에서는 와 --experimental-loader 의 사용이 esm-loader.mjs 더 이상 지원되지 않으며, 다음 업그레이드에서 제거될 예정입니다. 자세한 내용은 '중대한 변경 사항' 섹션을 참조하십시오.
  • 다단계 빌드를 사용하는 경우(즉, 빌드 파일에 여러 개의 FROM `build Dockerfile` 절이 있는 경우), 빌드 파일의 마지막 FROM `build` Dockerfile절에 다음 줄을 추가해야 합니다.
  • Cloud Run에서 실행 중인 Node.js 프로세스에 대한 자동 프로파일링은 지원되지 않습니다.

버전화

다음 명령어를 실행하면 사용 가능한 모든 버전을 확인할 수 있습니다:

curl -s https://icr.io/v2/instana/google-cloud-run-nodejs/tags/list | jq .

자세한 내용은 Node.js 버전 관리 문서를 참조하십시오.

빌드 종속성 및 네이티브 애드온

Node.js 컨테이너에 필요한 패키지가 포함되지 않은 최소한의 기본 이미지를 사용하는 경우, Node.js Docker 과정에서 다음과 같은 경고가 표시될 수 있습니다.

gyp ERR! ...some error message from trying to rebuild native add-ons, for example:
gyp ERR! stack Error: Could not find any Python installation to use
...
Warning: Rebuilding native add-ons for @instana/google-cloud-run failed. Monitoring the Cloud Run service revision instance will work nonetheless, but you will miss some Node.js metrics (GC metrics, event loop metrics, ...). See https://www.instana.com/docs/ecosystem/google-cloud-run/#build-dependencies-and-native-add-ons for details.
 

로그 메시지가 시사하듯, Instana 을 통해 Node.js Cloud Run 서비스 리비전 인스턴스를 모니터링하는 것은 작동합니다. 그러나 특정 지표가 누락되어 있습니다. Instana 빌드 중에는 최소한 일시적으로라도 누락된 운영 체제 패키지를 설치할 것을 권장합니다. 그것들은 최종 이미지에 포함될 필요가 없습니다. 설치할 패키지와 설치 방법은 사용 중인 배포판에 따라 다릅니다.

Linux® 에 대한 다음 Dockerfile 예제 스니펫을 참조하십시오: Alpine :

COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN apk add --no-cache --virtual .gyp \
        build-base \
        python \
    && /instana/setup.sh \
    && apk del .gyp python
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
 

Debian 기반 배포판( Ubuntu 포함)의 경우 다음 예시를 참조하십시오:

COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN apt-get update \
    && apt-get install build-essential \
    && /instana/setup.sh \
    && apt-get remove -y build-essential
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
 

( CentOS,RHEL, yum ...)를 사용하는 배포판의 경우, 필요한 패키지를 설치하는 명령어는 다음과 같습니다:

RUN yum groupinstall "Development Tools"
 

Go

Go Fargate 수집기는 부터 github.com/instana/go-sensorv1.22.0 포함되어 있으며, 'Cloud Run 서비스 구성' 섹션에 설명된 환경 변수 설정 외에 다른 구성이 필요하지 않습니다. 추적기는 앱이 Google Cloud Run 에서 실행 중임을 감지하고 수집기를 자동으로 활성화합니다.

.NET Core

Instana 가 Cloud Run에서 실행되는.Net Core 애플리케이션을 지원하려면 다음 단계를 수행해야 합니다:

  1. Instana NuGet 패키지를 애플리케이션에 포함하십시오.
  2. 클라우드 런 서비스 구성 섹션에 설명된 환경 변수를 설정하십시오.

이제 준비 완료입니다. 나머지는 모두 자동으로 처리됩니다.

NuGet 패키지를 컨테이너 이미지에 추가하기

Docker 이미지 빌드 시점에 Instana 의 NuGet 패키지를 추가하도록 Dockerfile을 수정하는 방법은 다음 예시를 참조하십시오:

# If running on Alpine or muslc-based images
RUN dotnet add Instana.Tracing.Core.Rewriter.Alpine
# Glibc-based images like RHEL and Debian derivatives
RUN dotnet add Instana.Tracing.Core.Rewriter.Linux

# set CoreCLR tracing environment variables
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER={cf0d821e-299b-5307-a3d8-b283c03916dd}
ENV CORECLR_PROFILER_PATH=/app/instana_tracing/CoreProfiler.so
ENV DOTNET_STARTUP_HOOKS=/app/Instana.Tracing.Core.dll
 
중요:
  • 컨테이너가 사용하는 lib의 버전에 따라 두 가지 패키지가 제공됩니다:

    • muslcAlpine 기반 컨테이너에서 사용되는 Instana.Tracing.Core.Rewriter.Alpine 패키지가 필요합니다.

    • glibcAlpine 를 제외한 거의 모든 배포판에서 사용하는,. Instana.Tracing.Core.Rewriter.Linux가 필요합니다.

  • 의 실제 경로를 애플리케이션 /app/ 루트 경로로 대체하십시오.

  • 클라우드 런 서비스 구성 섹션에 설명된 환경 변수를 설정하는 것을 잊지 마십시오.

Python

Python 애플리케이션에서 Google Cloud Run 지원을 받으려면 다음 단계를 따르십시오:

  1. PIP instana 패키지를 설치하십시오

    pip install instana
     
  2. 애플리케이션 코드에 Instana Collector for Google Cloud Run 를 임포트하여 가져옵니다

    import instana
     
    중요: '클라우드 런 서비스 구성' 섹션에 설명된 환경 변수를 설정하는 것을 잊지 마십시오.

Cloud Run 서비스 구성

참고:

  • 이 지침은 Cloud Run에서 모든 Instana 인프로세스 수집기 설정에 공통적으로 적용됩니다.

  • 이 섹션에 설명된 단계를 수행하기 전에, 애플리케이션이 사용하는 런타임에 특화된 지침에 따라 컨테이너 이미지가 빌드되었는지 확인하십시오.

Cloud Run의 모든 Instana 인프로세스 수집기는 Instana 백엔드에 연결하고 인증하기 위해 공통 설정 값 세트가 필요합니다:

  1. Cloud Run 서비스의 수정본을 생성합니다.

    Cloud Run 서비스 개정판 생성

  2. 서비스 수정 구성 페이지에서 고급 설정 > 변수로 이동하십시오.

    컨테이너 정의 편집

  3. 컨테이너 사양에 다음 두 환경 변수를 추가하십시오:

    • INSTANA_ENDPOINT_URL이것은 귀하의 서버리스 모니터링 엔드포인트입니다. 해당 지역에 맞는 올바른 값을 사용하십시오. 값은 다음과 같이 시작합니다: https://serverless-
    • INSTANA_AGENT_KEY: 귀하의 에이전트 키.

메트릭 보기

메트릭을 보려면 다음 단계를 완료하십시오:

  1. Instana UI의 사이드바에서 인프라를 선택합니다.
  2. 모니터링 중인 특정 호스트를 클릭하십시오.

그러면 수집된 모든 메트릭과 모니터링 중인 프로세스가 표시된 호스트 대시보드를 확인할 수 있습니다.

구성 데이터

다음 정적 구성 데이터는 각 서비스 개정판별로 수집됩니다:

  • 지역,
  • 서비스 이름,
  • 구성 이름,
  • 수정명,
  • 프로젝트 ID,
  • 숫자 프로젝트 ID(프로젝트 번호),
  • 수정본 생성 시간,
  • 수정 레이블

여러 리비전이 있는 Cloud Run 서비스의 경우, GCP 에이전트는 가장 최근 리비전의 데이터를 수집합니다.

성능 매트릭

메트릭 설명
요청 개수 수정본에 도달한 요청 수 컨테이너 인스턴스에 도달하지 못하는 요청(예: 권한이 없는 요청 또는 최대 인스턴스 수에 도달한 경우)은 제외됩니다.
요청 지연 시간 99번째 백분위수 리퀘스트 지연 시간 분포의 99번째 백분위수(해당 리비전에 도달한 리퀘스트 기준, 밀리초 단위).
요청 지연 시간 95thh 백분위수 리퀘스트 지연 시간 분포의 95번째 백분위수(해당 리비전에 도달한 리퀘스트 기준, 밀리초 단위).
요청 지연 시간 50번째 백분위수 리퀘스트 지연 시간 분포의 50번째 백분위수(리퀘스트가 리비전에 도달한 경우, 밀리초 단위).
청구 가능한 인스턴스 시간 해당 버전의 모든 컨테이너 인스턴스에서 집계된 청구 가능 시간. 주어진 컨테이너 인스턴스의 경우, 청구 가능한 시간은 컨테이너 인스턴스가 시작 중이거나 최소한 하나의 요청이 처리 중인 시점에 발생합니다. 청구 가능한 시간은 가장 가까운 100밀리초 단위로 올림 처리됩니다.
컨테이너 메모리 할당 99번째 백분위수 99h 리비전의 컨테이너 메모리 할당량의 백분위수(기가바이트-초 단위).
컨테이너 메모리 할당 95번째 백분위수 95h 리비전의 컨테이너 메모리 할당량의 백분위수(기가바이트-초 단위).
컨테이너 메모리 할당 50번째 백분위수 50h 리비전의 컨테이너 메모리 할당량의 백분위수(기가바이트-초 단위).

모든 메트릭의 세분화 수준은 60초입니다.