監視 AWS Lambda

若要在 Instana 使用者介面中檢視與 AWS Lambda 相關的度量值,您需要安裝並配置 Instana AWS 代理程式,它是在特殊化 AWS 模式下執行的 Instana 主機代理程式。

若要在 Instana 使用者介面中檢視 Lambda 追蹤,您需要將 Instana Lambda 追蹤器新增至 AWS Lambda 函數

監視 AWS Lambda 需要在 AWS 環境中安裝 Instana AWS 代理程式,並將 Instana Lambda 追蹤器與 AWS Lambda 函數整合。

Instana AWS 代理程式在每個 AWS 帳戶和區域安裝一次,它會監視該帳戶和區域中的所有 AWS Lambda 函數,以及其他 AWS 服務。 如需相關資訊,請參閱 使用 Amazon Web Services (AWS) 代理程式監視 Amazon Web Services (AWS)。 此感應器會收集 AWS Lambda 函數的基礎架構度量。 您也需要將 Instana Lambda 追蹤器新增至 AWS Lambda 函數,以從函數收集追蹤資料。 視 Lambda 函數執行時期而定,追蹤程式會安裝成 AWS Lambda 函數中的一層,或手動檢測。

支援的執行時期

AWS 代理程式

不論執行時期為何,用於 Lambda 監視的 AWS 代理程式都會收集所有 Lambda 函數的版本詳細資料和度量值。

AWS Lambda 原生追蹤

AWS Lambda 原生追蹤可用於下列執行時期:

  • 使用 Go 1.8 或更新版本的 Go 1.x
  • Java 8 (java8.al2) 和 Java 11 (java11)
  • Node.js 18.x、 16.x、 14.x、 12.x及 10.x
  • Python 3.9、 3.8及 3.7
  • Ruby 2.7
  • .NET 6 以及更新版本

配置 AWS Lambda 監視

若要使用 Instana 來監視 AWS Lambda 函數,請完成下列步驟:

  1. 配置 AWS 代理程式以進行 Lambda 監視
  2. 在 Lambda 函數中安裝 Instana Lambda 追蹤器
  3. 選用項目: 配置 Instana Lambda 追蹤程式的額外設定

配置 AWS 代理程式以進行 Lambda 監視

若要配置 AWS 代理程式,請完成下列步驟:

  1. 設定 AWS Lambda 監視的 AWS 代理程式。
  2. 必要的話, 使用 Proxy 配置

如需相關資訊,請參閱 配置 AWS 代理程式以進行 Lambda 監視

在 AWS Lambda 函數中安裝 Instana Lambda 追蹤程式

若要擷取追蹤資料 (要求層次資料) 並傳送至 Instana 後端,您需要在 AWS Lambda 函數中安裝執行時期特定的 Instana Lambda 追蹤程式。 如果要在 AWS Lambda 函數中安裝 Instana Lambda 追蹤程式,請參閱下列執行時期的安裝指示:

選用項目: 配置 Instana Lambda 追蹤器的額外設定

您可以配置原生 Lambda 追蹤中一般支援的選用環境變數,如下表所概述:

附註: 除非您在內部部署中使用 Instana ,且無法使用具有已知主要憑證管理中心 (CA) 的憑證來操作 Instana 後端,否則請不要將 INSTANA_DISABLE_CA_CHECK 變數設為 true 。 如果您啟用此變數,則 Lambda 很容易遭到此連線的「中間人 (MITM)」攻擊。

環境變數 說明
INSTANA_TIMEOUT 設定向 Instana 後端報告資料之 HTTP 要求的逾時。
INSTANA_ENDPOINT_PROXY 將此變數設為 http://my-proxy.tldhttp://user:password@my-proxy.tld ,以透過 HTTP 或 HTTP Proxy (在 Node.js中受支援,而不是在 Python中支援) 將資料報告遞送至 Instana 後端。
INSTANA_EXTRA_HTTP_HEADERS 將此變數設為以分號區隔的 HTTP 標頭名稱清單 (適用於具有 Lambda Proxy 整合或應用程式負載平衡器的觸發類型 API 閘道) ,以擷取 HTTP 標頭。
INSTANA_SERVICE_NAME 定義自訂服務名稱。
INSTANA_LOG_LEVEL 設定 Instana 套件的記載層次。 可能的值為 debuginfowarnerror (預設值: info)。
INSTANA_DEBUG 將此變數設為任何值,以將記載層次設為 debug
INSTANA_DISABLE_CA_CHECK 將此變數設為 true ,以在連接至 Instana 後端時,針對 Lambda 執行時期所包含的憑證管理中心 (CA) 清單停用驗證伺服器憑證。 (適用於 @instana/aws-lambda@1.93.0/層版本 25 以及更新版本)

檢視 Lambda 函數配置、度量、版本和觸發程式

您可以透過 Instana 來檢視 Lambda 函數的所有相關資訊。

若要檢視 Lambda 函數的 HTTP 屬性、觸發程式及度量值和版本詳細資料,請完成下列步驟:

  1. 在 Instana 使用者介面的資訊看板中,選取 基礎架構
  2. 按一下特定的受監視 Lambda 函數。

您可以看到主機儀表板,其中包含所有收集的度量值和 Lambda 版本。 如需相關資訊,請參閱 Lambda 配置、度量、版本和觸發程式

啟用冷啟動或逾時的警示

您可以針對 Lambda 函數上的過多冷啟動或逾時配置 智慧型警示 。 若要配置「智慧型警示」,請跳至包含您要警示之 Lambda 函數的 應用程式視景 文件,並新增「智慧型警示」:

  1. 從 Instana 使用者介面中的導覽畫面,按一下 應用程式
  2. 選取應用程式。
  3. 按一下 新增智慧型警示
  4. 按一下 切換至進階模式
  5. 範圍 區段的 選取服務/端點 欄位中,新增下列其中一個過濾器:
    • Cloud Function As A Service > Cold Start is true
    • Cloud Function As A Service > Suspected Timeout is true
  6. 在「 觸發程式 」區段中的 選取的藍圖 欄位中,選取 傳輸量
  7. 臨界值 區段中,選取適合您使用案例的 臨界值 值。 使用 1 來包括每個出現項目或更高值,以在特定冷啟動或逾時次數上違反規則。
  8. 使用 時間臨界值 設定來細部調整警示行為。

圖層

使用 Lambda 延伸

NodeJS 第 71 版以及更新版本包含 Lambda 延伸

此延伸可以透過將將資料傳送至 Instana 後端的處理程序與其他 Lambda 函數處理程序分開,來改善受監視 Lambda 函數的效能。 若要利用這些效能改進,請將 Instana 層升級至包含延伸的版本。

在內部,延伸會使用語言程式庫來緩衝及代理對 Instana 後端的所有要求。 在正常作業下,延伸不會延伸 Lambda 函數的生命期限。 生命期限僅在下列實例期間延長:

  • 已清除關閉要求,以確保保留在後端緩衝區中的所有資料都已清除。
  • Lambda 函數失敗並停止傳送跨距的狀況。 等待 3 秒以查看根跨距是否已傳送,然後再等待下一次呼叫。

若要停用延伸,請在函數的環境中將 INSTANA_DISABLE_LAMBDA_EXTENSION 變數設為 TRUE

Lambda 監視的效能和執行時期考量

構件大小

新增 Instana Lambda 監視會增加已部署 Lambda 函數的大小。 額外的大小取決於語言特定的層或程式庫。 若要取得特定 Instana Lambda 層版本的大小,請使用下列 Shell 指令:

   aws lambda get-layer-version --layer-name <layer_arn> --version-number <target_version> | jq .Content.Location | xargs -L 1 curl --output layer.zip
unzip -l layer.zip

效能影響

當您使用 Instana 監視 Lambda 函數時,效能影響主要是由 Lambda 函數與 Instana 後端通訊所花費的時間所驅動。 每次執行結束時, Instana 提供的程式庫會對 Instana AWS Lambda 延伸或您的 Instana 租戶單元發出封鎖呼叫,以報告執行結果。

對於使用 Lambda 延伸的函數,此處理程序會在背景中進行,並容許受監視函數在受監視程式碼備妥時立即傳回其回應。

對於未使用 Lambda 延伸的函數,只有在資料傳送至租戶單元時,此程序才容許報告執行的結果。