Function Compute內建的Java 8運行時支援接入ARMS(Application Real-Time Monitoring Service)應用監控。自訂運行時中的Java 8、Java 11和Java 17也支援接入ARMS應用監控。本文介紹如何使用自訂運行時接入ARMS應用監控。
背景資訊
Function Compute無縫對接ARMS應用監控平台後,您可以通過ARMS應用監控平台對目標函數進行監控追蹤,擷取相關資訊,例如執行個體層級的可觀測性、鏈路追蹤資訊、Java虛擬機器指標、代碼層級的剖析(Profiling)資訊和應用安全資訊等。
前提條件
擷取License Key
通過OpenAPI擷取LicenseKey,具體方法,參見DescribeTraceLicenseKey - 列出LicenseKey。
自訂運行時接入ARMS
ARMS應用監控是一種內部擴充。自訂運行時接入ARMS應用監控時,主要包括以下三部分。
使用公用層擷取ARMS Agent程式
Function Compute平台以公用層的形式,提供了支援Java 8、Java 11和Java 17三種Java版本的ARMS Agent。
Java版本 | 相容運行時 | 公用層ARN |
Java 11/Java 8 | 自訂運行時 | acs:fc:{region}:official:layers/ArmsAgent273x/versions/2 |
Java 17 | 自訂運行時 | acs:fc:{region}:official:layers/ArmsAgent273x_JDK17/versions/1 |
使用Bootstrap指令碼作為啟動命令
使用ARMS需要添加3個啟動參數,考慮到啟動命令比較複雜,建議通過指令碼來啟動。可以在函數字碼頁面使用WebIDE建立檔案bootstrap,並設定檔案許可權為可執行許可權(終端視窗執行命令chmod +x bootstrap
)。範例程式碼如下所示。
#!/bin/bash
set -eo pipefail
# 1. 設定ARMS應用程式名稱
appName="FC:Custom_Java_Arms_Demo"
if [ -n "${FC_FUNCTION_NAME}" ]; then
appName="FC:${FC_FUNCTION_NAME}"
fi
echo "appName: ${appName}"
params=" "
# 2. 添加ARMS參數
if [[ -n "${FC_EXTENSIONS_ARMS_LICENSE_KEY}" ]]; then
echo "FC_EXTENSIONS_ARMS_LICENSE_KEY: ${FC_EXTENSIONS_ARMS_LICENSE_KEY}"
params+="-Dfc.instanceId=$HOSTNAME@`hostname -i` "
# 使用公用層的ARMS程式路徑
params+="-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar "
params+="-Darms.licenseKey=${FC_EXTENSIONS_ARMS_LICENSE_KEY} "
params+="-Darms.appName=${appName} "
else
echo "The environment FC_EXTENSIONS_ARMS_LICENSE_KEY does not exist, please set the FC_EXTENSIONS_ARMS_LICENSE_KEY environment!"
exit 1
fi
# 3. 啟動應用程式
echo "params: ${params}"
exec java $params \
-Dserver.port=9000 \
-jar /code/target/demo-0.0.1-SNAPSHOT.jar
範例程式碼解析如下。
設定ARMS應用程式名稱。預設為
FC:{FunctionName}
。添加ARMS參數。
javaagent
:ARMS程式路徑。如果使用ARMS Agent的公用層,該路徑為/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar
。Darms.licenseKey
:License key資訊。本文樣本展示從環境變數中擷取License key。更多關於擷取License Key的資訊,請參見擷取License Key。Darms.appName
:ARMS應用程式名稱。按照實際情況填寫。
設定環境變數
設定環境變數
FC_EXTENSIONS_ARMS_LICENSE_KEY=xxxx
,值為License Key。擷取License Key資訊的具體步驟,請參見擷取License Key。設定環境變數
FC_EXTENSION_ARMS=true
。添加該環境變數後,在一次函數調用結束時,不會立刻凍結函數執行個體,會等待10s再凍結函數執行個體,以確保ARMS Agent擴充成功上報日誌。
重要Function Compute在調用結束至凍結前的等待時間長度會產生費用,收費策略與執行個體調用階段的計費邏輯相同。具體資訊,請參見產品計費。
操作步驟
登入Function Compute控制台,在左側導覽列,單擊函數。
在頂部功能表列,選擇地區,然後在函數頁面,單擊目標函數。
在函數配置頁面,選擇配置頁簽。
選擇左側層頁簽,單擊編輯,然後在編輯函數層面板選擇 ,添加與所選Java語言相容的ArmsAgent層。
在左側導覽列,選擇環境變數頁簽,單擊編輯,添加環境變數
FC_EXTENSION_ARMS=true
和FC_EXTENSIONS_ARMS_LICENSE_KEY=xxxx
。具體操作,請參見設定環境變數。
在函數字碼頁面的WebIDE中,建立Bootstrap檔案,然後單擊部署代碼。
具體操作,請參見使用Bootstrap指令碼作為啟動命令。
成功更新配置並部署代碼後,您的函數將被添加到ARMS應用監控進行高效能管理。同時,ARMS監控將對您的服務進行計費。更多資訊,請參見計費概述。
當您的函數成功接入ARMS監控平台後,如果您需要查看對應監控資訊,請確保ARMS監控平台和函數所屬地區相同。
為了函數能夠正常執行,請確保您的函數配置中,記憶體規格大於512 MB(ARMS大概佔用300 MB記憶體)。
結果驗證
當您成功將函數接入ARMS應用監控平台後,您可以在ARMS控制台查看接入的函數。