對於運行在ACK叢集中的Golang應用,您可以通過安裝ack-onepilot組件並構建應用的容器鏡像,並通過編譯工具instgo編譯應用的Golang二進位檔案。完成部署後,您便能在Application Real-Time Monitoring Service (ARMS)中查看對應應用的應用拓撲、介面調用、資料庫分析等監控資料。
前提條件
-
已建立ACK叢集。具體操作,請參見建立ACK託管叢集或建立ACK專有叢集(已停止建立)。
-
已確保所使用的Golang應用版本為1.18及以上。
-
已開通ARMS。
ARMS是一款阿里雲應用效能管理(APM)類監控產品,如需瞭解ARMS的詳細資料,請參見什麼是應用即時監控服務ARMS?、什麼是應用監控。
步驟一:安裝ARMS應用監控接入組件ack-onepilot
舊版應用監控組件arms-pilot已不再維護,您可以安裝升級後的ack-onepilot組件用於監控您的應用,ack-onepilot完全相容arms-pilot,您無需修改應用配置即可無縫接入ack-onepilot。更多資訊,請參見如何卸載arms-pilot和安裝ack-onepilot。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理。
-
在日誌與監控地區,定位ack-onepilot組件,單擊組件卡片的安裝,按照頁面指引在對話方塊配置相關的參數(建議使用預設值),單擊確認完成組件的安裝。
說明請確保ack-onepilot的版本為3.2.4及以上。ack-onepilot組件預設支援1000個Pod規模,叢集Pod每超過1000個,ack-onepilot資源對應的CPU請增加0.5核、記憶體請增加512MB。
安裝完成後,您可以在組件管理頁面升級、配置或卸載ack-onepilot組件。
步驟二:授予ARMS資源的存取權限
-
如需監控ACK叢集應用,但ACK叢集中不存在
addon.arms.token,請執行以下操作手動為叢集授予ARMS資源的存取權限。如果已經存在addon.arms.token,則無需執行授權操作。說明當ACK叢集中存在
addon.arms.token時,ARMS能夠自動完成免密授權過程。通常情況下,ACK託管叢集預設配備了addon.arms.token。然而,對於一些較早建立的ACK託管叢集來說,可能存在缺少addon.arms.token的情形。-
檢查
addon.arms.token是否存在。 -
如果
addon.arms.token存在,無需執行後續授權操作。否則,請執行以下操作手動為叢集授予ARMS資源的存取權限。登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
-
在基本資料頁簽下,單擊叢集資源地區內的Worker RAM 角色右側的連結。
-
在角色頁面的許可權管理頁簽上,單擊新增授權。
-
選擇許可權為AliyunARMSFullAccess,然後單擊確定。
-
-
如需監控對接了ECI的ACK託管叢集應用,請在存取控制快速授權頁面完成授權,然後重啟ack-onepilot組件下的所有Pod。
步驟三:編譯Golang二進位檔案
您可以通過使用增強Golang編輯工具instgo,並結合本地的Golang編譯環境(Golang版本需為1.18以上),來編譯Golang程式,以產生能夠向Application Real-Time Monitoring Service (ARMS)上報監控資料的二進位檔案。
(可選)若專案在編譯時間包含vendor目錄,請在
go build後添加-mod=vendor。使用
wget命令下載編譯工具instgo,請根據編譯環境和編譯機器所在地區,選擇對應的下載地址。需要注意,instgo 在編譯時間會觸發自動更新,請將 instgo 儲存在編譯使用者具有修改許可權的目錄下。
說明Instgo 是 ARMS 提供的 Golang 應用編譯工具,使用 instgo 編譯您的 Golang 專案後,ARMS 即可開始監控您的 Golang 應用。
各地區下載的編譯工具是相同的,如果您的公網環境可以訪問OSS地址,可以直接使用對應作業系統和架構的杭州公網地址擷取編譯工具。
為編譯工具賦予可執行許可權。
Linux/Mac
# 賦予可執行許可權 chmod +x instgoWindows
Windows中無需賦予可執行許可權。
(可選)配置LicenseKey或Uid作為編譯參數。
重要如果您跳過該步,instgo會預設為您安裝最新版本的ARMS探針。
您可以通過DescribeTraceLicenseKey OpenAPI擷取LicenseKey。
在DescribeTraceLicenseKey文檔頁面單擊調試,選擇地區後單擊發起調用即可擷取LicenseKey。

使用set命令配置uid或者licensekey作為編譯參數。
instgo set --uid={YourAliyunUid} //需要使用instgo 1.4.5及以上版本,uid為阿里雲主帳號uid instgo set --licenseKey=${YourLicenseKey} // uid和licensekey只需要配置一個
將instgo作為首碼添加到您原有的編譯命令前並執行編譯。
instgo go build {arg1} {arg2} {arg3}如果您使用go install編譯專案,也可以直接將instgo作為首碼添加到您原有的編譯命令前並執行編譯。
使用上一步編譯的二進位檔案構建鏡像。
步驟四:為Golang應用開啟ARMS應用監控
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
-
在無狀態頁面,單擊目標應用右側。
在YAML檔案中將以下
labels添加到spec.template.metadata層級下。labels: aliyun.com/app-language: golang # Go應用必填,標明此應用是Go應用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "<your-deployment-name>" #請將<your-deployment-name>替換為您的應用程式名稱。
步驟五:查看監控詳情
(可選)步驟六:釋放資源
如果無需繼續監控當前應用,請卸載探針。具體操作,請參見卸載Golang探針。
相關文檔
如需瞭解如何將ACK叢集下的Java應用或Python應用接入ARMS應用監控,請參見Java應用監控、Python應用監控。
> YAML 編輯