1. 程式人生 > 其它 >使用 Amazon DevOps Guru for Serverless 自動檢測 Lambda 函式中的執行問題

使用 Amazon DevOps Guru for Serverless 自動檢測 Lambda 函式中的執行問題

前言

我們於 2022年5月 宣佈推出 Amazon DevOps Guru for Serverless ,這是面向 Amazon DevOps Guru https://aws.amazon.com/devops-guru/的全新功能。通過此功能,開發人員能夠提高無伺服器應用程式的執行效能和可用性。該產品連結可點選:https://aws.amazon.com/devops-guru/features/devops-guru-for-serverless

亞馬遜雲科技於2014年推出Amazon Lambda https://aws.amazon.com/blogs/aws/run-code-cloud/,開創了無伺服器計算領域的先河。如今,成千上萬的客戶正在使用 Amazon Lambda,Amaon Lambda 允許您為函式配置許多引數,例如記憶體分配、預置併發和超時。對於許多客戶來說,在所有這些引數之間找到適當的平衡以優化其函式的效能和可用性是一項艱鉅的任務。該產品連結可點選

https://aws.amazon.com/cn/lambda/

2020 年 12 月,我們宣佈推出 Amazon DevOps Guru,這是一項完全託管式 AIOps(面向 IT 運營的人工智慧)服務,可自動檢測應用程式問題並向客戶發出警報,幫助他們提高應用程式的可用性 https://aws.amazon.com/es/blogs/aws/amazon-devops-guru-machine-learning-powered-service-identifies-application-errors-and-fixes/。今天,我們宣佈推出 Amazon DevOps Guru for Serverless,這是 Amazon DevOps Guru 的一項新功能,可幫助使用 Amazon Lambda 的開發人員在函式級別自動檢測異常行為,並使用基於機器學習的建議來修復檢測到的任何問題

Amazon DevOps Guru for Serverless 使用機器學習來自動識別和分析Amazon Lambda 函式的各種效能和可用性相關問題,例如低預置併發或記憶體利用不足。要使用此功能,您無需成為無伺服器或 ML 專家。

此功能的被動洞察可幫助您有效地解決影響無伺服器應用程式的持續問題,並提供可行的建議,幫助您在儘可能短的時間內找出根本原因並解決問題。

Amazon DevOps Guru for Serverless 還提供主動洞察,幫助您在無伺服器應用程式效能受到影響之前就發現更廣泛的執行異常情況。還為您提供有關如何查詢根本原因並解決問題的建議。

檢測到問題時,Amazon DevOps Guru for Serverless 會在 Amazon DevOps Guru 控制檯中顯示發現結果,同時使用 Amazon EventBridge 

https://aws.amazon.com/eventbridge/或 Amazon Simple Notification Service(Amazon SNS)https://aws.amazon.com/sns/ 傳送通知。這可讓開發人員自動管理髮現的問題並即時採取行動。

Amazon DevOps Guru for Serverless 主動洞察

Amazon DevOps Guru for Serverless 使開發人員能夠在影響客戶的事件發生之前主動檢測應用程式問題。例如,如果某個 Amazon Lambda 函式的預置併發設定得太低,而該應用程式的流量正在增長,Amazon DevOps Guru 將檢測不斷增長的流量和應用程式延遲的降低,並生成顯示問題的主動洞察。

機器學習演算法從執行資料和應用程式指標中獲得這些洞察。洞察提供了高階資訊、嚴重性、狀態以及有關如何解決此問題的建議。

如今,Amazon DevOps Guru for Serverless 為 Amazon Lambda 和 Amazon DynamoDB 提供主動洞察。以下是當前可用的執行問題和主動洞察:

  • Amazon Lambda 併發執行數達到賬戶限制 – 當併發執行數連續達到賬戶限制時觸發。

  • 超出 Amazon Lambda 預置併發函式限制 – 當預置併發的預留量在一段時間內不足時觸發。

  • 與 SQS 的可見性超時相比,Amazon Lambda 超時較高 – 當 Amazon Lambda 函式的持續時間超過事件源 Amazon Simple Queue Service(Amazon SQS)的可見性超時時觸發。

  • Amazon Lambda 預置併發使用率低於預期 – 當預置併發的利用率過低時觸發。

  • Amazon DynamoDB 消耗的賬戶讀/寫容量達到賬戶限制 – 當賬戶在一段時間內消耗的容量接近賬戶級別限制時觸發。

  • Amazon DynamoDB 表讀/寫消耗的容量達到表限制 – 當表中的寫或讀在一段時間內達到表的 ProvisionedWriteCapacityUnits 或 ProvisionedReadCapacityUnits 限制時觸發。

  • Amazon DynamoDB 表消耗的容量達到 AutoScaling Max 引數限制 – 當表消耗的容量在一段時間內達到 AutoScaling Max 引數限制時觸發。

  • Amazon DynamoDB 讀/寫消耗量低於預期 – 當 ProvisionedWriteCapacityUnits 或 ProvisionedReadCapacityUnits 的值與一段時間內的消耗量相差甚遠時觸發。

Amazon DevOps Guru for Serverless 入門

要開始使用,請導航到 Amazon DevOps Guru 控制檯,為基於Amazon Lambda 的應用程式、其他受支援的資源或整個賬戶啟用該服務。

在本演示中,建立一個預置併發為 1 的新Amazon Lambda 函式。您可以通過亞馬遜雲科技控制檯或以程式設計方式執行此操作。建立後,您可以在函式概覽頁面看到預置併發設定為 1。

向 Amazon Lambda 函式新增每分鐘觸發一次函式的 CloudWatch 事件。您可以通過 亞馬遜雲科技控制檯或以程式設計方式執行該操作。您可以按照本教程學習如何操作。再重複該過程五次。現在,該函式每分鐘將通過不同的事件觸發六次。

要觸發主動洞察,您需要對此 Amazon Lambda 函式進行六次併發呼叫。要做到這一點,您需要確保每次呼叫的持續時間足夠長。在本演示中,您可以讓函式休眠 30 秒。

'use strict';

exports.handler = async (event) => {

    console.log('Sleep for 30 seconds')
    await new Promise(r => setTimeout(r, 30000));
    console.log('finish sleeping')

    return;
};

左滑檢視更多

此配置將觸發此函式超出 Amazon Lambda 預置併發函式限制的主動洞察。問題開始後的三個小時或更短時間內,您應該會在控制檯中看到該洞察。

如何通過 Amazon DevOps Guru 控制檯檢視洞察幾個小時後,您可以訪問 Amazon DevOps Guru 控制檯,並且可以驗證主動洞察是否因超出預置併發而觸發。

選擇 Ongoing(持續)洞察以檢視更多詳細資訊。此時將開啟洞察頁面,其中顯示與此問題的洞察、指標、事件和建議的操作相關的資訊。

我們更詳細地看一下這個頁面。頁面頂部是洞察概覽,其中包含洞察的內容和問題嚴重性的描述。這是一個主動洞察,因此使用者體驗不會受到此問題的影響。您還可以瞭解問題是否持續存在以及何時開始。如果問題不再發生,您可以瞭解該洞察的結束日期。如果您選擇受影響應用程式的連結,則可以確認受此洞察影響的所有 Amazon Lambda 函式。

下一個資訊框包含與主動洞察相關的 CloudWatch 指標的相關資訊。此圖表顯示了 ProvisionedConcurrecySpilloverInvocations 指標,以及預置併發溢位的最近幾個小時內所有呼叫的摘要。

Relevant events(相關事件)是頁面上的下一個資訊框。這些是 Amazon CloudTrail 事件,Amazon DevOps Guru 將這些事件與 CloudWatch 指標和執行資料結合使用,以識別產生洞察的異常行為。

頁面的最後是 Recommendations(建議)資訊框,Amazon DevOps Guru 將在其中輸出所有生成的建議以幫助您解決問題。您可以使用這些建議來了解可以立即採取哪些步驟來解決問題。

在此主動洞察中,Amazon DevOps Guru 建議您調整 Amazon Lambda 函式的預置併發。此建議會根據函式過去的使用情況告訴您要將它設定為哪個值。您還可以找到 Amazon DevOps Guru 推薦這種洞察的理由。

定價和可用性

Amazon DevOps Guru for Serverless 免費提供給客戶。

Amazon DevOps Guru for Serverless 已在提供 Amazon DevOps Guru 的所有亞馬遜雲科技覆蓋區域推出:美國東部(俄亥俄)、美國東部(弗吉尼亞北部)、美國西部(俄勒岡)、亞太地區(新加坡)、亞太地區(悉尼)、亞太地區(東京)、歐洲(法蘭克福)、歐洲(愛爾蘭)和歐洲(斯德哥爾摩)。

詳細瞭解 Amazon DevOps Guru for Serverless https://aws.amazon.com/cn/devops-guru/features/devops-guru-for-serverless/ ,瞭解有關此次新發布的更多資訊。

本篇作者

Marcia Villalba

亞馬遜雲科技開發者佈道師

她從事專業設計和開發軟體已有15年之久,並在構建可擴充套件和高效能軟體的所有階段工作。她對在雲中構建應用程式和使用DevOps流程有深入的瞭解。