當您需要監控部署在Container Service Kubernetes 版ACK或Container Compute ServiceACS中的Go應用時,通過安裝ARMS應用監控組件ack-onepilot並編譯Go二進位檔案,即可在應用即時監控服務ARMS中查看對應應用的應用拓撲、介面調用、資料庫分析等相關監控資料。本文將介紹如何為部署在Container Service Kubernetes 版ACK或Container Compute ServiceACS中的Go應用安裝探針。
Container Service Kubernetes 版ACK和Container Compute ServiceACS安裝探針的操作相同,本文以Container Service Kubernetes 版ACK為例示範安裝探針的操作。
如果您在使用Golang探針過程中有任何問題,歡迎通過DingTalk答疑群(群號:159215000379)與我們聯絡。
前提條件
-
建立ACK叢集或ACS叢集。
ACK叢集:建立ACK託管叢集、建立ACK One註冊叢集、建立ACK專有叢集(已停止建立)、建立ACK Serverless叢集。
ACS叢集:建立ACS叢集。
建立命名空間,具體操作,請參見管理命名空間與配額。本文樣本中的命名空間名稱為default。
檢查您的編譯環境作業系統和架構,以及Go版本和架構版本。具體要求,請參見ARMS應用監控支援的Go組件和架構。
步驟一:授予 ARMS 資源的存取權限
ACK託管叢集
如果ACK託管叢集中不存在ARMS Addon Token,請執行以下操作手動為叢集授予ARMS資源的存取權限。
叢集存在ARMS Addon Token時,ARMS會進行免密授權。Kubernetes託管版叢集預設存在ARMS Addon Token,但對於部分早期建立的Kubernetes託管版叢集,可能會存在沒有ARMS Addon Token的情況,因此,對於Kubernetes託管版叢集,建議首先檢查ARMS Addon Token是否存在。若不存在,需進行手動授權。
專有版叢集/註冊叢集
如果需要監控ACK專有版叢集和ACK One註冊叢集應用,請確認對應的阿里雲帳號已包含AliyunARMSFullAccess和AliyunSTSAssumeRoleAccess許可權。添加許可權的操作,請參見管理RAM使用者的許可權。
安裝ack-onepilot組件後,還需要在ack-onepilot中填寫有ARMS許可權的阿里雲帳號AK/SK。
方式一:Helm中直接填寫AK/SK
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在集群列表頁面,單擊目的地組群名稱,然後在左側導覽列選擇頁面,單擊ack-onepilot組件右側的更新。
將
accessKey和accessKeySecret替換為當前帳號的AccessKey,然後單擊確定。說明擷取AccessKey的操作,請參見建立AccessKey。

重啟應用Deployment。
方式二:通過K8s Secret引入AK/SK
登入Container Service管理主控台,在左側導覽列選擇集群列表。
在集群列表頁面,單擊目的地組群名稱,然後在左側導覽列選擇。
選擇ack-onepilot命名空間,然後建立Secret,添加AK/SK資訊。
說明擷取AccessKey的操作,請參見建立AccessKey。

在左側導覽列選擇,單擊ack-onepilot組件(一般在ack-onepilot命名空間下,名稱為ack-onepilot-ack-onepilot)。
在ack-onepilot-ack-onepilot頁面右上方單擊編輯,然後在環境變數地區添加
ONE_PILOT_ACCESSKEY和ONE_PILOT_ACCESSKEY_SECRET,通過保密字典引用的方式替換為Secret中儲存的值,單擊確定。
ASK/ECI叢集
如果需監控ACK Serverless叢集或對接了ECI的叢集應用,請在雲資源訪問授權頁面完成授權,然後重啟ack-onepilot組件下的所有Pod。
步驟二:安裝 ARMS 探針接入助手(ack-onepilot)
登入Container Service管理主控台,在叢集列表頁面單擊目的地組群名稱。
在左側導覽列單擊组件管理,然後通過關鍵字搜尋ack-onepilot。
重要請確保ack-onepilot的版本在3.2.0或以上。
在ack-onepilot卡片上單擊安裝。
說明ack-onepilot組件預設支援1000個pod規模,叢集pod每超過1000個,ack-onepilot資源對應的CPU請增加0.5核、記憶體請增加512 MB。
如果在ACS叢集中安裝ack-onepilot,請在安裝卡片的最下方配置accessKey與accessKeySecret,阿里雲帳號的AccessKey ID和AccessKey Secret。擷取方法,請參見建立AccessKey。請確認對應的阿里雲帳號已包含AliyunARMSFullAccess和AliyunSTSAssumeRoleAccess許可權。
在彈出的頁面中可以配置相關的參數,建議使用預設值,單擊確認。
說明安裝完成後,您可以在組件管理頁面升級、配置或卸載ack-onepilot組件。
步驟三:編譯 Golang 應用鏡像
(可選)若專案在編譯時間包含vendor目錄,請在
go build後添加-mod=vendor。使用
wget命令下載編譯工具instgo,請根據編譯環境和編譯機器所在地區,選擇對應的下載地址。需要注意,instgo 在編譯時間會觸發自動更新,請將 instgo 儲存在編譯使用者具有修改許可權的目錄下。
說明Instgo 是 ARMS 提供的 Golang 應用編譯工具,使用 instgo 編譯您的 Golang 專案後,ARMS 即可開始監控您的 Golang 應用。
各地區下載的編譯工具是相同的,如果您的公網環境可以訪問OSS地址,可以直接使用對應作業系統和架構的杭州公網地址擷取編譯工具。
為編譯工具賦予可執行許可權。
Linux/Mac
# 賦予可執行許可權 chmod +x instgoWindows
Windows中無需賦予可執行許可權。
(可選)配置Uid作為編譯參數。
重要如果您跳過該步,instgo會預設為您安裝最新版本ARMS探針。
使用set命令配置uid或者licensekey作為編譯參數。
instgo set --uid={YourAliyunUid} //需要使用instgo 1.4.5及以上版本,uid為阿里雲主帳號uid將instgo作為首碼添加到您原有的編譯命令前並執行編譯。
instgo go build {arg1} {arg2} {arg3}如果您使用go install編譯專案,也可以直接將instgo作為首碼添加到您原有的編譯命令前並執行編譯。
使用上一步編譯的二進位檔案構建鏡像。
步驟四:為 Go 應用開啟 ARMS 應用監控
建立一個無狀態(Deployment)應用並開啟ARMS應用監控的完整YAML樣本模板如下:
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在集群列表頁面左側頂部,選擇目的地組群所在的資源群組和地區,單擊目的地組群名稱,然後在左側導覽列,單擊工作負載,然後選擇无状态、有狀態或守護進程集。
在目標應用右側選擇。
如需建立一個新應用,單擊使用YAML建立資源。
在YAML檔案中將以下
labels添加到spec.template.metadata層級下。labels: aliyun.com/app-language: golang # Go應用必填,標明此應用是Go應用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "<YOUR-DEPLOYMENT-NAME>" #請將<YOUR-DEPLOYMENT-NAME>替換為您的應用程式名稱。
單擊更新。
執行結果
約一分鐘後,若Golang應用出現在ARMS控制台的頁面中且有資料上報,則說明接入成功。

> YAML 編輯