GCP Profiler 在 GKE 中找不到我的 Profiler 代理 运行

GCP Profiler does not find my profiler agent running in GKE

我在 GKE 中有一个 java 11 微服务 运行,我一直在尝试附加 GCP 提供的 java 分析代理。

我的Dockerfile如下:

FROM openjdk:11-jdk

# Default to UTF-8 file.encoding
ENV LANG C.UTF-8

WORKDIR /app

COPY ./build/libs/*.jar /app/app.jar
RUN mkdir -p /opt/cprof && \ 
   wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz \
  | tar xzv -C /opt/cprof

EXPOSE 80

CMD ["java", "-agentpath:/opt/cprof/profiler_java_agent.so=-cprof_service=sprofile-test-svc,-cprof_service_version=1.0.0,-cprof_project_id=project-id,-cprof_cpu_use_per_thread_timers=true,-cprof_enable_heap_sampling=true,-logtostderr,-minloglevel=2", \
 "-jar", "/app/app.jar" ]

但是,当我转到 GCP 中的 Profiler 仪表板时,它显示以下内容

No profiling data is found for project "txd-boss-dev", likely because no profiling agent has been configured or the timespan selected includes no profiles

一段时间后,我们发现 Dockerfile 和 deployment.yaml 文件都没有问题。微服务有一个特定的服务帐户,需要添加 cloudprofiler.agent 角色。