全部產品
Search
文件中心

Application Real-Time Monitoring Service:Function ComputeFC環境自動安裝探針

更新時間:Oct 25, 2024

Function Compute內建的Java 8運行時支援接入ARMS(Application Real-Time Monitoring Service)應用監控。自訂運行時中的Java 8、Java 11和Java 17也支援接入ARMS應用監控。本文介紹如何使用自訂運行時接入ARMS應用監控。

背景資訊

Function Compute無縫對接ARMS應用監控平台後,您可以通過ARMS應用監控平台對目標函數進行監控追蹤,擷取相關資訊,例如執行個體層級的可觀測性、鏈路追蹤資訊、Java虛擬機器指標、代碼層級的剖析(Profiling)資訊和應用安全資訊等。

前提條件

  • 已建立自訂運行時函數,具體運行環境為Java 8、Java 11或Java 17。具體操作,請參見建立函數

  • 檢查您的JDK版本。具體要求,請參見支援的JDK版本

  • 進程最大堆記憶體需大於256 MB。

擷取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

範例程式碼解析如下。

  1. 設定ARMS應用程式名稱。預設為FC:{FunctionName}

  2. 添加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在調用結束至凍結前的等待時間長度會產生費用,收費策略與執行個體調用階段的計費邏輯相同。具體資訊,請參見產品計費

操作步驟

  1. 登入Function Compute控制台,在左側導覽列,單擊函數

  2. 在頂部功能表列,選擇地區,然後在函數頁面,單擊目標函數。

  3. 在函數配置頁面,選擇配置頁簽。

  4. 選擇左側頁簽,單擊編輯,然後在編輯函數層面板選擇+添加層 > 添加官方公用層,添加與所選Java語言相容的ArmsAgent層。

  5. 在左側導覽列,選擇環境變數頁簽,單擊編輯,添加環境變數FC_EXTENSION_ARMS=trueFC_EXTENSIONS_ARMS_LICENSE_KEY=xxxx

    具體操作,請參見設定環境變數

  6. 在函數字碼頁面的WebIDE中,建立Bootstrap檔案,然後單擊部署代碼

    成功更新配置並部署代碼後,您的函數將被添加到ARMS應用監控進行高效能管理。同時,ARMS監控將對您的服務進行計費。更多資訊,請參見計費概述

重要
  • 當您的函數成功接入ARMS監控平台後,如果您需要查看對應監控資訊,請確保ARMS監控平台和函數所屬地區相同。

  • 為了函數能夠正常執行,請確保您的函數配置中,記憶體規格大於512 MB(ARMS大概佔用300 MB記憶體)。

結果驗證

當您成功將函數接入ARMS應用監控平台後,您可以在ARMS控制台查看接入的函數。

您也可以登入ARMS控制台,在左側導覽列,選擇應用監控 > 應用列表,然後單擊目標應用程式名稱,查看詳細監控資訊。更多資訊,請參見應用總覽

說明

目標應用的名稱為Bootstrap指令碼中的appName,預設值為FC:{FunctionName}