Instgo 是 ARMS 提供的 Golang 應用編譯工具,使用 instgo 編譯您的 Golang 專案後,ARMS 即可開始監控您的 Golang 應用,您可以查看應用拓撲、調用鏈路、SQL分析等一系列監控資料。
本文僅對版本大於等於 1.3.0 的 instgo 工具有效,您可以通過instgo version來查看您的 instgo 工具版本,如果您的 instgo 工具低於 1.3.0 版本,請參考開始監控 Go 應用一節將您的 instgo 升級到 1.3.0 版本。
前提條件
確保您的編譯環境和公網或阿里雲內網連通,且編譯環境所在安全性群組已開放 80 的 TCP 出方向許可權。
如果您需要在生產環境部署編譯製品,請額外配置編譯參數 LicenseKey、RegionId,詳情請參見下文開始監控 Go 應用。
下載 instgo
使用
wget命令下載編譯工具,請根據編譯環境和編譯機器所在地區,選擇對應的下載地址。需要注意,instgo 在編譯時間會觸發自動更新,請將 instgo 儲存在編譯使用者具有修改許可權的目錄下。
說明各地區下載的編譯工具是相同的,如果您的公網環境可以訪問OSS地址,可以直接使用對應作業系統和架構的杭州公網地址擷取編譯工具。
為編譯工具賦予可執行許可權。
Linux/Darwin
# 賦予可執行許可權 chmod +x instgoWindows
Windows中無需賦予可執行許可權。
檢查 instgo 是否可用。
執行 version 命令查看 instgo 版本,如果看到
Instgo version 1.3.0_dea8285的字樣則說明下載成功。Linux/Darwin
./instgo versionWindows
.\instgo.exe version(可選)將 instgo 工具添加到您編譯環境的 PATH 中。
使用 instgo 編譯 Golang 應用
編譯 Golang 應用時,需要保證您編譯環境的 PATH 中包含 go 命令,您可以在編譯環境中執行go version來驗證 go 命令是否在 PATH 中。
Golang 應用原本的編譯命令:
go build -ldflags "-X main.Env=prod -X main.Version=1.0.0" -o app main.go使用 instgo 前置位元型的編譯命令:
instgo go build -ldflags "-X main.Env=prod -X main.Version=1.0.0" -o app main.go如果您的 instgo 沒有儲存在 PATH 中,需要把首碼替換為 instgo 所在的相對路徑/絕對路徑:
/path/to/instgo go build -ldflags "-X main.Env=prod -X main.Version=1.0.0" -o app main.go為 instgo 配置編譯參數
instgo 為您的編譯提供了一系列的編譯參數,允許您控制 instgo 的編譯行為。您可以通過instgo list命令查看所有編譯參數以及當前的預設值。
您可以使用預設的參數完成 Golang 應用的編譯和部署,但如果您希望將製品部署到生產環境,建議指定 LicenseKey 和 RegionId 後再進行編譯。
Flag Key | Env Key | 參數類型 | 預設值 | 描述 |
--agentVersion | INSTGO_AGENT_VERSION | String | 無 | 指定 Golang 探針版本。 |
--agentPath | INSTGO_AGENT_PATH | String | 無 | 指定 Golang 探針為本地的特定地址。 |
--cacheDir | INSTGO_CACHE_DIR | String | 無 | 指定儲存 Golang 探針的緩衝目錄。 |
--dev | INSTGO_DEV | Bool | true | 指定編譯模式為開發模式,該模式用於測試準系統可用性,部分功能會有降級,線上使用請指定 LicenseKey。 |
--disableDefaultRule | INSTGO_DISABLE_DEFAULT_RULE | Bool | false | 是否關閉 ARMS 提供的代碼增強,如果開啟,則會屏蔽所有 ARMS 提供的自動代碼增強,請謹慎使用! |
--licenseKey | INSTGO_LICENSE_KEY | String | 無 | 指定 ARMS 的 LicenseKey,該參數指定後會預設關閉 dev 模式。您可以通過 OpenAPI 擷取 LicenseKey,具體操作請參見DescribeTraceLicenseKey - 列出LicenseKey。 |
--regionId | INSTGO_REGION_ID | String | cn-hangzhou | 指定拉取探針包/上報編譯日誌所在的地區,如果編譯環境為 VPC 環境,請將該地區修改為您編譯環境所在的地區。 |
--rule | INSTGO_RULE | String | 無 | 添加 Golang 探針代碼增強模板,詳細使用方式請參見使用Golang探針的自訂擴充能力。 |
--timeout | INSTGO_TIMEOUT | Int | 180 | 指定拉取 Golang 探針逾時時間,單位為秒。 |
--verbose | INSTGO_VERBOSE | Bool | false | 是否列印詳細的編譯日誌。 |
--vpc | INSTGO_VPC | Bool | false | 是否預設走內網拉取 Golang 探針。 |
--vendored | INSTGO_VENDORED | Bool | false | 使用vendor模式編譯。 |
--extra | INSTGO_EXTRA_RULES | String | 無 | 用於使用Arms Agent 提供的非Base 規則,如給Dify Plugin注入Python 探針(值為dify_python),目前只支援dify_python。 |
通過 set 命令指定編譯參數
您可以使用 set 命令修改編譯參數,該命令會將設定後的編譯參數儲存到$HOME/.instgo.yaml檔案中,後續的編譯命令會自動讀取該檔案中的預設值。
例如,指定編譯參數為生產模式,並指定 LicenseKey 和 RegionId:
instgo set --licenseKey=${ARMS_LICENSEKEY} --regionId=${ARMS_REGIONID} --dev=false後續執行的編譯過程,預設會採用上述預設好的編譯參數。
instgo go build -a重設編譯參數
使用 set 命令修改編譯參數後,您可以通過 reset 命令將所有的編譯參數重設回預設值。
instgo reset通過環境變數指定編譯參數
如果您的單次編譯需要添加額外的編譯參數,而又不希望將該編譯參數儲存使其影響到其他編譯命令,可以在編譯前使用環境變數來指定編譯參數,環境變數只會作用於當前命令列,不影響其他命令列執行的編譯命令。
例如,指定編譯參數為生產模式,並指定 licenseKey 和 regionId:
您可以通過DescribeTraceLicenseKeyOpenAPI擷取LicenseKey。
Linux/Darwin
export INSTGO_LICENSE_KEY=${ARMS_LICENSEKEY}
export INSTGO_REGION_ID=${ARMS_REGIONID}
export INSTGO_DEV="false"Windows
$env:INSTGO_LICENSE_KEY=${ARMS_LICENSEKEY}
$env:INSTGO_REGION_ID=${ARMS_REGIONID}
$env:INSTGO_DEV="false"當前命令列執行的編譯過程,預設會先查詢是否設定了對應的環境變數,若未設定,則採用 set 命令預設的編譯參數鏡像編譯。
instgo go build -a您也可以將編譯環境變數配置和編譯命令寫在同一行中:
Linux/Darwin
INSTGO_LICENSE_KEY=${ARMS_LICENSEKEY} INSTGO_REGION_ID=${ARMS_REGIONID} INSTGO_DEV="false" instgo go build -aWindows
$env:INSTGO_LICENSE_KEY=${ARMS_LICENSEKEY}; $env:INSTGO_REGION_ID=${ARMS_REGIONID}; $env:INSTGO_DEV="false"; instgo.exe go build -a清理 Golang 可觀測臨時檔案
您可以執行 clean 命令來清理目前的目錄下的編譯和運行殘留,例如:
instgo clean如果您需要刪除本機快取的 Golang 探針,可以添加--localAgentsflag :
instgo clean --localAgents手動升級 instgo 工具
如果您的 instgo 版本較低,您可以通過指定 update 命令來更新您的 instgo 和 Golang 探針,該命令會將您的 instgo 和 Golang 探針更新為當前線上可用的最新版本。例如:
instgo update預設情況下,instgo 會在編譯時間先按照 ARMS 的發布進度自動更新。在某些邊界情況下可能會偶發編譯失敗的問題,重試一次即可解決該問題。
如果您的 instgo 版本低於 1.3.0,
update命令可能不可用,請直接刪除該 instgo,重新下載最新版本的 instgo。
Instgo 發布記錄
版本 | 發布時間 | 發布說明 |
1.4.3 | 2025年12月9日 |
|
1.4.2 | 2025年10月28日 |
|
1.4.1 | 2025年10月14日 |
|
1.4.0 | 2025年09月11日 |
|
1.3.9 | 2025年08月05日 |
|
1.3.8 | 2025年05月29日 |
|
1.3.7 | 2025年05月19日 |
|
1.3.6 | 2025年04月28日 |
|
1.3.5 | 2025年04月17日 | instgo 支援vendor方式專案編譯。 |
1.3.4 | 2025年03月31日 | instgo 支援代理原生go命令。 |
1.3.3 | 2025年02月28日 | 更新預設 Agent 版本到1.6.0。 |
1.3.2 | 2025年01月17日 | 修複無 instgo 修改許可權使用者執行編譯時間,由於自動更新失敗導致的反覆更新問題。 說明 如果您的 instgo 具有該問題,請刪除 instgo 並重新下載。 |
1.3.1 | 2025年01月10日 | Linux/Darwin作業系統下,探針緩衝預設調整到 |
1.3.0 | 2024年12月05日 |
|