Elastic Beanstalk 增強健康報告和監測 - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Elastic Beanstalk 增強健康報告和監測

本節說明 Elastic Beanstalk 增強 Health 功能的功能。

增強型健全狀況報告是您可以在環境中啟用的一項功能,以 AWS Elastic Beanstalk 便收集有關環境中資源的其他資訊。Elastic Beanstalk 會分析所收集到的資訊,以提供更全面的整體環境運作狀態,並協助辨識可能會導致應用程式無法運作的問題。

除了可變更運作狀態顏色的運作方式,增強型運作狀態更增加狀態描述項,當環境為黃色或紅色時,可提供所觀察之問題嚴重性的指標。若系統提供目前狀態的更多資訊,您可選擇 Causes (成因) 按鈕,於運作狀態頁面檢視詳細的運作狀態資訊。

為了提供有關在您環境中執行之 Amazon EC2 執行個體的詳細健康狀態資訊,Elastic Beanstalk 會在 Amazon 機器映像 (AMI) 中為支援增強健康狀態的每個平台版本包含一個健康狀態代理程式。運作狀態代理程式會監控 Web 伺服器日誌和系統指標,並將其轉送至 Elastic Beanstalk 服務。Elastic Beanstalk 會分析 Elastic Load Balancing 和 Amazon EC2 Auto Scaling 的這些指標和資料,以提供環境健全狀況的整體概況。

除了能夠收集並呈現您環境資源的相關資訊,Elastic Beanstalk 亦可針對環境中的資源監控其多種錯誤條件,給予通知協助您避免故障並解決組態問題。影響環境運作狀態的因素包括應用程式每次處理請求的結果、執行個體作業系統的指標,以及最近的部署狀態。

您可以使用 Elastic Beanstalk 主控台的環境概觀頁面或彈性 Beanstalk 命令介面 (EB) 中的 eb 健全狀況命令,即時檢視健全狀況狀態。CLI若要記錄和追蹤一段時間內的環境和執行個體健康狀態,您可以將環境設定為將 Elastic Beanstalk 收集的資訊發佈到 Amazon,以增強運作狀態報告 CloudWatch 作為自訂指標。 CloudWatch 自訂指標的用適用於所有指標EnvironmentHealth,而不是免費的。

Windows 平台備註

當您在 Windows Server 環境上啟用增強型健全狀況報告時,請勿變更IIS記錄組態。若要增強健全狀況監視才能正確運作,IIS記錄必須設定為 W3C 格式且僅限ETW事件,或同時設定記錄檔和ETW事件記錄檔事件目的地。

此外,請不要停用或停止任何您環境執行個體上的 Elastic Beanstalk 運作狀態代理程式 Windows 服務。若要收集和報告執行個體的增強式運作狀態資訊,此服務必須處於啟用及執行中的狀態。

您第一次建立環境時,Elastic Beanstalk 會提示您建立必要的角色,並預設啟用增強的健全狀況報告。請繼續閱讀以了解增強型運作狀態報告的運作方式詳細資訊,或參閱 啟用 Elastic Beanstalk 增強型運作狀態報告 以立即開始使用。

Elastic Beanstalk 運作狀態代理程式

Elastic Beanstalk 健康狀態代理程式是在環境中的每個 Amazon 執行個EC2體上執行的守護程序 (或 Windows 環境中的服務)、監控作業系統和應用程式層級運作狀態指標,並向 Elastic Beanstalk 報告問題。自每個平台的版本 2.0 起,所有平台版本均隨附運作狀態代理程式。

健康狀態代理程式會報告與 Amazon EC2 Auto Scaling 和 Elastic Load Balancing CloudWatch 所發佈的指標類似,做為基本運作狀態報告的一部分,包括CPU負載、程式HTTP碼和延遲。然而,運作狀態代理程式直接向 Elastic Beanstalk 報告的精細度和頻率,高於基礎型運作狀態報告。

基礎型運作狀態每 5 分鐘會發佈一次這些指標,並可於環境管理主控台以圖表監控。透過增強型運作狀態,Elastic Beanstalk 運作狀態代理程式每 10 秒會向 Elastic Beanstalk 報告指標。Elastic Beanstalk 會使用運作狀態代理程式提供的指標,判斷環境中各個執行個體的運作狀態,同時結合其他因素,判定環境的整體運作狀態。

您可以在 Elastic Beanstalk 主控台的環境概觀頁面中即時檢視環境的整體健康狀態,而 Elastic Beanstalk 每 60 秒會發佈一次。 CloudWatch 您可以使用 EB CLI 中的eb health命令即時檢視健全狀況代理程式報告的詳細指標。

如需額外付費,您可以選擇 CloudWatch 每 60 秒發佈一次個別執行個體和環境層級指標。發佈至的度量 CloudWatch 可用於在環境管理主控台中建立監視圖形

如果您選擇將增強型健康指標發佈到,增強型健全狀況報告才會產生費用。 CloudWatch當您使用增強型運作狀態時,即使您選擇不要發佈增強型運作狀態指標,仍可免費發佈基礎型運作狀態指標。

如需運作狀態代理程式報告指標的詳細資訊,請參閱 執行個體指標。如需將增強健康指標發佈至的詳細資訊 CloudWatch,請參閱發佈環境的 Amazon CloudWatch 自訂指標

判斷執行個體和環境運作狀態的因素

除了基本運作狀態報告系統檢查之外 (包含 Elastic Load Balancing 運作狀態檢查資源監控),Elastic Beanstalk 增強型運作狀態報告還會收集您環境中執行個體狀態的其他資料。這包含作業系統指標、伺服器日誌及正在進行的環境操作狀態 (例如部署和更新)。Elastic Beanstalk 運作狀態報告服務會結合所有可用來源的資訊,並加以分析以判斷環境的整體運作狀態。

操作和命令

當您在環境上執行操作時 (例如部署新的應用程式版本),Elastic Beanstalk 會進行幾項影響您環境運作狀態的變更。

例如,當您將應用程式的新版本部署到執行多個執行個體的環境時,當您使用 EB CLI 監視環境的健全狀況時,您可能會看到類似下列的訊息。

id status cause Overall Info Command is executing on 3 out of 5 instances i-bb65c145 Pending 91 % of CPU is in use. 24 % in I/O wait Performing application deployment (running for 31 seconds) i-ba65c144 Pending Performing initialization (running for 12 seconds) i-f6a2d525 Ok Application deployment completed 23 seconds ago and took 26 seconds i-e8a2d53b Pending 94 % of CPU is in use. 52 % in I/O wait Performing application deployment (running for 33 seconds) i-e81cca40 Ok

在此範例中,環境整體狀態為 Ok,而成因是 Command is executing on 3 out of 5 instances (5 個執行個體中,命令正於其中 3 個上執行)。環境的三個執行個體狀態為 Pending (待定),表示操作正在進行。

操作完成後,Elastic Beanstalk 會報告操作的其他資訊。例如,Elastic Beanstalk 會顯示下列有關執行個體已更新應用程式版本的資訊:

i-f6a2d525 Ok Application deployment completed 23 seconds ago and took 26 seconds

執行個體運作狀態資訊亦包含環境中每個執行個體最近部署的詳細資訊。各個執行個體都會報告部署 ID 和狀態。部署 ID 為整數,每次部署新的應用程式版本或變更執行個體上組態選項的設定 (如環境變數) 時,此整數會加一。滾動部署失敗後,您可使用部署資訊來辨識執行錯誤應用程式版本的執行個體。

在原因欄中,Elastic Beanstalk 包含的參考訊息包括成功操作及多次運作狀態檢查的其他正常運作狀態資訊,但這些項目無法永久保存。環境運作狀態不良的成因會加以保存,直到環境回傳良好運作狀態。

命令逾時

Elastic Beanstalk 在操作開始時會套用命令逾時,讓執行個體轉換為良好運作狀態。您可於環境更新及部署組態 (aws:elasticbeanstalk:command 命名空間中) 設定此命令逾時,預設為 10 分鐘。

在滾動更新期間,Elastic Beanstalk 會在操作的各個批次套用不同的逾時。您可於環境的滾動更新組態 (aws:autoscaling:updatepolicy:rollingupdate 命名空間中) 設定此逾時。若批次中的所有執行個體在滾動更新逾時內都維持良好運作狀態,操作會繼續進行下一批次。否則,操作會失敗。

注意

若您的應用程式並未通過運作狀態檢查 (即未處於良好 (OK) 狀態),但以另一層級而言仍屬穩定,您可以設定 HealthCheckSuccessThreshold 中的 aws:elasticbeanstalk:command namespace 選項,來變更 Elastic Beanstalk 將執行個體視為運作狀態良好的層級。

欲讓 Web 伺服器環境視為良好運作狀態,環境或批次中每個執行個體都必須在 2 分鐘內連續通過 12 個運作狀態檢查。針對工作者層環境,每個執行個體都必須通過 18 項運作狀態檢查。在命令逾時前,Elastic Beanstalk 不會在運作狀態檢查失敗時降低環境的運作狀態。若環境中的執行個體在命令逾時內恢復良好運作狀態,操作即為成功。

HTTP請求

環境未進行操作時,執行個體和環境運作狀態的主要資訊來源為各個執行個體的 Web 伺服器日誌。為了判斷執行個體和環境整體的運作狀態,Elastic Beanstalk 會考量請求數目、每次請求結果,以及每次請求的解決速度。

在基於 Linux 的平台上,Elastic Beanstalk 讀取和解析 Web 服務器日誌以獲取有關請求的信息。HTTP在 Windows 服務器平台上,Elastic Beanstalk 直接從IIS網絡服務器接收此信息。

您的環境可能沒有作用中的 web 伺服器。例如,多容器 Docker 平台便不包含 web 伺服器。其他平台則會包含 web 伺服器,但您的應用程式可能會停用它。在這些情況下,您的環境便需要額外的組態,才能以其轉送資訊至 Elastic Beanstalk 服務時所需要的格式,提供 Elastic Beanstalk 運作狀態代理程式日誌。如需詳細資訊,請參閱「增強型運作狀態日誌格式」。

作業系統指標

Elastic Beanstalk 會監控運作狀態代理程式報告的作業系統指標,以辨識系統資源始終不足的執行個體。

如需運作狀態代理程式報告指標的詳細資訊,請參閱 執行個體指標

運作狀態檢查規則自訂

Elastic Beanstalk 增強型運作狀態報告倚賴一組規則,以確定您環境的運作狀態。這些的部分規則可能不適用於您的特定應用程式。一個常見的情況是通過設計返回頻繁的 HTTP 4xx 錯誤的應用程序。Elastic Beanstalk 使用其中一個預設規則,獲得出現差錯的結論,然後將您環境的運作狀態從正常變更為警告、降級或嚴重,視錯誤率而定。為了正確處理這種情況,Elastic Beanstalk 允許您配置此規則並忽略應用程序 HTTP 4xx 錯誤。如需詳細資訊,請參閱 設定環境的增強型健康狀況規則

增強型運作狀態角色

增強型運作狀態報告需要兩個角色:Elastic Beanstalk 的服務角色和環境的執行個體描述檔。服務角色允許 Elastic Beanstalk 代表您與其他 AWS 服務互動,以收集有關您環境中資源的資訊。執行個體描述檔可讓您環境中的執行個體將日誌檔案寫入 Amazon S3,並將增強的運作狀態資訊傳送至 Elastic Beanstalk 服務。

當您使用彈性 Beanstalk 主控台或 EB 建立 Elastic Beanstalk 環境時,Elastic Beanstalk 會建立預設服務角色CLI,並將必要的受管政策附加至您環境的預設執行個體設定檔。

如果您使用API、或 AWS CLI 來建立環境SDK,則必須事先建立這些角色,並在建立環境期間指定這些角色,以使用增強的健全狀況。如需為您環境建立適當角色的說明,請參閱Elastic Beanstalk 服務角色、執行個體設定檔和使用者原則

建議您針對執行個體描述檔和服務角色使用受管理政策。受管理策略是 Elastic Beanstalk 維護的 AWS Identity and Access Management (IAM)策略。使用受管理政策可確保您的環境擁有正常運作所需的所有許可。

對於執行個體描述檔,您可以分別針對 Web 伺服器層工作者階層環境使用 AWSElasticBeanstalkWebTierAWSElasticBeanstalkWorkerTier 受管理的策略。如需這兩個受管理執行個體描述檔政策的詳細資訊,請參閱 管理 Elastic Beanstalk 執行個體描述檔

增強的運作狀態授權

Elastic Beanstalk 執行個體描述檔受管的政策包含 elasticbeanstalk:PutInstanceStatistics 動作的許可。此動作不是 Elastic Beanstalk API 的一部分。這是環境執行個API體在內部用來將增強健康資訊傳達給 Elastic Beanstalk 服務的不同之處。您不要API直接呼叫這個。

建立新環境時,授權 elasticbeanstalk:PutInstanceStatistics 動作預設為啟用。若要增加環境的安全性,並協助防止運作狀態資料假冒您的身分進行詐騙,建議您讓此動作的授權保持啟用狀態。如果您為執行個體描述檔使用受管政策,這項功能可供您新環境使用,無需任何進一步設定。如果您使用自訂執行個體描述檔而非受管政策,您的環境可能顯示無資料運作狀態。發生這種情況是因為執行個體未經授權,無法將增強型運作狀態資料傳送至服務。

若要授權此動作,請在您的執行個體描述檔中包含下列陳述式。

{ "Sid": "ElasticBeanstalkHealthAccess", "Action": [ "elasticbeanstalk:PutInstanceStatistics" ], "Effect": "Allow", "Resource": [ "arn:aws:elasticbeanstalk:*:*:application/*", "arn:aws:elasticbeanstalk:*:*:environment/*" ] }

如果您目前不想使用增強型運作狀態授權,請將 aws:elasticbeanstalk:healthreporting:system 命名空間的 EnhancedHealthAuthEnabled 選項設定為 false,加以停用。如果停用此選項,就不需要先前說明的許可。您可以為您應用程式和環境的最低權限存取,從執行個體描述檔中移除這些許可。

注意

之前 EnhancedHealthAuthEnabled 預設設定為 false,導致 elasticbeanstalk:PutInstanceStatistics 動作的授權也預設為停用。若要為現有環境啟用此動作,請將 aws:elasticbeanstalk:healthreporting:system 命名空間的 EnhancedHealthAuthEnabled 選項設定為 true。您可以使用組態檔案中的選項設定來設定此選項。

增強型運作狀態事件

環境轉換狀態時,增強型運作狀態系統會產生事件。以下範例顯示了在資訊 (Info)良好 (OK)嚴重 (Severe) 狀態間轉換的環境事件輸出。

Elastic Beanstalk 主控台的 Elastic Beanstalk 環境概觀頁面,其中顯示增強的運作狀態最近事件

當轉換成較嚴重的狀態時,增強式運作狀態事件會包含指出轉換原因的訊息。

並非所有執行個體層級的變更都會使 Elastic Beanstalk 發出事件。為了避免錯誤的警示,Elastic Beanstalk 只會在問題持續出現在多次檢查中時產生運作狀態相關的事件。

您可以在 Elastic Beanstalk 主控台和 EB 的環境概觀頁面取得即時環境層級健康資訊,包括狀態、顏色和原因。CLI透過將 EB 附加CLI至您的環境並執行命eb health令,您也可以檢視環境中每個執行個體的即時狀態。

更新、部署和擴展期間的增強式運作狀態報告行為

啟用增強型運作狀態報告會影響您的環境在組態更新和部署期間的行為。Elastic Beanstalk 在直到所有執行個體皆一致通過運作狀態檢查之前,都不會完成更新批次。此外,由於增強型健全狀況報告會套用較高的健康狀態標準並監控更多因素,因此通過基本健康狀態報告健ELB康狀態檢查的執行個體不一定會與增強型健康狀態報告 如需運作狀態檢查如何影響更新程序的詳細資訊,請參閱滾動組態更新滾動部署的主題。

增強的健全狀況報告也可以強調URL針對 Elastic Load Balancing 設定適當健康狀態檢查的必要性。當您的環境擴展以滿足需求時,新執行個體會在通過足夠的運作ELB狀態檢查後立即開始接受請求。如果未設定健康狀態檢查URL,則在新執行個體能夠接受TCP連線之後的 20 秒內。

在負載平衡器宣告環境運作狀態良好前,若您的應用程式尚未完成啟動以接收流量,將出現大量失敗的請求,而您環境的運作狀態檢查會開始失敗。執行運作狀態檢查URL,命中您的應用程式所提供的路徑可以防止此問題發生。ELB健康狀態檢查GET要求URL傳回 200 狀態碼之前,健康狀態檢查才會通過。