Monitoring Google Cloud 執行
若要監視在 Google Cloud 執行 (GCP) 上執行的應用程式,您需要 設定 GCP 代理程式 ,然後 安裝 Instana Google Cloud 執行處理程序收集器。
Google Cloud Run 的支援取決於下列兩個支柱:
Instana 主機代理程式,用來監視 Google Cloud Platform (GCP) 專案及其資源。
其餘文件會參照 Instana 主機代理程式設定,以將 GCP 專案監視為 GCP 代理程式。
設定 Instana 主機代理程式來監視 GCP 專案,會提供該專案所包含「雲端執行」服務修訂的度量值。
Instana in-process 收集器已整合至您在 Cloud Run 上使用的容器映像檔。
將 Instana 程序收集器新增至 Docker 映像檔,可將可見性新增至 Cloud Run 啟動的個別實例,提供執行時期特定度量值 (例如 JVM 度量值、 Node.js 度量值、.Net 度量值) ,並提供呼叫追蹤。
附註:
- Instana 目前僅支援完整受管理平台。 不支援 Anthos 或 GKE 上的雲端執行。
設定 GCP 代理程式
在安裝 Google Cloud 執行程序內收集器之前,請確定 Instana 主機代理程式已安裝在 GCP 所在的主機上,以監視 GCP 專案。 需要使用專用機器來監視 GCP 資源。 如果您想要監視多個 GCP 專案,則每個專案需要一個代理程式。
Instana Google Cloud 整合會使用服務帳戶,從 GCP 代理程式連接至 GCP 管理 API。 因此,您需要建立服務帳戶,並將其認證提供給 GCP 代理程式,以便它可以代表您進行 API 呼叫。
附註: 如果您已針對另一個 GCP 服務 (例如 Google Cloud Storage、 Google Cloud SQL) 設定它,則可以跳過建立新的服務帳戶,但可能需要為「雲端執行」新增額外的許可權。
移至您要設定 Instana 整合之 Google Cloud 專案的 Google Cloud 認證頁面 。
按 建立認證 ,然後選取 服務帳戶金鑰。

在 服務帳戶 清單中,選取 新建服務帳戶。
為服務帳戶提供唯一名稱。
將角色
Cloud Run Viewer新增至帳戶。 或者,您也可以建立至少具有下列許可權的自訂角色:resourcemanager.projects.getrun.revisions.listrun.services.listmonitoring.timeSeries.list
選取 JSON 作為金鑰類型,然後按 建立。
請記下此檔案的儲存位置,因為需要它才能完成整合。
在主機代理程式配置檔
<instana-agent-dir>/etc/instana/configuration.yaml檔案中,將欄位credentials_path新增至com.instana.plugin.gcp區段 (適用於所有 GCP 資源) 或com.instana.plugin.gcp.run區段 (僅用於監視雲端執行的認證)。 此欄位的值是認證檔的路徑。 (如需範例,請參閱 選用配置 一節。)
如果要監視 GCP 專案,必須啟用下列服務:
選用配置
輪詢率
您可以將下列配置新增至 GCP 代理程式的 配置檔 ,以配置 GCP 代理程式輪詢度量 API 的速率 (以秒為單位):
com.instana.plugin.gcp.run:
enabled: true
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 執行進行中收集器
若要收集「雲端執行」服務修訂實例的追蹤資料、執行時期特定度量值及額外資料,請遵循下列步驟:
自動安裝: 使用 Instana Cloud 原生建置套件 for Google Cloud 執行
適用於 Google Cloud 執行的 Instana Cloud 原生建置套件 會自動為您在上執行的「雲端執行」應用程式新增處理中收集器:
- Java ®
- Node.js
- .NET Core
使用 Google Cloud 的 Instana 雲端原生建置套件,就像從應用程式資料夾執行下列指令一樣簡單:
# Replace <download_key> with a valid download key; we need to be logged in containers.instana.io because that is where the buildpack image lives
docker login containers.instana.io -u _ -p <download_key>
# Replace <image-name> with your actual image name
pack build <image-name> --buildpack from=builder --buildpack containers.instana.io/instana/release/google/buildpack --builder gcr.io/buildpacks/builder
pack 指令的 --buildpack from=builder 選項未記載] (https://github.com/buildpacks/docs/issues/258) ,可讓您在建置程序中考量建置器所隨附的所有建置套件,即使有建置套件明確提及 (即 --buildpack containers.instana.io/instana/release/google/buildpack) 也一樣。
當您將 Instana Cloud Native 建置套件用於 Google Cloud Run 時,配置 Instana 收集器所需的唯一額外步驟是將兩個環境變數新增至服務修訂,如 配置雲端服務執行 小節中所述。
手動安裝
本節說明當您無法使用 適用於 Google Cloud 執行的 Instana Cloud 原生建置套件 時,或當 Cloud Run 應用程式以 Go 撰寫時,如何為 Cloud Run 新增 Instana 程序收集器。
Java
Java Cloud Run in-process 收集器是透過 containers.instana.io/instana/release/google/cloud-run/jvm Docker 映像檔交付。 您可以在多步驟 Docker 建置中使用,以針對在 Google Cloud 上執行的 Java 應用程式,簡化並加速建置 Docker 映像檔,如下所示執行。
將下列行新增至 Dockerfile 最後一個 FROM 子句之後的任何位置:
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 in-process 收集器時,除了建置映像檔之外,配置 Instana 收集器所需的唯一額外步驟是將兩個環境變數新增至服務修訂,如 配置雲端執行服務 一節中所述。
附註:
您用於建置程序的 Docker 常駐程式需要登入
containers.instana.io。不支援在 Google Cloud Run 中執行之 Java 處理程序的 自動設定檔 。
Node.js
Node.js Cloud Run in-process 收集器透過 icr.io/instana/google-cloud-run-nodejs Docker 映像檔交付。 您可以在多步驟 Docker 建置中使用,來簡化及加速建置在雲端執行之 Node.js 應用程式的 Docker 映像檔,如下所示。 如果您的應用程式是使用 CommonJS來開發,請遵循 CommonJS 一節中的步驟。 如果您的應用程式是在 ECMAScript 模組中開發,請遵循 ECMAScript 模組 一節中的步驟。
CommonJS
將下列行新增至 Dockerfile 最後一個 FROM 子句之後的任何位置:
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 模組
將下列行新增至 Dockerfile 最後一個 FROM 子句之後的任何位置:
COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN /instana/setup.sh
ENV NODE_OPTIONS="--experimental-loader=/instana/node_modules/@instana/google-cloud-run/esm-loader.mjs"
建置容器,並將它推送至您選擇的映像檔儲存庫。
最後,遵循 配置雲端執行服務一節中說明的配置步驟。
附註:
版本化
不論現行主要版本為何, icr.io/instana/google-cloud-run-nodejs:latest 都會使用最新可用的映像檔版本。 例如,如果發行新的主要版本 v4 ,且目前您的映像檔版本是 v3,則在下一次重建時,如果您使用標籤 ":latest" ,則映像檔會自動更新為 v4 。
附註:如果您不想要該行為,請使用特定主要映像檔版本 (例如 icr.io/instana/google-cloud-run-nodejs:1 (v1)) ,並手動更新至下一個主要版本。
- 如需相關資訊,請參閱 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.
如日誌訊息所示,監視 Node.js Cloud Run service revision instance with Instana 可運作。 但遺漏某些度量值。 Instana 建議在建置期間至少暫時安裝遺漏的作業系統套件。 它們不需要包含在最終映像檔中。 要安裝哪些套件,以及如何安裝它們,視您使用的發行套件而定。
請參閱下列適用於 Linux® Alpine的範例 Dockerfile Snippet:
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"
對於使用 yum (CentOS、RHEL ...) 的發行套件, 用來安裝必要套件的指令如下:
RUN yum groupinstall "Development Tools"
從 containers.instana.io 取得 Node.js Layer
如果您也搭配使用 Instana 的「雲端執行」支援與其他執行時期 (例如 Java) ,且映像檔層只能在已鑑別登錄 containers.instana.io上使用,且您想要讓事物保持一致,則也可以從 containers.instana.io 而非公用 IBM 容器登錄取得 Node.js Instana Cloud Run 映像檔層,作為上述方法的替代方案。
由於 containers.instana.io 登錄需要鑑別,您需要先執行下列指令,才能在 Docker 建置中使用它:
docker login -u _ -p <your-agent-key> containers.instana.io
位置保留元 <your-agent-key> 需要取代為實際的 Instana 代理程式金鑰。 這需要在您建置 Docker 映像檔的機器上完成。
將下列行新增至 Dockerfile 最後一個 FROM 子句之後的任何位置:
COPY --from=containers.instana.io/instana/release/google/cloud-run/nodejs:latest /instana /instana
RUN /instana/setup.sh
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
Go
Go Fargate 收集器包含在從 v1.22.0 開始的 github.com/instana/go-sensor 中,除了設定 配置雲端執行服務 一節中說明的環境變數之外,不需要額外配置。 追蹤程式會偵測應用程式正在 Google Cloud 上執行執行,並自動啟動收集器。
.Net 核心
Instana 支援在 Cloud Run 中執行的 .Net Core 應用程式需要下列步驟:
- 將 Instana Nuget 套件併入應用程式。
- 設定 配置雲端執行服務 區段中說明的環境變數。
你可以走了剩下的都是自動化的
將 NuGet 套件新增至容器映像檔
若要修改 Dockerfile ,以在建置 Docker 映像檔時新增 Instana 的 NuGet 套件,請參閱下列範例:
# 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 特性提供兩個不同的套件:
muslc(由 Alpine型儲存器使用) 需要Instana.Tracing.Core.Rewriter.Alpine套件。glibc,由幾乎所有非Alpine 發行套件使用,需要Instana.Tracing.Core.Rewriter.Linux。
將
/app/取代為應用程式根目錄的實際路徑。請記得設定 配置雲端執行服務 小節中說明的環境變數。
Python
對於 Google Cloud 在 Python 應用程式中執行支援,請遵循下列步驟:
安裝
instanaPIP 套件pip install instana匯入 Instana Collector for Google Cloud 執行,方法是將它匯入至應用程式碼
import instana重要事項: 請記得設定 配置雲端執行服務 一節中說明的環境變數。
配置 Cloud Run 服務
附註:
這些指示是在「雲端執行」上設定所有 Instana 程序中收集器的一般指示。
在遵循本節中說明的步驟之前,請確定已根據應用程式所使用執行時期的特定指示來建置容器映像檔。
Cloud Run 上所有 Instana 處理程序收集器都需要一組共用的配置值,才能連接至 Instana 後端並向其進行鑑別:
檢視度量值
若要檢視度量值,請完成下列步驟:
- 在 Instana 使用者介面的資訊看板中,選取 基礎架構。
- 按一下特定的受監視主機。
然後,您可以查看包含所有已收集度量及受監視處理程序的主機儀表板。
配置資料
針對每一個服務修訂收集下列靜態配置資料:
- 區域,
- 服務名稱,
- 配置名稱,
- 修訂名稱,
- 專案 ID ,
- 數值專案 ID (專案號碼) ,
- 修訂的建立時間,
- 修訂標籤
對於具有多個修訂的「雲端執行」服務, GCP 代理程式會收集最新修訂的資料。
效能度量
| 度量 | 說明 |
|---|---|
| 要求計數 | 達到修訂的要求數。 排除未達到容器實例的要求 (例如未獲授權要求或達到實例數上限時)。 |
| 要求延遲 99th 百分位數 | 99th 百分位數,代表要求延遲的分佈 (毫秒) (針對達到修訂的要求)。 |
| 要求延遲 95thh 百分位數 | 95th 百分位數,代表要求延遲的分佈 (毫秒) (針對達到修訂的要求)。 |
| 要求延遲 50th 百分位數 | 50th 百分位數,代表要求延遲的分佈 (毫秒) (針對達到修訂的要求)。 |
| 可計費實例時間 | 從修訂的所有容器實例聚集的可入帳時間。 對於給定的容器實例,當容器實例正在啟動或至少正在處理一個要求時,會發生可入帳時間。 可入帳時間會四捨五入至最接近的 100 毫秒。 |
| 儲存器記憶體配置 99th 百分位數 | 修訂之儲存器記憶體配置的 99h 百分位數 (以 GB-秒為單位)。 |
| 儲存器記憶體配置 95th 百分位數 | 修訂之儲存器記憶體配置的 95h 百分位數 (以 GB-秒為單位)。 |
| 儲存器記憶體配置 50th 百分位數 | 修訂之儲存器記憶體配置的 50h 百分位數 (以 GB-秒為單位)。 |
所有度量的精度為 60 秒。

